@adstage/react-native-sdk 1.0.0
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/LICENSE +21 -0
- package/README.md +327 -0
- package/adstage-react-native.podspec +24 -0
- package/android/build.gradle +66 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/io/nbase/adstage/reactnative/AdStageModule.kt +701 -0
- package/android/src/main/java/io/nbase/adstage/reactnative/AdStagePackage.kt +24 -0
- package/ios/AdStageModule.m +70 -0
- package/ios/AdStageModule.swift +457 -0
- package/lib/commonjs/AdStage.js +213 -0
- package/lib/commonjs/AdStage.js.map +1 -0
- package/lib/commonjs/deeplink/AdStageDeepLink.js +235 -0
- package/lib/commonjs/deeplink/AdStageDeepLink.js.map +1 -0
- package/lib/commonjs/event/AdStageEvent.js +689 -0
- package/lib/commonjs/event/AdStageEvent.js.map +1 -0
- package/lib/commonjs/index.js +34 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/promotion/AdStagePromotion.js +158 -0
- package/lib/commonjs/promotion/AdStagePromotion.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/AdStage.js +206 -0
- package/lib/module/AdStage.js.map +1 -0
- package/lib/module/deeplink/AdStageDeepLink.js +228 -0
- package/lib/module/deeplink/AdStageDeepLink.js.map +1 -0
- package/lib/module/event/AdStageEvent.js +682 -0
- package/lib/module/event/AdStageEvent.js.map +1 -0
- package/lib/module/index.js +15 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/promotion/AdStagePromotion.js +151 -0
- package/lib/module/promotion/AdStagePromotion.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/src/AdStage.d.ts +124 -0
- package/lib/typescript/src/AdStage.d.ts.map +1 -0
- package/lib/typescript/src/deeplink/AdStageDeepLink.d.ts +154 -0
- package/lib/typescript/src/deeplink/AdStageDeepLink.d.ts.map +1 -0
- package/lib/typescript/src/event/AdStageEvent.d.ts +426 -0
- package/lib/typescript/src/event/AdStageEvent.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +13 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/promotion/AdStagePromotion.d.ts +98 -0
- package/lib/typescript/src/promotion/AdStagePromotion.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +305 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +105 -0
- package/src/AdStage.ts +212 -0
- package/src/deeplink/AdStageDeepLink.ts +246 -0
- package/src/event/AdStageEvent.ts +844 -0
- package/src/index.ts +48 -0
- package/src/promotion/AdStagePromotion.ts +162 -0
- package/src/types.ts +392 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 NBase
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
# AdStage React Native SDK
|
|
2
|
+
|
|
3
|
+
React Native용 AdStage SDK - 광고 어트리뷰션, 딥링크, 인앱 이벤트 트래킹
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@adstage/react-native-sdk)
|
|
6
|
+
[](https://reactnative.dev/)
|
|
7
|
+
|
|
8
|
+
## 목차
|
|
9
|
+
|
|
10
|
+
1. [설치](#설치)
|
|
11
|
+
2. [플랫폼별 설정](#플랫폼별-설정)
|
|
12
|
+
3. [빠른 시작](#빠른-시작)
|
|
13
|
+
4. [딥링크](#딥링크)
|
|
14
|
+
5. [인앱 이벤트](#인앱-이벤트)
|
|
15
|
+
6. [상세 문서](#상세-문서)
|
|
16
|
+
|
|
17
|
+
## 설치
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @adstage/react-native-sdk
|
|
21
|
+
# or
|
|
22
|
+
yarn add @adstage/react-native-sdk
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 플랫폼별 설정
|
|
26
|
+
|
|
27
|
+
### iOS 설정
|
|
28
|
+
|
|
29
|
+
#### 1. Pod 설치
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
cd ios && pod install
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
#### 2. Info.plist 설정 (필수)
|
|
36
|
+
|
|
37
|
+
```xml
|
|
38
|
+
<!-- ATT(App Tracking Transparency) 권한 - iOS 14.5+ 필수 -->
|
|
39
|
+
<key>NSUserTrackingUsageDescription</key>
|
|
40
|
+
<string>광고 효과 측정 및 맞춤형 광고 제공을 위해 사용됩니다.</string>
|
|
41
|
+
|
|
42
|
+
<!-- URL Scheme 설정 -->
|
|
43
|
+
<key>CFBundleURLTypes</key>
|
|
44
|
+
<array>
|
|
45
|
+
<dict>
|
|
46
|
+
<key>CFBundleURLSchemes</key>
|
|
47
|
+
<array>
|
|
48
|
+
<string>your_app_scheme</string>
|
|
49
|
+
</array>
|
|
50
|
+
</dict>
|
|
51
|
+
</array>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Android 설정
|
|
55
|
+
|
|
56
|
+
#### 1. Maven 저장소 추가 (필수)
|
|
57
|
+
|
|
58
|
+
`android/settings.gradle` 또는 `android/build.gradle`에 추가:
|
|
59
|
+
|
|
60
|
+
```groovy
|
|
61
|
+
// settings.gradle (신규 방식)
|
|
62
|
+
dependencyResolutionManagement {
|
|
63
|
+
repositories {
|
|
64
|
+
// ... 기존 저장소
|
|
65
|
+
maven { url 'https://repo.nbase.io/repository/nbase-releases' }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// 또는 build.gradle (기존 방식)
|
|
70
|
+
allprojects {
|
|
71
|
+
repositories {
|
|
72
|
+
// ... 기존 저장소
|
|
73
|
+
maven { url "https://repo.nbase.io/repository/nbase-releases" }
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
#### 2. minSdkVersion 확인
|
|
79
|
+
|
|
80
|
+
`android/build.gradle`에서 minSdkVersion이 24 이상인지 확인:
|
|
81
|
+
|
|
82
|
+
```groovy
|
|
83
|
+
buildscript {
|
|
84
|
+
ext {
|
|
85
|
+
minSdkVersion = 24 // 최소 24 필요
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## 빠른 시작
|
|
91
|
+
|
|
92
|
+
### 1. SDK 초기화
|
|
93
|
+
|
|
94
|
+
앱 시작 시 SDK를 초기화합니다:
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
import { AdStage } from '@adstage/react-native-sdk';
|
|
98
|
+
|
|
99
|
+
// App.tsx 또는 진입점에서
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
const initSDK = async () => {
|
|
102
|
+
await AdStage.initialize({
|
|
103
|
+
apiKey: 'your-api-key-here',
|
|
104
|
+
});
|
|
105
|
+
console.log('✅ AdStage SDK 초기화 완료');
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
initSDK();
|
|
109
|
+
}, []);
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 2. 딥링크 리스너 설정
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
useEffect(() => {
|
|
116
|
+
const unsubscribe = AdStage.deepLink.setListener((data) => {
|
|
117
|
+
console.log('✅ 딥링크 수신:', data.shortPath);
|
|
118
|
+
console.log('파라미터:', data.parameters);
|
|
119
|
+
|
|
120
|
+
// 화면 이동 등 처리
|
|
121
|
+
if (data.parameters.screen) {
|
|
122
|
+
navigation.navigate(data.parameters.screen);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
return () => unsubscribe();
|
|
127
|
+
}, []);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 3. 이벤트 트래킹
|
|
131
|
+
|
|
132
|
+
```typescript
|
|
133
|
+
// 구매 이벤트
|
|
134
|
+
await AdStage.event.trackPurchase({
|
|
135
|
+
value: 29900,
|
|
136
|
+
currency: 'KRW',
|
|
137
|
+
transactionId: 'ORDER_001',
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// 로그인 이벤트
|
|
141
|
+
await AdStage.event.trackLogin('email');
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## 딥링크
|
|
145
|
+
|
|
146
|
+
### 딥링크 리스너
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
const unsubscribe = AdStage.deepLink.setListener((data) => {
|
|
150
|
+
console.log('Short Path:', data.shortPath);
|
|
151
|
+
console.log('Link ID:', data.linkId);
|
|
152
|
+
console.log('Parameters:', data.parameters);
|
|
153
|
+
console.log('Source:', data.source); // "realtime" | "install"
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// 컴포넌트 언마운트 시 해제
|
|
157
|
+
unsubscribe();
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 딥링크 생성
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
const result = await AdStage.deepLink.create({
|
|
164
|
+
name: '여름 프로모션',
|
|
165
|
+
description: '2024년 여름 시즌용',
|
|
166
|
+
channel: 'google-ads',
|
|
167
|
+
campaign: 'summer_2024',
|
|
168
|
+
redirectConfig: {
|
|
169
|
+
type: 'APP',
|
|
170
|
+
android: {
|
|
171
|
+
packageName: 'com.example.app',
|
|
172
|
+
appScheme: 'myapp'
|
|
173
|
+
},
|
|
174
|
+
ios: {
|
|
175
|
+
appStoreId: '123456789',
|
|
176
|
+
appScheme: 'myapp'
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
parameters: {
|
|
180
|
+
productId: 'SUMMER_2024',
|
|
181
|
+
discount: '20'
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
console.log('Short URL:', result.shortUrl);
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Pending 딥링크 확인
|
|
189
|
+
|
|
190
|
+
앱이 종료된 상태에서 딥링크로 실행된 경우:
|
|
191
|
+
|
|
192
|
+
```typescript
|
|
193
|
+
AdStage.deepLink.checkPendingDeepLink();
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## 인앱 이벤트
|
|
197
|
+
|
|
198
|
+
AdStage SDK는 46개의 표준 이벤트를 제공합니다.
|
|
199
|
+
|
|
200
|
+
### 사용자 라이프사이클
|
|
201
|
+
|
|
202
|
+
```typescript
|
|
203
|
+
// 회원가입
|
|
204
|
+
await AdStage.event.trackSignUp('google');
|
|
205
|
+
|
|
206
|
+
// 로그인
|
|
207
|
+
await AdStage.event.trackLogin('email');
|
|
208
|
+
|
|
209
|
+
// 로그아웃
|
|
210
|
+
await AdStage.event.trackLogout();
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 전자상거래
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
// 장바구니 추가
|
|
217
|
+
await AdStage.event.trackAddToCart({
|
|
218
|
+
value: 99000,
|
|
219
|
+
currency: 'KRW',
|
|
220
|
+
items: [
|
|
221
|
+
{ itemId: 'PROD_123', itemName: 'Wireless Earbuds', price: 99000, quantity: 1 }
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// 구매 완료 ⭐
|
|
226
|
+
await AdStage.event.trackPurchase({
|
|
227
|
+
value: 129000,
|
|
228
|
+
currency: 'KRW',
|
|
229
|
+
transactionId: 'ORDER_20250105_001',
|
|
230
|
+
tax: 12900,
|
|
231
|
+
shipping: 3000,
|
|
232
|
+
coupon: 'SUMMER2025',
|
|
233
|
+
items: [
|
|
234
|
+
{ itemId: 'PROD_123', itemName: 'Wireless Earbuds', price: 126000, quantity: 1 }
|
|
235
|
+
]
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
// 환불
|
|
239
|
+
await AdStage.event.trackRefund({
|
|
240
|
+
transactionId: 'ORDER_20250105_001',
|
|
241
|
+
value: 129000,
|
|
242
|
+
currency: 'KRW'
|
|
243
|
+
});
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 콘텐츠 조회
|
|
247
|
+
|
|
248
|
+
```typescript
|
|
249
|
+
// 화면 조회
|
|
250
|
+
await AdStage.event.trackScreenView({
|
|
251
|
+
screenName: 'ProductDetail',
|
|
252
|
+
screenClass: 'ProductDetailScreen'
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
// 상품 상세 조회
|
|
256
|
+
await AdStage.event.trackProductDetailsView({
|
|
257
|
+
itemId: 'PROD_123',
|
|
258
|
+
itemName: 'Wireless Earbuds'
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
// 검색
|
|
262
|
+
await AdStage.event.trackSearch({ searchTerm: 'wireless headphones' });
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### 게임/진행
|
|
266
|
+
|
|
267
|
+
```typescript
|
|
268
|
+
// 레벨업
|
|
269
|
+
await AdStage.event.trackLevelUp({ level: 25, character: 'warrior' });
|
|
270
|
+
|
|
271
|
+
// 업적 달성
|
|
272
|
+
await AdStage.event.trackAchievement({ achievementId: 'first_win' });
|
|
273
|
+
|
|
274
|
+
// 튜토리얼 완료
|
|
275
|
+
await AdStage.event.trackTutorialComplete();
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 커스텀 이벤트
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
// 커스텀 이벤트 (event_name으로 이벤트명 지정 가능)
|
|
282
|
+
await AdStage.event.track('custom', {
|
|
283
|
+
event_name: 'promotion_click', // 이 값이 대시보드에서 이벤트명으로 표시
|
|
284
|
+
promotion_id: 'summer_sale_2025',
|
|
285
|
+
screen: 'home_banner'
|
|
286
|
+
});
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## 사용자 속성
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
// 사용자 속성 설정
|
|
293
|
+
await AdStage.setUserAttributes({
|
|
294
|
+
gender: 'female',
|
|
295
|
+
country: 'KR',
|
|
296
|
+
city: 'Seoul',
|
|
297
|
+
age: '28',
|
|
298
|
+
language: 'ko-KR'
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
// 사용자 속성 초기화 (로그아웃 시)
|
|
302
|
+
await AdStage.clearUserAttributes();
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## 요구 사항
|
|
306
|
+
|
|
307
|
+
| 플랫폼 | 최소 버전 |
|
|
308
|
+
|--------|----------|
|
|
309
|
+
| React Native | >= 0.70.0 |
|
|
310
|
+
| iOS | >= 15.0 |
|
|
311
|
+
| Android | minSdkVersion >= 24 |
|
|
312
|
+
|
|
313
|
+
## 상세 문서
|
|
314
|
+
|
|
315
|
+
더 자세한 사용법과 고급 기능은 공식 문서를 참조하세요:
|
|
316
|
+
|
|
317
|
+
- **딥링크**: https://docs.adstage.net/ko/docs/core/dev-guide/mobile/sdk/deeplink/react-native
|
|
318
|
+
- **인앱 이벤트**: https://docs.adstage.net/ko/docs/core/dev-guide/mobile/sdk/inapp-event/react-native
|
|
319
|
+
|
|
320
|
+
## 지원
|
|
321
|
+
|
|
322
|
+
- 이메일: support@nbase.io
|
|
323
|
+
- GitHub Issues: https://github.com/nbase-io/NBase-SDK-ReactNative/issues
|
|
324
|
+
|
|
325
|
+
## 라이선스
|
|
326
|
+
|
|
327
|
+
MIT © NBase
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = "adstage-react-native"
|
|
7
|
+
s.version = package["version"]
|
|
8
|
+
s.summary = package["description"]
|
|
9
|
+
s.homepage = package["homepage"] || "https://www.nbase.io"
|
|
10
|
+
s.license = package["license"]
|
|
11
|
+
s.authors = package["author"]
|
|
12
|
+
|
|
13
|
+
s.platforms = { :ios => "15.0" }
|
|
14
|
+
s.source = { :git => "https://github.com/nbase-io/NBase-SDK-ReactNative.git", :tag => "v#{s.version}" }
|
|
15
|
+
|
|
16
|
+
s.source_files = "ios/**/*.{h,m,mm,swift}"
|
|
17
|
+
s.preserve_paths = "ios/**/*"
|
|
18
|
+
s.requires_arc = true
|
|
19
|
+
|
|
20
|
+
s.dependency "React-Core"
|
|
21
|
+
s.dependency "AdapterAdStage", "~> 3.0.7"
|
|
22
|
+
|
|
23
|
+
s.swift_version = "5.0"
|
|
24
|
+
end
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
buildscript {
|
|
2
|
+
ext.safeExtGet = { prop, fallback ->
|
|
3
|
+
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
4
|
+
}
|
|
5
|
+
repositories {
|
|
6
|
+
google()
|
|
7
|
+
mavenCentral()
|
|
8
|
+
}
|
|
9
|
+
dependencies {
|
|
10
|
+
classpath("com.android.tools.build:gradle:8.1.0")
|
|
11
|
+
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${safeExtGet('kotlinVersion', '1.9.0')}")
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
apply plugin: 'com.android.library'
|
|
16
|
+
apply plugin: 'kotlin-android'
|
|
17
|
+
|
|
18
|
+
android {
|
|
19
|
+
compileSdk safeExtGet('compileSdkVersion', 34)
|
|
20
|
+
buildToolsVersion safeExtGet('buildToolsVersion', '34.0.0')
|
|
21
|
+
|
|
22
|
+
namespace "io.nbase.adstage.reactnative"
|
|
23
|
+
|
|
24
|
+
defaultConfig {
|
|
25
|
+
minSdk safeExtGet('minSdkVersion', 24)
|
|
26
|
+
targetSdk safeExtGet('targetSdkVersion', 34)
|
|
27
|
+
versionCode 1
|
|
28
|
+
versionName "3.0.0"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
buildTypes {
|
|
32
|
+
release {
|
|
33
|
+
minifyEnabled false
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
compileOptions {
|
|
38
|
+
sourceCompatibility JavaVersion.VERSION_17
|
|
39
|
+
targetCompatibility JavaVersion.VERSION_17
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
kotlinOptions {
|
|
43
|
+
jvmTarget = "17"
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
sourceSets {
|
|
47
|
+
main {
|
|
48
|
+
manifest.srcFile "src/main/AndroidManifest.xml"
|
|
49
|
+
java.srcDirs = ['src/main/java']
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
repositories {
|
|
55
|
+
google()
|
|
56
|
+
mavenCentral()
|
|
57
|
+
maven { url "https://repo.nbase.io/repository/nbase-releases" }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
dependencies {
|
|
61
|
+
implementation "com.facebook.react:react-native:+"
|
|
62
|
+
implementation "org.jetbrains.kotlin:kotlin-stdlib:${safeExtGet('kotlinVersion', '1.9.0')}"
|
|
63
|
+
|
|
64
|
+
// AdStage Native SDK
|
|
65
|
+
implementation "io.nbase:nbase-adapter-adstage:3.0.7"
|
|
66
|
+
}
|