@1selfworld/adchain-sdk-react-native 1.0.10 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -97
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/package.json +2 -2
- package/plugin/src/withAdchainAndroid.js +48 -8
- package/src/index.tsx +1 -1
package/README.md
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
# @adchain
|
|
1
|
+
# @1selfworld/adchain-sdk-react-native
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
React Native 및 Expo를 위한 AdChain SDK입니다.
|
|
4
4
|
|
|
5
|
-
## 🚨
|
|
5
|
+
## 🚨 중요 공지
|
|
6
6
|
|
|
7
|
-
### Expo Go
|
|
8
|
-
|
|
7
|
+
### Expo Go 미지원
|
|
8
|
+
이 SDK는 네이티브 코드를 포함하고 있어 **Expo Go에서 작동하지 않습니다**.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
- ✅ Development Build: `npx expo run:android`
|
|
10
|
+
반드시 다음 방법을 사용하세요:
|
|
11
|
+
- ✅ Development Build: `npx expo run:android` 또는 `npx expo run:ios`
|
|
12
12
|
- ✅ EAS Build: `eas build --profile development`
|
|
13
13
|
|
|
14
|
-
### 🔐
|
|
14
|
+
### 🔐 보안 주의사항
|
|
15
15
|
app.json에 저장된 API 키는 앱 번들에 포함됩니다.
|
|
16
16
|
|
|
17
17
|
**권장사항:**
|
|
18
|
-
- ✅ **개발/테스트:** app.json 사용
|
|
18
|
+
- ✅ **개발/테스트:** app.json 사용 가능
|
|
19
19
|
- ⚠️ **프로덕션:** 환경별 키 분리 권장
|
|
20
20
|
- Android: `buildConfigField` 사용
|
|
21
21
|
- iOS: `xcconfig` 파일 사용
|
|
@@ -28,24 +28,24 @@ const token = await fetchTokenFromServer();
|
|
|
28
28
|
await AdchainSDK.initializeWithToken(token);
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
##
|
|
31
|
+
## 설치
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
|
-
npx expo install @adchain
|
|
34
|
+
npx expo install @1selfworld/adchain-sdk-react-native expo-constants
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
**참고:** `expo-constants`는 peerDependency입니다. 별도로 설치해야 합니다.
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## 설정
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
`app.json`에 다음을 추가하세요:
|
|
42
42
|
|
|
43
43
|
```json
|
|
44
44
|
{
|
|
45
45
|
"expo": {
|
|
46
46
|
"plugins": [
|
|
47
47
|
[
|
|
48
|
-
"@adchain
|
|
48
|
+
"@1selfworld/adchain-sdk-react-native",
|
|
49
49
|
{
|
|
50
50
|
"appKey": "YOUR_APP_KEY",
|
|
51
51
|
"appSecret": "YOUR_APP_SECRET",
|
|
@@ -57,17 +57,17 @@ Add to your `app.json`:
|
|
|
57
57
|
}
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## 사용법
|
|
61
61
|
|
|
62
62
|
```typescript
|
|
63
63
|
import { useEffect } from 'react';
|
|
64
|
-
import AdchainSDK from '@adchain
|
|
64
|
+
import AdchainSDK from '@1selfworld/adchain-sdk-react-native';
|
|
65
65
|
|
|
66
66
|
export default function App() {
|
|
67
67
|
useEffect(() => {
|
|
68
|
-
//
|
|
68
|
+
// app.json 설정을 사용한 자동 초기화
|
|
69
69
|
AdchainSDK.autoInitialize()
|
|
70
|
-
.then(() => console.log('SDK
|
|
70
|
+
.then(() => console.log('SDK 준비 완료'))
|
|
71
71
|
.catch(console.error);
|
|
72
72
|
}, []);
|
|
73
73
|
|
|
@@ -81,131 +81,130 @@ export default function App() {
|
|
|
81
81
|
}
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
## API
|
|
84
|
+
## API 레퍼런스
|
|
85
85
|
|
|
86
|
-
###
|
|
87
|
-
- `autoInitialize()` -
|
|
88
|
-
- `initialize(config)` -
|
|
89
|
-
- `login(user)` -
|
|
90
|
-
- `logout()` -
|
|
91
|
-
- `isLoggedIn()` -
|
|
92
|
-
- `getCurrentUser()` -
|
|
86
|
+
### 핵심 메서드
|
|
87
|
+
- `autoInitialize()` - app.json 설정을 사용한 자동 초기화
|
|
88
|
+
- `initialize(config)` - 수동 초기화
|
|
89
|
+
- `login(user)` - 사용자 로그인
|
|
90
|
+
- `logout()` - 사용자 로그아웃
|
|
91
|
+
- `isLoggedIn()` - 로그인 상태 확인
|
|
92
|
+
- `getCurrentUser()` - 현재 사용자 정보 조회
|
|
93
93
|
|
|
94
|
-
###
|
|
95
|
-
- `openOfferwall(placementId?)` -
|
|
96
|
-
- `openAdjoeOfferwall(placementId?)` -
|
|
94
|
+
### 오퍼월
|
|
95
|
+
- `openOfferwall(placementId?)` - 오퍼월 열기
|
|
96
|
+
- `openAdjoeOfferwall(placementId?)` - ADJOE 오퍼월 열기
|
|
97
97
|
|
|
98
|
-
###
|
|
99
|
-
- `loadQuizList(unitId)` -
|
|
100
|
-
- `clickQuiz(unitId, quizId)` -
|
|
101
|
-
- `loadMissionList(unitId)` -
|
|
102
|
-
- `clickMission(unitId, missionId)` -
|
|
103
|
-
- `claimReward(unitId)` -
|
|
98
|
+
### 퀴즈 & 미션
|
|
99
|
+
- `loadQuizList(unitId)` - 퀴즈 목록 로드
|
|
100
|
+
- `clickQuiz(unitId, quizId)` - 퀴즈 클릭
|
|
101
|
+
- `loadMissionList(unitId)` - 미션 목록 로드
|
|
102
|
+
- `clickMission(unitId, missionId)` - 미션 클릭
|
|
103
|
+
- `claimReward(unitId)` - 보상 수령
|
|
104
104
|
|
|
105
|
-
###
|
|
106
|
-
- `getUserId()` -
|
|
107
|
-
- `getIFA()` -
|
|
108
|
-
- `isInitialized()` -
|
|
105
|
+
### 디버그
|
|
106
|
+
- `getUserId()` - 현재 사용자 ID 조회
|
|
107
|
+
- `getIFA()` - 광고 ID 조회
|
|
108
|
+
- `isInitialized()` - SDK 초기화 상태 확인
|
|
109
109
|
|
|
110
|
-
## 🔧
|
|
110
|
+
## 🔧 기술 노트
|
|
111
111
|
|
|
112
|
-
### Swift 5.5 (
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
### Swift 5.5 사용 (5.9 아님)
|
|
113
|
+
이 SDK는 **Swift 5.5**를 사용합니다. Swift 5.9에서 발견된 React Native 브리지의
|
|
114
|
+
선택적 매개변수 전달 문제를 피하기 위함입니다.
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
**배경:** 프로덕션 환경에서 Swift 5.9의 선택적 매개변수가 React Native로
|
|
117
|
+
제대로 전달되지 않아 조용히 실패하는 버그를 경험했습니다.
|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
테스트 완료 환경:
|
|
120
120
|
- Xcode 14.x - 15.x
|
|
121
121
|
- Swift 5.5
|
|
122
122
|
- iOS 14.0+
|
|
123
123
|
|
|
124
|
-
### Kotlin
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
host app's version.
|
|
124
|
+
### Kotlin 표준 라이브러리
|
|
125
|
+
SDK는 네이티브 AdChain SDK에서 요구하는 `kotlin-stdlib:1.9.21`을 포함합니다.
|
|
126
|
+
버전 충돌이 발생하면 Gradle이 자동으로 호스트 앱의 버전으로 해결합니다.
|
|
128
127
|
|
|
129
|
-
### React Native
|
|
130
|
-
|
|
131
|
-
|
|
128
|
+
### React Native 의존성
|
|
129
|
+
SDK는 AAR의 중복 클래스를 피하기 위해 `react-android`에 대해 `compileOnly`를 사용합니다.
|
|
130
|
+
의존성은 호스트 애플리케이션에서 제공됩니다.
|
|
132
131
|
|
|
133
|
-
##
|
|
132
|
+
## 빌드 & 실행
|
|
134
133
|
|
|
135
134
|
```bash
|
|
136
|
-
# Prebuild (
|
|
135
|
+
# Prebuild (네이티브 코드 생성)
|
|
137
136
|
npx expo prebuild
|
|
138
137
|
|
|
139
|
-
#
|
|
138
|
+
# 플러그인 적용 확인
|
|
140
139
|
cat android/settings.gradle | grep jitpack
|
|
141
140
|
cat ios/Podfile | grep AdChainSDK
|
|
142
141
|
|
|
143
|
-
#
|
|
142
|
+
# Android 실행
|
|
144
143
|
npx expo run:android
|
|
145
144
|
|
|
146
|
-
#
|
|
145
|
+
# iOS 실행
|
|
147
146
|
npx expo run:ios
|
|
148
147
|
```
|
|
149
148
|
|
|
150
|
-
##
|
|
149
|
+
## 요구사항
|
|
151
150
|
|
|
152
151
|
- Expo SDK 50+
|
|
153
152
|
- React Native 0.74+
|
|
154
153
|
- iOS 14.0+
|
|
155
154
|
- Android API 24+
|
|
156
|
-
- **Development Build** (Expo Go
|
|
155
|
+
- **Development Build** (Expo Go 미지원)
|
|
157
156
|
|
|
158
|
-
##
|
|
157
|
+
## 문제 해결
|
|
159
158
|
|
|
160
|
-
### "SDK not initialized"
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
159
|
+
### "SDK not initialized" 오류
|
|
160
|
+
- app.json에 플러그인을 추가했는지 확인
|
|
161
|
+
- appKey와 appSecret이 올바른지 확인
|
|
162
|
+
- 다른 메서드 호출 전에 `autoInitialize()` 호출 확인
|
|
164
163
|
|
|
165
|
-
### "Expo config not found"
|
|
166
|
-
-
|
|
167
|
-
-
|
|
164
|
+
### "Expo config not found" 오류
|
|
165
|
+
- Expo Go를 사용 중일 가능성이 높습니다 (미지원)
|
|
166
|
+
- 사용: `npx expo run:android` 또는 `npx expo run:ios`
|
|
168
167
|
|
|
169
|
-
### "expo-constants not found"
|
|
170
|
-
-
|
|
168
|
+
### "expo-constants not found" 오류
|
|
169
|
+
- peer dependency 설치: `npx expo install expo-constants`
|
|
171
170
|
|
|
172
|
-
### Prebuild
|
|
173
|
-
-
|
|
174
|
-
-
|
|
171
|
+
### Prebuild 실패
|
|
172
|
+
- devDependencies에 @expo/config-plugins가 있는지 확인
|
|
173
|
+
- 시도: `rm -rf node_modules && npm install`
|
|
175
174
|
|
|
176
175
|
### JitPack not found (Android)
|
|
177
|
-
-
|
|
178
|
-
-
|
|
179
|
-
-
|
|
176
|
+
- settings.gradle에 maven { url "https://jitpack.io" }가 있는지 확인
|
|
177
|
+
- 인터넷 연결 확인
|
|
178
|
+
- 시도: `cd android && ./gradlew clean`
|
|
180
179
|
|
|
181
|
-
### Pod install
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
180
|
+
### Pod install 실패 (iOS)
|
|
181
|
+
- Git URL이 올바른지 확인
|
|
182
|
+
- 태그 v1.0.42가 존재하는지 확인
|
|
183
|
+
- 시도: `cd ios && rm -rf Pods Podfile.lock && pod install`
|
|
185
184
|
|
|
186
|
-
##
|
|
185
|
+
## 버전 호환성
|
|
187
186
|
|
|
188
|
-
|
|
|
189
|
-
|
|
190
|
-
| 1.0.0
|
|
187
|
+
| 패키지 버전 | Android SDK | iOS SDK | Swift | Expo SDK |
|
|
188
|
+
|------------|-------------|---------|-------|----------|
|
|
189
|
+
| 1.0.0 | v1.0.28 | v1.0.42 | 5.5 | 50-53 |
|
|
191
190
|
|
|
192
|
-
##
|
|
191
|
+
## 알려진 제한사항
|
|
193
192
|
|
|
194
193
|
### v1.0.0
|
|
195
|
-
- OTA
|
|
196
|
-
- Swift 5.9
|
|
197
|
-
- CocoaPods Trunk: AdChainSDK
|
|
194
|
+
- OTA 업데이트 (expo-updates) 아직 미지원 - Development Build 사용
|
|
195
|
+
- Swift 5.9 선택적 매개변수 버그 - 5.5 유지
|
|
196
|
+
- CocoaPods Trunk: AdChainSDK는 Git Pod 사용 (아직 Trunk 미등록)
|
|
198
197
|
|
|
199
|
-
###
|
|
200
|
-
- expo-updates
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
198
|
+
### v1.1.0 계획
|
|
199
|
+
- expo-updates 폴백 지원
|
|
200
|
+
- 조건부 iOS 플러그인 (Trunk vs Git)
|
|
201
|
+
- 서버 사이드 토큰 초기화
|
|
202
|
+
- 향상된 오류 메시지
|
|
204
203
|
|
|
205
|
-
##
|
|
204
|
+
## 라이선스
|
|
206
205
|
|
|
207
206
|
Proprietary
|
|
208
207
|
|
|
209
|
-
##
|
|
208
|
+
## 지원
|
|
210
209
|
|
|
211
|
-
|
|
210
|
+
이메일: contacts@1self.world
|
package/lib/module/index.js
CHANGED
|
@@ -85,7 +85,7 @@ class AdchainSDK {
|
|
|
85
85
|
const appKey = isIOS ? adchainIosAppKey : adchainAndroidAppKey;
|
|
86
86
|
const appSecret = isIOS ? adchainIosAppSecret : adchainAndroidAppSecret;
|
|
87
87
|
if (!appKey || !appSecret) {
|
|
88
|
-
throw new Error(`AdChain: Missing ${Platform.OS} configuration in app.json. ` + 'Please add AdChain SDK to plugins section:\n\n' + '{\n' + ' "expo": {\n' + ' "plugins": [\n' + ' ["@adchain
|
|
88
|
+
throw new Error(`AdChain: Missing ${Platform.OS} configuration in app.json. ` + 'Please add AdChain SDK to plugins section:\n\n' + '{\n' + ' "expo": {\n' + ' "plugins": [\n' + ' ["@1selfworld/adchain-sdk-react-native", {\n' + ' "android": {\n' + ' "appKey": "YOUR_ANDROID_APP_KEY",\n' + ' "appSecret": "YOUR_APP_SECRET"\n' + ' },\n' + ' "ios": {\n' + ' "appKey": "YOUR_IOS_APP_KEY",\n' + ' "appSecret": "YOUR_APP_SECRET"\n' + ' }\n' + ' }]\n' + ' ]\n' + ' }\n' + '}');
|
|
89
89
|
}
|
|
90
90
|
console.log(`[AdChain] Auto-initializing with ${Platform.OS} credentials...`);
|
|
91
91
|
return await this.initialize({
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","NativeEventEmitter","hasExpoNative","ExponentConstants","AdchainOfferwallView","LINKING_ERROR","select","ios","default","AdchainSdk","Proxy","get","Error","adchainEventEmitter","AdchainSDK","initialize","config","options","environment","timeout","appKey","appSecret","autoInitialize","OS","Constants","require","e","expoConfig","adchainAndroidAppKey","adchainAndroidAppSecret","adchainIosAppKey","adchainIosAppSecret","adchainEnvironment","adchainTimeout","extra","isIOS","console","log","error","login","user","userInfo","gender","birthYear","customProperties","userId","logout","isLoggedIn","getCurrentUser","loadQuizList","unitId","clickQuiz","quizId","loadMissionList","clickMission","missionId","claimReward","openOfferwall","placementId","openOfferwallWithUrl","url","openExternalBrowser","openAdjoeOfferwall","isInitialized","getUserId","getIFA","getBannerInfo","addQuizCompletedListener","callback","addListener","addMissionCompletedListener","addMissionProgressedListener","addMissionRefreshedListener","sdk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;;AAE1E;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAG,CAAC,MAAM;EAC3B,IAAI;IACF,OAAO,CAAC,CAACH,aAAa,CAACI,iBAAiB;EAC1C,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF,CAAC,EAAE,CAAC;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASC,oBAAoB,QAAQ,2BAAwB;AAG7D,MAAMC,aAAa,GACjB,sEAAsE,GACtEL,QAAQ,CAACM,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,UAAU,GAAGV,aAAa,CAACU,UAAU,GACvCV,aAAa,CAACU,UAAU,GACxB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;;AAEL;AACA,MAAMQ,mBAAmB,GAAG,IAAIZ,kBAAkB,CAACQ,UAAU,CAAC;;AAE9D;;AA0DA;;AAEA,MAAMK,UAAU,CAAC;EACf;EACA,MAAMC,UAAUA,CAACC,MAAqB,EAA4B;IAChE;IACA,MAAMC,OAAO,GAAG;MACdC,WAAW,EAAEF,MAAM,CAACE,WAAW;MAC/BC,OAAO,EAAEH,MAAM,CAACG;IAClB,CAAC;IAED,OAAOV,UAAU,CAACM,UAAU,CAACC,MAAM,CAACI,MAAM,EAAEJ,MAAM,CAACK,SAAS,EAAEJ,OAAO,CAAC;EACxE;;EAEA;EACA,MAAMK,cAAcA,CAAA,EAA6B;IAC/C,IAAI;MACF;MACA,IAAI,CAACpB,aAAa,EAAE;QAClB,MAAM,IAAIU,KAAK,CACb,mEAAmE,GACjE,sBAAsB,GACtB,eAAeZ,QAAQ,CAACuB,EAAE,IAAI,GAC9B,uCAAuC,GACvC,uFACJ,CAAC;MACH;;MAEA;MACA;MACA,IAAIC,SAAc,GAAG,IAAI;MACzB,IAAI;QACF;QACAA,SAAS,GAAGC,OAAO,CAAC,gBAAgB,CAAC,CAACjB,OAAO;MAC/C,CAAC,CAAC,OAAOkB,CAAC,EAAE;QACV,MAAM,IAAId,KAAK,CACb,oDAAoD,GAClD,UAAUc,CAAC,MAAM,GACjB,8CAA8C,GAC9C,4BACJ,CAAC;MACH;MAEA,MAAMC,UAAU,GAAGH,SAAS,CAACG,UAAU;MAEvC,IAAI,CAACA,UAAU,EAAE;QACf,MAAM,IAAIf,KAAK,CACb,kCAAkC,GAChC,qEAAqE,GACrE,sDACJ,CAAC;MACH;MAEA,MAAM;QACJgB,oBAAoB;QACpBC,uBAAuB;QACvBC,gBAAgB;QAChBC,mBAAmB;QACnBC,kBAAkB;QAClBC;MACF,CAAC,GAAGN,UAAU,CAACO,KAAK,IAAI,CAAC,CAAC;;MAE1B;MACA,MAAMC,KAAK,GAAGnC,QAAQ,CAACuB,EAAE,KAAK,KAAK;MACnC,MAAMH,MAAM,GAAGe,KAAK,GAAGL,gBAAgB,GAAGF,oBAAoB;MAC9D,MAAMP,SAAS,GAAGc,KAAK,GAAGJ,mBAAmB,GAAGF,uBAAuB;MAEvE,IAAI,CAACT,MAAM,IAAI,CAACC,SAAS,EAAE;QACzB,MAAM,IAAIT,KAAK,CACb,oBAAoBZ,QAAQ,CAACuB,EAAE,8BAA8B,GAC3D,gDAAgD,GAChD,KAAK,GACL,eAAe,GACf,oBAAoB,GACpB,
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","NativeEventEmitter","hasExpoNative","ExponentConstants","AdchainOfferwallView","LINKING_ERROR","select","ios","default","AdchainSdk","Proxy","get","Error","adchainEventEmitter","AdchainSDK","initialize","config","options","environment","timeout","appKey","appSecret","autoInitialize","OS","Constants","require","e","expoConfig","adchainAndroidAppKey","adchainAndroidAppSecret","adchainIosAppKey","adchainIosAppSecret","adchainEnvironment","adchainTimeout","extra","isIOS","console","log","error","login","user","userInfo","gender","birthYear","customProperties","userId","logout","isLoggedIn","getCurrentUser","loadQuizList","unitId","clickQuiz","quizId","loadMissionList","clickMission","missionId","claimReward","openOfferwall","placementId","openOfferwallWithUrl","url","openExternalBrowser","openAdjoeOfferwall","isInitialized","getUserId","getIFA","getBannerInfo","addQuizCompletedListener","callback","addListener","addMissionCompletedListener","addMissionProgressedListener","addMissionRefreshedListener","sdk"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1selfworld/adchain-sdk-react-native",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.12",
|
|
4
4
|
"description": "AdChain SDK for React Native with Expo support",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
86
|
"react": ">=18.0.0",
|
|
87
|
-
"react-native": ">=0.
|
|
87
|
+
"react-native": ">=0.74.0"
|
|
88
88
|
},
|
|
89
89
|
"peerDependenciesMeta": {
|
|
90
90
|
"expo": {
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
const {
|
|
1
|
+
const {
|
|
2
|
+
withSettingsGradle,
|
|
3
|
+
withProjectBuildGradle,
|
|
4
|
+
} = require('@expo/config-plugins');
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
|
-
* v4.
|
|
7
|
+
* v4.2: Android 빌드 설정
|
|
8
|
+
* - settings.gradle에 JitPack repository 추가
|
|
9
|
+
* - build.gradle에 adjoe Maven repository 추가
|
|
5
10
|
* - AGP 8+ 호환
|
|
6
|
-
* - dependencyResolutionManagement 사용
|
|
7
|
-
* - 의존성은 라이브러리 모듈에서 선언 (중복 방지)
|
|
8
11
|
*/
|
|
9
12
|
function withAdchainAndroid(config) {
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
// 1. settings.gradle에 JitPack 추가
|
|
14
|
+
config = withSettingsGradle(config, (cfg) => {
|
|
15
|
+
let settingsGradle = cfg.modResults.contents;
|
|
12
16
|
|
|
13
17
|
// JitPack repository 추가
|
|
14
18
|
if (!settingsGradle.includes('maven { url "https://jitpack.io" }')) {
|
|
@@ -48,9 +52,45 @@ dependencyResolutionManagement {
|
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
54
|
|
|
51
|
-
|
|
52
|
-
return
|
|
55
|
+
cfg.modResults.contents = settingsGradle;
|
|
56
|
+
return cfg;
|
|
53
57
|
});
|
|
58
|
+
|
|
59
|
+
// 2. build.gradle에 adjoe Maven repository 추가
|
|
60
|
+
config = withProjectBuildGradle(config, (cfg) => {
|
|
61
|
+
let buildGradle = cfg.modResults.contents;
|
|
62
|
+
|
|
63
|
+
// adjoe Maven repository 추가
|
|
64
|
+
if (!buildGradle.includes('releases.adjoe.io/maven')) {
|
|
65
|
+
// allprojects { repositories { ... } } 블록 찾기
|
|
66
|
+
const allprojectsMatch = buildGradle.match(
|
|
67
|
+
/(allprojects\s*\{\s*repositories\s*\{)/
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
if (allprojectsMatch) {
|
|
71
|
+
// allprojects 블록에 추가
|
|
72
|
+
buildGradle = buildGradle.replace(
|
|
73
|
+
allprojectsMatch[0],
|
|
74
|
+
`${allprojectsMatch[0]}\n maven { url 'https://releases.adjoe.io/maven' }`
|
|
75
|
+
);
|
|
76
|
+
} else {
|
|
77
|
+
// allprojects 블록이 없으면 파일 끝에 추가
|
|
78
|
+
buildGradle += `
|
|
79
|
+
// AdChain SDK - adjoe Maven repository
|
|
80
|
+
allprojects {
|
|
81
|
+
repositories {
|
|
82
|
+
maven { url 'https://releases.adjoe.io/maven' }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
cfg.modResults.contents = buildGradle;
|
|
90
|
+
return cfg;
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return config;
|
|
54
94
|
}
|
|
55
95
|
|
|
56
96
|
module.exports = withAdchainAndroid;
|
package/src/index.tsx
CHANGED
|
@@ -174,7 +174,7 @@ class AdchainSDK {
|
|
|
174
174
|
'{\n' +
|
|
175
175
|
' "expo": {\n' +
|
|
176
176
|
' "plugins": [\n' +
|
|
177
|
-
' ["@adchain
|
|
177
|
+
' ["@1selfworld/adchain-sdk-react-native", {\n' +
|
|
178
178
|
' "android": {\n' +
|
|
179
179
|
' "appKey": "YOUR_ANDROID_APP_KEY",\n' +
|
|
180
180
|
' "appSecret": "YOUR_APP_SECRET"\n' +
|