{"_id":"@1selfworld/adchain-sdk-core-react-native","_rev":"5-09c61b102d0541eb649d615825094d48","name":"@1selfworld/adchain-sdk-core-react-native","dist-tags":{"rc":"1.0.1-rc.2","latest":"1.0.2"},"versions":{"1.0.0":{"name":"@1selfworld/adchain-sdk-core-react-native","version":"1.0.0","keywords":["react-native","expo","adchain","ads","offerwall","ios","android"],"author":{"url":"https://1self.world","name":"1SelfWorld Labs","email":"contacts@1self.world"},"license":"MIT","_id":"@1selfworld/adchain-sdk-core-react-native@1.0.0","maintainers":[{"name":"fly33499","email":"fly33499@gmail.com"},{"name":"chocosprite","email":"chocosprite21@gmail.com"}],"homepage":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native#readme","bugs":{"url":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native/issues"},"dist":{"shasum":"a7446e09da0eb664b83d1eb810368c8208fce225","tarball":"https://registry.npmjs.org/@1selfworld/adchain-sdk-core-react-native/-/adchain-sdk-core-react-native-1.0.0.tgz","fileCount":29,"integrity":"sha512-Kmd4FfnUWuFdjMIGLIZ8zgPC+It7LEQ+MKVUQiuKwGEIJqC/yseVraSFDdScWnWmm0B2tbDdzhRBrL3N43mVZg==","signatures":[{"sig":"MEQCIG2yT1kkPRF1SEJZzoyQ8SlDMmIKX7FyfmvBK2LsCUhsAiBen7Es8z17hUQVCXQ52rS8aApTv/ymi1VpeanMiGjfsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145859},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","plugin":"app.plugin.js","gitHead":"fa6d8d70a5fe030e4cd2017aa532d52ae94bd673","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli lib","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"chocosprite","email":"chocosprite21@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/1selfworld-labs/adchain-sdk-core-react-native.git","type":"git"},"_npmVersion":"11.9.0","description":"AdChain SDK for React Native with Expo support","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"18.3.1","eslint":"^9.35.0","del-cli":"^6.0.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.12","react-native":"0.79.2","@eslint/compat":"^1.3.2","expo-constants":"^17.0.0","@eslint/eslintrc":"^3.3.1","@expo/config-plugins":"^9.0.0","@evilmartians/lefthook":"^1.12.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.13","@react-native/babel-preset":"0.81.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"peerDependenciesMeta":{"expo":{"optional":true},"expo-constants":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adchain-sdk-core-react-native_1.0.0_1780549593311_0.3750721031546973","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","version":"0.54.7","languages":"js"}},"1.0.1-rc.1":{"name":"@1selfworld/adchain-sdk-core-react-native","version":"1.0.1-rc.1","keywords":["react-native","expo","adchain","ads","offerwall","ios","android"],"author":{"url":"https://1self.world","name":"1SelfWorld Labs","email":"contacts@1self.world"},"license":"MIT","_id":"@1selfworld/adchain-sdk-core-react-native@1.0.1-rc.1","maintainers":[{"name":"fly33499","email":"fly33499@gmail.com"},{"name":"chocosprite","email":"chocosprite21@gmail.com"}],"homepage":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native#readme","bugs":{"url":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native/issues"},"dist":{"shasum":"4cb3a65c7c6572fd32b902cb6bb26893982076c8","tarball":"https://registry.npmjs.org/@1selfworld/adchain-sdk-core-react-native/-/adchain-sdk-core-react-native-1.0.1-rc.1.tgz","fileCount":29,"integrity":"sha512-rh10Ug/54FpCIe5+HCZg4lB5xm7RzoTr3MChVoBeymPqUr4vobBFk3STBiaOW1Lh4n7FWSj9uB9+WwtdDBx+fQ==","signatures":[{"sig":"MEQCIENz9J/v2K6yP1TDckoFhBAiPUBYQKAEyVamxbsxsJOEAiA0Q7/3hZtc/gMlh706o7ejwPa67P+9ag32u2XQw2VjQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":146165},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","plugin":"app.plugin.js","gitHead":"366fb374bb0bdf1d61dc2d3ae5a0b3e8b7d93de7","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli lib","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"chocosprite","email":"chocosprite21@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/1selfworld-labs/adchain-sdk-core-react-native.git","type":"git"},"_npmVersion":"11.9.0","description":"AdChain SDK for React Native with Expo support","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":"18.3.1","eslint":"^9.35.0","del-cli":"^6.0.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.12","react-native":"0.79.2","@eslint/compat":"^1.3.2","expo-constants":"^17.0.0","@eslint/eslintrc":"^3.3.1","@expo/config-plugins":"^9.0.0","@evilmartians/lefthook":"^1.12.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.13","@react-native/babel-preset":"0.81.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"peerDependenciesMeta":{"expo":{"optional":true},"expo-constants":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adchain-sdk-core-react-native_1.0.1-rc.1_1781832523593_0.7310286094021987","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","version":"0.54.7","languages":"js"}},"1.0.1-rc.2":{"name":"@1selfworld/adchain-sdk-core-react-native","version":"1.0.1-rc.2","keywords":["react-native","expo","adchain","ads","offerwall","ios","android"],"author":{"url":"https://1self.world","name":"1SelfWorld Labs","email":"contacts@1self.world"},"license":"MIT","_id":"@1selfworld/adchain-sdk-core-react-native@1.0.1-rc.2","maintainers":[{"name":"fly33499","email":"fly33499@gmail.com"},{"name":"chocosprite","email":"chocosprite21@gmail.com"}],"homepage":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native#readme","bugs":{"url":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native/issues"},"dist":{"shasum":"716c2ab00959e1caaf0b2ffd6f196e71b3dba57c","tarball":"https://registry.npmjs.org/@1selfworld/adchain-sdk-core-react-native/-/adchain-sdk-core-react-native-1.0.1-rc.2.tgz","fileCount":32,"integrity":"sha512-9WMTm4Aev4V5BTitduTRhjEk94sZNaf+8ubgiAFOzLZmbUBC/Q0OlvMGV2RgplQtkeiTBklHak/1Y/dLR0uo3A==","signatures":[{"sig":"MEUCIQDnzY/naISQNa7jdEcqY4UjM0GpYODOS69BdGe6HUq9mwIgR8rVc8+YKp9MQY6rngF6tkr4DbB3PiqgMUjS3cZN2Go=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159861},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","plugin":"app.plugin.js","gitHead":"0127d9d0c8d2027268c632f0afc485eab94ecfd2","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli lib","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"chocosprite","email":"chocosprite21@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/1selfworld-labs/adchain-sdk-core-react-native.git","type":"git"},"_npmVersion":"11.9.0","description":"AdChain SDK for React Native with Expo support","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","readmeFilename":"README.md","devDependencies":{"jest":"^29.7.0","react":"18.3.1","eslint":"^9.35.0","del-cli":"^6.0.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.12","react-native":"0.79.2","@eslint/compat":"^1.3.2","expo-constants":"^17.0.0","@eslint/eslintrc":"^3.3.1","@expo/config-plugins":"^9.0.0","@evilmartians/lefthook":"^1.12.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.13","@react-native/babel-preset":"0.81.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"peerDependenciesMeta":{"expo":{"optional":true},"expo-constants":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adchain-sdk-core-react-native_1.0.1-rc.2_1782814681181_0.44858014008781333","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","version":"0.54.7","languages":"js"}},"1.0.1":{"name":"@1selfworld/adchain-sdk-core-react-native","version":"1.0.1","keywords":["react-native","expo","adchain","ads","offerwall","ios","android"],"author":{"url":"https://1self.world","name":"1SelfWorld Labs","email":"contacts@1self.world"},"license":"MIT","_id":"@1selfworld/adchain-sdk-core-react-native@1.0.1","maintainers":[{"name":"fly33499","email":"fly33499@gmail.com"},{"name":"chocosprite","email":"chocosprite21@gmail.com"}],"homepage":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native#readme","bugs":{"url":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native/issues"},"dist":{"shasum":"2e3f2fad0bc511907c517c4f9eabf69ae5aacc39","tarball":"https://registry.npmjs.org/@1selfworld/adchain-sdk-core-react-native/-/adchain-sdk-core-react-native-1.0.1.tgz","fileCount":32,"integrity":"sha512-K9B8c/baUFuWmDYJ7k8k4ZCjZzCkm4HHoY1dned30n9CnmpJrPkJwT73uhiSUnMBtdlgX6qPg6cpHIPi1SIW+g==","signatures":[{"sig":"MEYCIQDAJCxC3P2aSAVjE+8uID+IwHLL0XAEJKV8ojcYboUNHAIhAPCrcn/vhXOMuuM/1ZWMKbWd05Wa/0CDFnNRNrPVHUWe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":159826},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","plugin":"app.plugin.js","gitHead":"56840c49575535511e8c4cf9bc0b87b9d7594fcc","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli lib","prepare":"bob build","release":"release-it --only-version","typecheck":"tsc"},"_npmUser":{"name":"chocosprite","email":"chocosprite21@gmail.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"tagName":"v${version}","commitMessage":"chore: release ${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"repository":{"url":"git+https://github.com/1selfworld-labs/adchain-sdk-core-react-native.git","type":"git"},"_npmVersion":"11.9.0","description":"AdChain SDK for React Native with Expo support","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@3.6.1","devDependencies":{"jest":"^29.7.0","react":"18.3.1","eslint":"^9.35.0","del-cli":"^6.0.0","prettier":"^3.6.2","@eslint/js":"^9.35.0","commitlint":"^19.8.1","release-it":"^19.0.4","typescript":"^5.9.2","@types/jest":"^29.5.14","@types/react":"^19.1.12","react-native":"0.79.2","@eslint/compat":"^1.3.2","expo-constants":"^17.0.0","@eslint/eslintrc":"^3.3.1","@expo/config-plugins":"^9.0.0","@evilmartians/lefthook":"^1.12.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","react-native-builder-bob":"^0.40.13","@react-native/babel-preset":"0.81.1","@react-native/eslint-config":"^0.81.1","@commitlint/config-conventional":"^19.8.1","@release-it/conventional-changelog":"^10.0.1"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"peerDependenciesMeta":{"expo":{"optional":true},"expo-constants":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/adchain-sdk-core-react-native_1.0.1_1782899075934_0.8490793779358905","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","version":"0.54.7","languages":"js"}},"1.0.2":{"name":"@1selfworld/adchain-sdk-core-react-native","version":"1.0.2","description":"AdChain SDK for React Native with Expo support","main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","scripts":{"test":"jest","typecheck":"tsc","lint":"eslint \"**/*.{js,ts,tsx}\"","clean":"del-cli lib","prepare":"bob build","release":"release-it --only-version"},"keywords":["react-native","expo","adchain","ads","offerwall","ios","android"],"repository":{"type":"git","url":"git+https://github.com/1selfworld-labs/adchain-sdk-core-react-native.git"},"author":{"name":"1SelfWorld Labs","email":"contacts@1self.world","url":"https://1self.world"},"license":"MIT","bugs":{"url":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native/issues"},"homepage":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native#readme","publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"plugin":"app.plugin.js","devDependencies":{"@commitlint/config-conventional":"^19.8.1","@eslint/compat":"^1.3.2","@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.35.0","@evilmartians/lefthook":"^1.12.3","@expo/config-plugins":"^9.0.0","@react-native/babel-preset":"0.81.1","@react-native/eslint-config":"^0.81.1","@release-it/conventional-changelog":"^10.0.1","@types/jest":"^29.5.14","@types/react":"^19.1.12","commitlint":"^19.8.1","del-cli":"^6.0.0","eslint":"^9.35.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","expo-constants":"^17.0.0","jest":"^29.7.0","prettier":"^3.6.2","react":"18.3.1","react-native":"0.79.2","react-native-builder-bob":"^0.40.13","release-it":"^19.0.4","typescript":"^5.9.2"},"peerDependencies":{"react":">=18.0.0","react-native":">=0.74.0"},"peerDependenciesMeta":{"expo":{"optional":true},"expo-constants":{"optional":true}},"packageManager":"yarn@3.6.1","jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"commitlint":{"extends":["@commitlint/config-conventional"]},"release-it":{"git":{"commitMessage":"chore: release ${version}","tagName":"v${version}"},"npm":{"publish":true},"github":{"release":true},"plugins":{"@release-it/conventional-changelog":{"preset":{"name":"angular"}}}},"prettier":{"quoteProps":"consistent","singleQuote":true,"tabWidth":2,"trailingComma":"es5","useTabs":false},"react-native-builder-bob":{"source":"src","output":"lib","targets":[["module",{"esm":true}],["typescript",{"project":"tsconfig.build.json"}]]},"create-react-native-library":{"type":"library","languages":"js","version":"0.54.7"},"gitHead":"56840c49575535511e8c4cf9bc0b87b9d7594fcc","_id":"@1selfworld/adchain-sdk-core-react-native@1.0.2","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-A6AwPlsACPET37xbzpwCU2PPePhKbz70AE6jheBnWa+MhY5bB3sGWmxWEgC18okonPY7JYUgpOiTAWfNQJBQww==","shasum":"f8021d3a7abd0f4c0227b0bbd334be6631fb0ba6","tarball":"https://registry.npmjs.org/@1selfworld/adchain-sdk-core-react-native/-/adchain-sdk-core-react-native-1.0.2.tgz","fileCount":32,"unpackedSize":159826,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDObTKar+DVCRXj4ki9oiRsCJQkroJGJyqnGw3tv7RQkAIgED070yNsogiqBS9NyWlnwyWbxkyA9Ldo68FQhisV4FM="}]},"_npmUser":{"name":"chocosprite","email":"chocosprite21@gmail.com"},"directories":{},"maintainers":[{"name":"fly33499","email":"fly33499@gmail.com"},{"name":"chocosprite","email":"chocosprite21@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adchain-sdk-core-react-native_1.0.2_1784550309194_0.9183728803702382"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T05:06:33.114Z","modified":"2026-07-20T12:25:09.617Z","1.0.0":"2026-06-04T05:06:33.580Z","1.0.1-rc.1":"2026-06-19T01:28:43.727Z","1.0.1-rc.2":"2026-06-30T10:18:01.313Z","1.0.1":"2026-07-01T09:44:36.077Z","1.0.2":"2026-07-20T12:25:09.406Z"},"bugs":{"url":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native/issues"},"author":{"name":"1SelfWorld Labs","email":"contacts@1self.world","url":"https://1self.world"},"license":"MIT","homepage":"https://github.com/1selfworld-labs/adchain-sdk-core-react-native#readme","keywords":["react-native","expo","adchain","ads","offerwall","ios","android"],"repository":{"type":"git","url":"git+https://github.com/1selfworld-labs/adchain-sdk-core-react-native.git"},"description":"AdChain SDK for React Native with Expo support","maintainers":[{"name":"fly33499","email":"fly33499@gmail.com"},{"name":"chocosprite","email":"chocosprite21@gmail.com"}],"readme":"# @1selfworld/adchain-sdk-core-react-native\n\n> **Adjoe-free Core build.** Forked from `adchain-sdk-react-native@1.0.26` (commit 372cb93 기준) — Adjoe 관련 API/의존성 제거판. 미래 수동 sync 기준점.\n\nReact Native 및 Expo를 위한 AdChain Core SDK입니다.\n\n## 🚨 중요 공지\n\n### Expo Go 미지원\n\n이 SDK는 네이티브 코드를 포함하고 있어 **Expo Go에서 작동하지 않습니다**.\n\n반드시 다음 방법을 사용하세요:\n\n- ✅ Development Build: `npx expo run:android` 또는 `npx expo run:ios`\n- ✅ EAS Build: `eas build --profile development`\n\n### 🔐 보안 주의사항\n\napp.json에 저장된 API 키는 앱 번들에 포함됩니다.\n\n**권장사항:**\n\n- ✅ **개발/테스트:** app.json 사용 가능\n- ⚠️ **프로덕션:** 환경별 키 분리 권장\n  - Android: `buildConfigField` 사용\n  - iOS: `xcconfig` 파일 사용\n- ❌ **절대 금지:** Private API 키, 결제/인증 비밀키 노출\n\n**대안:**\n\n```typescript\n// 런타임에 서버에서 토큰 발급\nconst token = await fetchTokenFromServer();\nawait AdchainSDK.initializeWithToken(token);\n```\n\n## 설치\n\n```bash\nnpx expo install @1selfworld/adchain-sdk-core-react-native expo-constants\n```\n\n**참고:** `expo-constants`는 peerDependency입니다. 별도로 설치해야 합니다.\n\n## 설정\n\n`app.json`에 다음을 추가하세요:\n\n```json\n{\n  \"expo\": {\n    \"plugins\": [\n      [\n        \"@1selfworld/adchain-sdk-core-react-native\",\n        {\n          \"appKey\": \"YOUR_APP_KEY\",\n          \"appSecret\": \"YOUR_APP_SECRET\",\n          \"environment\": \"PRODUCTION\"\n        }\n      ]\n    ]\n  }\n}\n```\n\n## 사용법\n\n```typescript\nimport { useEffect } from 'react';\nimport AdchainSDK from '@1selfworld/adchain-sdk-core-react-native';\n\nexport default function App() {\n  useEffect(() => {\n    // app.json 설정을 사용한 자동 초기화\n    AdchainSDK.autoInitialize()\n      .then(() => console.log('SDK 준비 완료'))\n      .catch(console.error);\n  }, []);\n\n  const handleLogin = async () => {\n    await AdchainSDK.login({ userId: 'user123' });\n  };\n\n  const handleOfferwall = async () => {\n    await AdchainSDK.openOfferwall('placement-id');\n  };\n}\n```\n\n## API 레퍼런스\n\n### 핵심 메서드\n\n- `autoInitialize()` - app.json 설정을 사용한 자동 초기화\n- `initialize(config)` - 수동 초기화\n- `login(user)` - 사용자 로그인\n- `logout()` - 사용자 로그아웃\n- `isLoggedIn()` - 로그인 상태 확인\n- `getCurrentUser()` - 현재 사용자 정보 조회\n\n### 오퍼월\n\n- `openOfferwall(placementId?)` - 오퍼월 열기\n- `openOfferwallNestAds(placementId)` - NestAds 오퍼월 열기\n\n### 임베디드 오퍼월 컴포넌트\n\n`AdchainOfferwallView`는 탭이나 화면에 직접 임베드할 수 있는 React Native 컴포넌트입니다.\n\n**주요 특징**:\n\n- ✅ `placementId`만으로 서버에서 오퍼월 URL을 자동으로 가져옴\n- ✅ `openOfferwallNestAds`와 동일한 URL 로딩 방식 사용\n- ✅ 각 placement마다 다른 오퍼월 페이지 로드 가능\n\n```typescript\nimport { AdchainOfferwallView } from '@1selfworld/adchain-sdk-core-react-native';\n\n<AdchainOfferwallView\n  placementId=\"tab_embedded_offerwall\"  // 서버에서 URL 자동 조회\n  style={{ flex: 1 }}\n  onOfferwallOpened={() => console.log('Opened')}\n  onOfferwallClosed={() => console.log('Closed')}\n  onBackPressOnFirstPage={() => {\n    // Android: WebView가 첫 페이지일 때 백버튼 처리\n    // 앱 종료, 다른 탭 이동 등의 로직 구현\n  }}\n  onBackNavigated={() => {\n    // Android: WebView 내부에서 뒤로가기 성공\n  }}\n/>\n```\n\n**동작 방식**:\n\n1. `placementId`를 입력하면 SDK가 자동으로 서버 API 호출 (`GET /v1/api/sdk/placement-url`)\n2. 서버에서 해당 placement에 매핑된 오퍼월 URL 반환\n3. 반환된 URL로 WebView 로드\n\n**백버튼 이벤트 (Android, v1.0.15+)**:\n\n- `onBackPressOnFirstPage`: WebView 스택에 페이지가 1개만 있을 때 (더 이상 뒤로갈 수 없음)\n- `onBackNavigated`: WebView 스택에서 성공적으로 뒤로 이동했을 때\n\n앱 개발자는 이 이벤트를 받아서 앱 종료, 탭 전환 등의 동작을 직접 구현할 수 있습니다.\n\n### 퀴즈 & 미션\n\n- `loadQuizList(unitId)` - 퀴즈 목록 로드\n- `clickQuiz(unitId, quizId)` - 퀴즈 클릭\n- `loadMissionList(unitId)` - 미션 목록 로드\n- `clickMission(unitId, missionId)` - 미션 클릭\n- `claimReward(unitId)` - 보상 수령\n\n### 디버그\n\n- `getUserId()` - 현재 사용자 ID 조회\n- `getIFA()` - 광고 ID 조회\n- `isInitialized()` - SDK 초기화 상태 확인\n\n## 🔧 기술 노트\n\n### Swift 5.5 사용 (5.9 아님)\n\n이 SDK는 **Swift 5.5**를 사용합니다. Swift 5.9에서 발견된 React Native 브리지의\n선택적 매개변수 전달 문제를 피하기 위함입니다.\n\n**배경:** 프로덕션 환경에서 Swift 5.9의 선택적 매개변수가 React Native로\n제대로 전달되지 않아 조용히 실패하는 버그를 경험했습니다.\n\n테스트 완료 환경:\n\n- Xcode 14.x - 15.x\n- Swift 5.5\n- iOS 14.0+\n\n### Kotlin 표준 라이브러리\n\nSDK는 네이티브 AdChain SDK에서 요구하는 `kotlin-stdlib:1.9.21`을 포함합니다.\n버전 충돌이 발생하면 Gradle이 자동으로 호스트 앱의 버전으로 해결합니다.\n\n### React Native 의존성\n\nSDK는 AAR의 중복 클래스를 피하기 위해 `react-android`에 대해 `compileOnly`를 사용합니다.\n의존성은 호스트 애플리케이션에서 제공됩니다.\n\n## 빌드 & 실행\n\n```bash\n# Prebuild (네이티브 코드 생성)\nnpx expo prebuild\n\n# 플러그인 적용 확인\ncat android/settings.gradle | grep jitpack\ncat ios/Podfile | grep AdChainSDK\n\n# Android 실행\nnpx expo run:android\n\n# iOS 실행\nnpx expo run:ios\n```\n\n## 요구사항\n\n- Expo SDK 50+\n- React Native 0.74+\n- iOS 14.0+\n- Android API 24+\n- **Development Build** (Expo Go 미지원)\n\n## 문제 해결\n\n### \"SDK not initialized\" 오류\n\n- app.json에 플러그인을 추가했는지 확인\n- appKey와 appSecret이 올바른지 확인\n- 다른 메서드 호출 전에 `autoInitialize()` 호출 확인\n\n### \"Expo config not found\" 오류\n\n- Expo Go를 사용 중일 가능성이 높습니다 (미지원)\n- 사용: `npx expo run:android` 또는 `npx expo run:ios`\n\n### \"expo-constants not found\" 오류\n\n- peer dependency 설치: `npx expo install expo-constants`\n\n### Prebuild 실패\n\n- devDependencies에 @expo/config-plugins가 있는지 확인\n- 시도: `rm -rf node_modules && npm install`\n\n### JitPack not found (Android)\n\n- settings.gradle에 maven { url \"https://jitpack.io\" }가 있는지 확인\n- 인터넷 연결 확인\n- 시도: `cd android && ./gradlew clean`\n\n### Pod install 실패 (iOS)\n\n- Git URL이 올바른지 확인\n- 태그 v1.0.45가 존재하는지 확인\n- 시도: `cd ios && rm -rf Pods Podfile.lock && pod install`\n\n## 버전 호환성\n\n| 패키지 버전 | Android SDK | iOS SDK | Swift | Expo SDK | 주요 변경사항                                                       |\n| ----------- | ----------- | ------- | ----- | -------- | ------------------------------------------------------------------- |\n| 1.0.25      | v1.0.34     | v1.0.49 | 5.5   | 50-53    | Android SDK v1.0.34 + iOS SDK v1.0.49 업데이트                      |\n| 1.0.24      | v1.0.33     | v1.0.48 | 5.5   | 50-53    | iOS SDK v1.0.48 업데이트                                            |\n| 1.0.23      | v1.0.33     | v1.0.47 | 5.5   | 50-53    | Android SDK v1.0.33 업데이트                                        |\n| 1.0.22      | v1.0.32     | v1.0.47 | 5.5   | 50-53    | iOS SDK 버전 v1.0.47 수정                                           |\n| 1.0.21      | v1.0.32     | v1.0.47 | 5.5   | 50-53    | Android SDK v1.0.32 업데이트 (JitPack 빌드 안정화)                  |\n| 1.0.20      | v1.0.31     | v1.0.47 | 5.5   | 50-53    | AdchainOfferwallView placementId 단순화 (네이티브 SDK에서 URL 처리) |\n| 1.0.19      | v1.0.30     | v1.0.46 | 5.5   | 50-53    | iOS 타입 오류 수정 (AdchainSdkConfig, AdchainSdkUser)               |\n| 1.0.18      | v1.0.30     | v1.0.46 | 5.5   | 50-53    | 네이티브 SDK 버전 업데이트                                          |\n| 1.0.15      | v1.0.29     | v1.0.45 | 5.5   | 50-53    | 백버튼 이벤트, NestAds 지원                                         |\n| 1.0.13      | v1.0.28     | v1.0.45 | 5.5   | 50-53    | NestAds 오퍼월 추가                                                 |\n| 1.0.0       | v1.0.28     | v1.0.45 | 5.5   | 50-53    | 초기 릴리즈                                                         |\n\n## 알려진 제한사항\n\n### v1.0.0\n\n- OTA 업데이트 (expo-updates) 아직 미지원 - Development Build 사용\n- Swift 5.9 선택적 매개변수 버그 - 5.5 유지\n- CocoaPods Trunk: AdChainSDK는 Git Pod 사용 (아직 Trunk 미등록)\n\n## 라이선스\n\nProprietary\n\n## 지원\n\n이메일: contacts@1self.world\n","readmeFilename":"README.md"}