@apps-in-toss/native-modules 1.0.0 → 1.0.2
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/dist/index.cjs +65 -1
- package/dist/index.d.cts +439 -137
- package/dist/index.d.ts +439 -137
- package/dist/index.js +65 -1
- package/package.json +4 -4
- package/src/AppsInTossModule/native-modules/ads/googleAdMob.ts +158 -167
- package/src/AppsInTossModule/native-modules/ads/googleAdMobV2.ts +363 -0
- package/src/AppsInTossModule/native-modules/ads/types.ts +17 -0
- package/src/AppsInTossModule/native-modules/index.ts +22 -4
- package/src/utils/compareVersion.spec.ts +1 -1
package/dist/index.js
CHANGED
|
@@ -433,6 +433,68 @@ loadAdMobRewardedAd.isSupported = createIsSupported();
|
|
|
433
433
|
showAdMobInterstitialAd.isSupported = createIsSupported();
|
|
434
434
|
showAdMobRewardedAd.isSupported = createIsSupported();
|
|
435
435
|
|
|
436
|
+
// src/AppsInTossModule/native-modules/ads/googleAdMobV2.ts
|
|
437
|
+
import { noop as noop2 } from "es-toolkit";
|
|
438
|
+
function loadAppsInTossAdMob(params) {
|
|
439
|
+
if (!loadAppsInTossAdMob.isSupported()) {
|
|
440
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE2));
|
|
441
|
+
return noop2;
|
|
442
|
+
}
|
|
443
|
+
const { onEvent, onError, options } = params;
|
|
444
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAppsInTossAdmob", options, {
|
|
445
|
+
onSuccess: (result) => onEvent({ type: "loaded", data: result }),
|
|
446
|
+
onError
|
|
447
|
+
});
|
|
448
|
+
return unregisterCallbacks;
|
|
449
|
+
}
|
|
450
|
+
function showAppsInTossAdMob(params) {
|
|
451
|
+
if (!showAppsInTossAdMob.isSupported()) {
|
|
452
|
+
params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE2));
|
|
453
|
+
return noop2;
|
|
454
|
+
}
|
|
455
|
+
const { onEvent, onError, options } = params;
|
|
456
|
+
const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAppsInTossAdmob", options, {
|
|
457
|
+
onAdClicked: () => {
|
|
458
|
+
onEvent({ type: "clicked" });
|
|
459
|
+
},
|
|
460
|
+
onAdDismissed: () => {
|
|
461
|
+
onEvent({ type: "dismissed" });
|
|
462
|
+
},
|
|
463
|
+
onAdFailedToShow: () => {
|
|
464
|
+
onEvent({ type: "failedToShow" });
|
|
465
|
+
},
|
|
466
|
+
onAdImpression: () => {
|
|
467
|
+
onEvent({ type: "impression" });
|
|
468
|
+
},
|
|
469
|
+
onAdShow: () => {
|
|
470
|
+
onEvent({ type: "show" });
|
|
471
|
+
},
|
|
472
|
+
onUserEarnedReward: (data) => {
|
|
473
|
+
onEvent({ type: "userEarnedReward", data });
|
|
474
|
+
},
|
|
475
|
+
onSuccess: () => onEvent({ type: "requested" }),
|
|
476
|
+
onError
|
|
477
|
+
});
|
|
478
|
+
return unregisterCallbacks;
|
|
479
|
+
}
|
|
480
|
+
var ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION2 = "5.227.0";
|
|
481
|
+
var IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION2 = "5.227.0";
|
|
482
|
+
var UNSUPPORTED_ERROR_MESSAGE2 = "This feature is not supported in the current environment";
|
|
483
|
+
var ENVIRONMENT2 = getOperationalEnvironment();
|
|
484
|
+
function createIsSupported2() {
|
|
485
|
+
return () => {
|
|
486
|
+
if (ENVIRONMENT2 !== "toss") {
|
|
487
|
+
return false;
|
|
488
|
+
}
|
|
489
|
+
return isMinVersionSupported({
|
|
490
|
+
android: ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION2,
|
|
491
|
+
ios: IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION2
|
|
492
|
+
});
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
loadAppsInTossAdMob.isSupported = createIsSupported2();
|
|
496
|
+
showAppsInTossAdMob.isSupported = createIsSupported2();
|
|
497
|
+
|
|
436
498
|
// src/AppsInTossModule/native-modules/checkoutPayment.ts
|
|
437
499
|
async function checkoutPayment(options) {
|
|
438
500
|
return AppsInTossModule.checkoutPayment({ params: options });
|
|
@@ -683,7 +745,9 @@ var GoogleAdMob = {
|
|
|
683
745
|
loadAdMobInterstitialAd,
|
|
684
746
|
showAdMobInterstitialAd,
|
|
685
747
|
loadAdMobRewardedAd,
|
|
686
|
-
showAdMobRewardedAd
|
|
748
|
+
showAdMobRewardedAd,
|
|
749
|
+
loadAppsInTossAdMob,
|
|
750
|
+
showAppsInTossAdMob
|
|
687
751
|
};
|
|
688
752
|
|
|
689
753
|
// src/BedrockModule/native-modules/natives/BedrockModule.ts
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apps-in-toss/native-modules",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.2",
|
|
5
5
|
"description": "Native Modules for Apps In Toss",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"prepack": "yarn build",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
],
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@babel/runtime": "^7",
|
|
33
|
-
"@granite-js/native": "0.1.
|
|
34
|
-
"@granite-js/react-native": "0.1.
|
|
33
|
+
"@granite-js/native": "0.1.21",
|
|
34
|
+
"@granite-js/react-native": "0.1.21",
|
|
35
35
|
"@types/react": "18.3.3",
|
|
36
36
|
"dts-bundle-generator": "^9.5.1",
|
|
37
37
|
"esbuild": "0.25.5",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"publishConfig": {
|
|
54
54
|
"access": "public"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "6bcca89699f84625d384052501b8ea0d28cabccc"
|
|
57
57
|
}
|
|
@@ -41,16 +41,10 @@ export type LoadAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
41
41
|
* @public
|
|
42
42
|
* @category 광고
|
|
43
43
|
* @name loadAdMobInterstitialAd
|
|
44
|
-
* @
|
|
45
|
-
* @param {LoadAdMobInterstitialAdParams} params 광고를 불러올 때 사용할 설정 값이에요. 광고 ID와 광고의 동작에 대한 콜백을 설정할 수 있어요.
|
|
46
|
-
* @param {LoadAdMobInterstitialAdOptions} params.options 광고를 불러올 때 전달할 옵션 객체예요.
|
|
47
|
-
* @param {string} params.options.adUnitId 광고 단위 ID예요. 발급받은 전면 광고용 ID를 입력해요.
|
|
48
|
-
* @param {(event: LoadAdMobInterstitialAdEvent) => void} [params.onEvent] 광고 관련 이벤트가 발생했을 때 호출돼요. (예시: 광고가 닫히거나 클릭됐을 때). 자세한 이벤트 타입은 [LoadAdMobInterstitialAdEvent](/react-native/reference/native-modules/광고/LoadAdMobInterstitialAdEvent.html)를 참고하세요.
|
|
49
|
-
* @param {(reason: unknown) => void} [params.onError] 광고를 불러오지 못했을 때 호출돼요. (예시: 네트워크 오류나 지원하지 않는 환경일 때)
|
|
50
|
-
* @property {() => boolean} [isSupported] 현재 실행 중인 앱(예: 토스 앱, 개발용 샌드박스 앱 등)에서 Google AdMob 광고 기능을 지원하는지 확인하는 함수예요. 기능을 사용하기 전에 지원 여부를 확인해야 해요.
|
|
44
|
+
* @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.loadAppsInTossAdMob}를 사용해주세요.
|
|
51
45
|
*
|
|
52
46
|
* @example
|
|
53
|
-
* ### 버튼 눌러 불러온
|
|
47
|
+
* ### 버튼 눌러 불러온 광고 보여주기 (loadAppsInTossAdMob로 변경 예제)
|
|
54
48
|
* ```tsx
|
|
55
49
|
* import { GoogleAdMob } from '@apps-in-toss/framework';
|
|
56
50
|
* import { useFocusEffect } from '@granite-js/native/@react-navigation/native';
|
|
@@ -58,20 +52,20 @@ export type LoadAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
58
52
|
* import { useCallback, useState } from 'react';
|
|
59
53
|
* import { Button, Text, View } from 'react-native';
|
|
60
54
|
*
|
|
61
|
-
* const
|
|
55
|
+
* const AD_GROUP_ID = '<AD_GROUP_ID>';
|
|
62
56
|
*
|
|
63
|
-
* export function
|
|
57
|
+
* export function GoogleAdmobExample() {
|
|
64
58
|
* const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
|
|
65
59
|
* const navigation = useNavigation();
|
|
66
60
|
*
|
|
67
61
|
* const loadAd = useCallback(() => {
|
|
68
|
-
* if (GoogleAdMob.
|
|
62
|
+
* if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
|
|
69
63
|
* return;
|
|
70
64
|
* }
|
|
71
65
|
|
|
72
|
-
* const cleanup = GoogleAdMob.
|
|
66
|
+
* const cleanup = GoogleAdMob.loadAppsInTossAdMob({
|
|
73
67
|
* options: {
|
|
74
|
-
*
|
|
68
|
+
* adGroupId: AD_GROUP_ID,
|
|
75
69
|
* },
|
|
76
70
|
* onEvent: (event) => {
|
|
77
71
|
* switch (event.type) {
|
|
@@ -79,27 +73,6 @@ export type LoadAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
79
73
|
* console.log('광고 로드 성공', event.data);
|
|
80
74
|
* setAdLoadStatus('loaded');
|
|
81
75
|
* break;
|
|
82
|
-
*
|
|
83
|
-
* case 'clicked':
|
|
84
|
-
* console.log('광고 클릭');
|
|
85
|
-
* break;
|
|
86
|
-
*
|
|
87
|
-
* case 'dismissed':
|
|
88
|
-
* console.log('광고 닫힘');
|
|
89
|
-
* navigation.navigate('/examples/google-admob-interstitial-ad-landing');
|
|
90
|
-
* break;
|
|
91
|
-
*
|
|
92
|
-
* case 'failedToShow':
|
|
93
|
-
* console.log('광고 보여주기 실패');
|
|
94
|
-
* break;
|
|
95
|
-
*
|
|
96
|
-
* case 'impression':
|
|
97
|
-
* console.log('광고 노출');
|
|
98
|
-
* break;
|
|
99
|
-
*
|
|
100
|
-
* case 'show':
|
|
101
|
-
* console.log('광고 컨텐츠 보여졌음');
|
|
102
|
-
* break;
|
|
103
76
|
* }
|
|
104
77
|
* },
|
|
105
78
|
* onError: (error) => {
|
|
@@ -111,19 +84,45 @@ export type LoadAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
111
84
|
* }, [navigation]);
|
|
112
85
|
*
|
|
113
86
|
* const showAd = useCallback(() => {
|
|
114
|
-
* if (GoogleAdMob.
|
|
87
|
+
* if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
|
|
115
88
|
* return;
|
|
116
89
|
* }
|
|
117
90
|
*
|
|
118
|
-
* GoogleAdMob.
|
|
91
|
+
* GoogleAdMob.showAppsInTossAdMob({
|
|
119
92
|
* options: {
|
|
120
|
-
*
|
|
93
|
+
* adGroupId: AD_GROUP_ID,
|
|
121
94
|
* },
|
|
122
95
|
* onEvent: (event) => {
|
|
123
96
|
* switch (event.type) {
|
|
124
97
|
* case 'requested':
|
|
125
98
|
* console.log('광고 보여주기 요청 완료');
|
|
126
99
|
* break;
|
|
100
|
+
*
|
|
101
|
+
* case 'clicked':
|
|
102
|
+
* console.log('광고 클릭');
|
|
103
|
+
* break;
|
|
104
|
+
*
|
|
105
|
+
* case 'dismissed':
|
|
106
|
+
* console.log('광고 닫힘');
|
|
107
|
+
* navigation.navigate('/examples/google-admob-interstitial-ad-landing');
|
|
108
|
+
* break;
|
|
109
|
+
*
|
|
110
|
+
* case 'failedToShow':
|
|
111
|
+
* console.log('광고 보여주기 실패');
|
|
112
|
+
* break;
|
|
113
|
+
*
|
|
114
|
+
* case 'impression':
|
|
115
|
+
* console.log('광고 노출');
|
|
116
|
+
* break;
|
|
117
|
+
*
|
|
118
|
+
* case 'userEarnedReward':
|
|
119
|
+
* console.log('광고 보상 획득 unitType:', event.data.unitType);
|
|
120
|
+
* console.log('광고 보상 획득 unitAmount:', event.data.unitAmount);
|
|
121
|
+
* break;
|
|
122
|
+
*
|
|
123
|
+
* case 'show':
|
|
124
|
+
* console.log('광고 컨텐츠 보여졌음');
|
|
125
|
+
* break;
|
|
127
126
|
* }
|
|
128
127
|
* },
|
|
129
128
|
* onError: (error) => {
|
|
@@ -211,16 +210,10 @@ export type ShowAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
211
210
|
* @public
|
|
212
211
|
* @category 광고
|
|
213
212
|
* @name showAdMobInterstitialAd
|
|
214
|
-
* @
|
|
215
|
-
* @param {ShowAdMobInterstitialAdParams} params 광고를 보여주기 위해 사용할 설정 값이에요. 광고 ID와과 광고의 동작에 대한 콜백을 설정할 수 있어요.
|
|
216
|
-
* @param {ShowAdMobInterstitialAdOptions} params.options 광고를 보여줄 때 전달할 옵션 객체예요.
|
|
217
|
-
* @param {string} params.options.adUnitId 광고 단위 ID예요. `loadAdMobInterstitialAd` 로 불러온 전면 광고용 ID를 입력해요.
|
|
218
|
-
* @param {(event: ShowAdMobInterstitialAdEvent) => void} [params.onEvent] 광고 관련 이벤트가 발생했을 때 호출돼요. (예시: 광고 노출을 요청했을 때). 자세한 이벤트 타입은 [ShowAdMobInterstitialAdEvent](/react-native/reference/native-modules/광고/ShowAdMobInterstitialAdEvent.html)를 참고하세요.
|
|
219
|
-
* @param {(reason: unknown) => void} [params.onError] 광고를 노출하지 못했을 때 호출돼요. (예시: 네트워크 오류나 지원하지 않는 환경일 때)
|
|
220
|
-
* @property {() => boolean} [isSupported] 현재 실행 중인 앱(예: 토스 앱, 개발용 샌드박스 앱 등)에서 Google AdMob 광고 기능을 지원하는지 확인하는 함수예요. 기능을 사용하기 전에 지원 여부를 확인해야 해요.
|
|
213
|
+
* @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.showAppsInTossAdMob}를 사용해주세요.
|
|
221
214
|
*
|
|
222
215
|
* @example
|
|
223
|
-
* ### 버튼 눌러 불러온
|
|
216
|
+
* ### 버튼 눌러 불러온 광고 보여주기 (showAppsInTossAdMob로 변경 예제)
|
|
224
217
|
* ```tsx
|
|
225
218
|
* import { GoogleAdMob } from '@apps-in-toss/framework';
|
|
226
219
|
* import { useFocusEffect } from '@granite-js/native/@react-navigation/native';
|
|
@@ -228,20 +221,20 @@ export type ShowAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
228
221
|
* import { useCallback, useState } from 'react';
|
|
229
222
|
* import { Button, Text, View } from 'react-native';
|
|
230
223
|
*
|
|
231
|
-
* const
|
|
224
|
+
* const AD_GROUP_ID = '<AD_GROUP_ID>';
|
|
232
225
|
*
|
|
233
|
-
* export function
|
|
226
|
+
* export function GoogleAdmobExample() {
|
|
234
227
|
* const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
|
|
235
228
|
* const navigation = useNavigation();
|
|
236
229
|
*
|
|
237
230
|
* const loadAd = useCallback(() => {
|
|
238
|
-
* if (GoogleAdMob.
|
|
231
|
+
* if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
|
|
239
232
|
* return;
|
|
240
233
|
* }
|
|
241
234
|
|
|
242
|
-
* const cleanup = GoogleAdMob.
|
|
235
|
+
* const cleanup = GoogleAdMob.loadAppsInTossAdMob({
|
|
243
236
|
* options: {
|
|
244
|
-
*
|
|
237
|
+
* adGroupId: AD_GROUP_ID,
|
|
245
238
|
* },
|
|
246
239
|
* onEvent: (event) => {
|
|
247
240
|
* switch (event.type) {
|
|
@@ -249,27 +242,6 @@ export type ShowAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
249
242
|
* console.log('광고 로드 성공', event.data);
|
|
250
243
|
* setAdLoadStatus('loaded');
|
|
251
244
|
* break;
|
|
252
|
-
*
|
|
253
|
-
* case 'clicked':
|
|
254
|
-
* console.log('광고 클릭');
|
|
255
|
-
* break;
|
|
256
|
-
*
|
|
257
|
-
* case 'dismissed':
|
|
258
|
-
* console.log('광고 닫힘');
|
|
259
|
-
* navigation.navigate('/examples/google-admob-interstitial-ad-landing');
|
|
260
|
-
* break;
|
|
261
|
-
*
|
|
262
|
-
* case 'failedToShow':
|
|
263
|
-
* console.log('광고 보여주기 실패');
|
|
264
|
-
* break;
|
|
265
|
-
*
|
|
266
|
-
* case 'impression':
|
|
267
|
-
* console.log('광고 노출');
|
|
268
|
-
* break;
|
|
269
|
-
*
|
|
270
|
-
* case 'show':
|
|
271
|
-
* console.log('광고 컨텐츠 보여졌음');
|
|
272
|
-
* break;
|
|
273
245
|
* }
|
|
274
246
|
* },
|
|
275
247
|
* onError: (error) => {
|
|
@@ -281,19 +253,45 @@ export type ShowAdMobInterstitialAdParams = AdMobHandlerParams<
|
|
|
281
253
|
* }, [navigation]);
|
|
282
254
|
*
|
|
283
255
|
* const showAd = useCallback(() => {
|
|
284
|
-
* if (GoogleAdMob.
|
|
256
|
+
* if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
|
|
285
257
|
* return;
|
|
286
258
|
* }
|
|
287
259
|
*
|
|
288
|
-
* GoogleAdMob.
|
|
260
|
+
* GoogleAdMob.showAppsInTossAdMob({
|
|
289
261
|
* options: {
|
|
290
|
-
*
|
|
262
|
+
* adGroupId: AD_GROUP_ID,
|
|
291
263
|
* },
|
|
292
264
|
* onEvent: (event) => {
|
|
293
265
|
* switch (event.type) {
|
|
294
266
|
* case 'requested':
|
|
295
267
|
* console.log('광고 보여주기 요청 완료');
|
|
296
268
|
* break;
|
|
269
|
+
*
|
|
270
|
+
* case 'clicked':
|
|
271
|
+
* console.log('광고 클릭');
|
|
272
|
+
* break;
|
|
273
|
+
*
|
|
274
|
+
* case 'dismissed':
|
|
275
|
+
* console.log('광고 닫힘');
|
|
276
|
+
* navigation.navigate('/examples/google-admob-interstitial-ad-landing');
|
|
277
|
+
* break;
|
|
278
|
+
*
|
|
279
|
+
* case 'failedToShow':
|
|
280
|
+
* console.log('광고 보여주기 실패');
|
|
281
|
+
* break;
|
|
282
|
+
*
|
|
283
|
+
* case 'impression':
|
|
284
|
+
* console.log('광고 노출');
|
|
285
|
+
* break;
|
|
286
|
+
*
|
|
287
|
+
* case 'userEarnedReward':
|
|
288
|
+
* console.log('광고 보상 획득 unitType:', event.data.unitType);
|
|
289
|
+
* console.log('광고 보상 획득 unitAmount:', event.data.unitAmount);
|
|
290
|
+
* break;
|
|
291
|
+
*
|
|
292
|
+
* case 'show':
|
|
293
|
+
* console.log('광고 컨텐츠 보여졌음');
|
|
294
|
+
* break;
|
|
297
295
|
* }
|
|
298
296
|
* },
|
|
299
297
|
* onError: (error) => {
|
|
@@ -366,68 +364,38 @@ export type LoadAdMobRewardedAdParams = AdMobHandlerParams<LoadAdMobRewardedAdOp
|
|
|
366
364
|
* @public
|
|
367
365
|
* @category 광고
|
|
368
366
|
* @name loadAdMobRewardedAd
|
|
369
|
-
* @
|
|
370
|
-
* @param {LoadAdMobRewardedAdParams} params 광고를 불러올 때 사용할 설정 값이에요. 광고 ID와 광고의 동작에 대한 콜백을 설정할 수 있어요.
|
|
371
|
-
* @param {LoadAdMobRewardedAdOptions} params.options 광고를 불러올 때 전달할 옵션 객체예요.
|
|
372
|
-
* @param {string} params.options.adUnitId 광고 단위 ID예요. 발급받은 보상형 광고용 ID를 입력해요.
|
|
373
|
-
* @param {(event: LoadAdMobRewardedAdEvent) => void} [params.onEvent] 광고 관련 이벤트가 발생했을 때 호출돼요. (예시: 광고가 닫히거나 클릭됐을 때). 자세한 이벤트 타입은 [LoadAdMobRewardedAdEvent](/react-native/reference/native-modules/광고/LoadAdMobRewardedAdEvent.html)를 참고하세요.
|
|
374
|
-
* @param {(reason: unknown) => void} [params.onError] 광고를 불러오지 못했을 때 호출돼요. (예시: 네트워크 오류나 지원하지 않는 환경일 때)
|
|
375
|
-
* @property {() => boolean} [isSupported] 현재 실행 중인 앱(예: 토스 앱, 개발용 샌드박스 앱 등)에서 Google AdMob 광고 기능을 지원하는지 확인하는 함수예요. 기능을 사용하기 전에 지원 여부를 확인해야 해요.
|
|
367
|
+
* @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.loadAppsInTossAdMob}를 사용해주세요.
|
|
376
368
|
*
|
|
377
369
|
* @example
|
|
378
|
-
*
|
|
379
|
-
* ### 버튼 눌러 불러온 보상형 광고 보여주기
|
|
380
|
-
*
|
|
370
|
+
* ### 버튼 눌러 불러온 광고 보여주기 (loadAppsInTossAdMob로 변경 예제)
|
|
381
371
|
* ```tsx
|
|
382
372
|
* import { GoogleAdMob } from '@apps-in-toss/framework';
|
|
373
|
+
* import { useFocusEffect } from '@react-native-bedrock/native/@react-navigation/native';
|
|
383
374
|
* import { useCallback, useState } from 'react';
|
|
384
375
|
* import { Button, Text, View } from 'react-native';
|
|
376
|
+
* import { useNavigation } from 'react-native-bedrock';
|
|
385
377
|
*
|
|
386
|
-
* const
|
|
378
|
+
* const AD_GROUP_ID = '<AD_GROUP_ID>';
|
|
387
379
|
*
|
|
388
|
-
* export function
|
|
380
|
+
* export function GoogleAdmobExample() {
|
|
389
381
|
* const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
|
|
382
|
+
* const navigation = useNavigation();
|
|
390
383
|
*
|
|
391
384
|
* const loadAd = useCallback(() => {
|
|
392
|
-
* if (GoogleAdMob.
|
|
385
|
+
* if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
|
|
393
386
|
* return;
|
|
394
387
|
* }
|
|
395
|
-
|
|
396
|
-
* const cleanup = GoogleAdMob.
|
|
388
|
+
|
|
389
|
+
* const cleanup = GoogleAdMob.loadAppsInTossAdMob({
|
|
397
390
|
* options: {
|
|
398
|
-
*
|
|
391
|
+
* adGroupId: AD_GROUP_ID,
|
|
399
392
|
* },
|
|
400
393
|
* onEvent: (event) => {
|
|
401
|
-
* console.log(event.type);
|
|
402
394
|
* switch (event.type) {
|
|
403
395
|
* case 'loaded':
|
|
404
396
|
* console.log('광고 로드 성공', event.data);
|
|
405
397
|
* setAdLoadStatus('loaded');
|
|
406
398
|
* break;
|
|
407
|
-
*
|
|
408
|
-
* case 'clicked':
|
|
409
|
-
* console.log('광고 클릭');
|
|
410
|
-
* break;
|
|
411
|
-
*
|
|
412
|
-
* case 'dismissed':
|
|
413
|
-
* console.log('광고 닫힘');
|
|
414
|
-
* break;
|
|
415
|
-
*
|
|
416
|
-
* case 'failedToShow':
|
|
417
|
-
* console.log('광고 보여주기 실패');
|
|
418
|
-
* break;
|
|
419
|
-
*
|
|
420
|
-
* case 'impression':
|
|
421
|
-
* console.log('광고 노출');
|
|
422
|
-
* break;
|
|
423
|
-
*
|
|
424
|
-
* case 'show':
|
|
425
|
-
* console.log('광고 컨텐츠 보여졌음');
|
|
426
|
-
* break;
|
|
427
|
-
*
|
|
428
|
-
* case 'userEarnedReward':
|
|
429
|
-
* console.log('사용자가 광고 시청을 완료했음');
|
|
430
|
-
* break;
|
|
431
399
|
* }
|
|
432
400
|
* },
|
|
433
401
|
* onError: (error) => {
|
|
@@ -436,22 +404,47 @@ export type LoadAdMobRewardedAdParams = AdMobHandlerParams<LoadAdMobRewardedAdOp
|
|
|
436
404
|
* });
|
|
437
405
|
*
|
|
438
406
|
* return cleanup;
|
|
439
|
-
* }, []);
|
|
407
|
+
* }, [navigation]);
|
|
440
408
|
*
|
|
441
409
|
* const showAd = useCallback(() => {
|
|
442
|
-
* if (GoogleAdMob.
|
|
410
|
+
* if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
|
|
443
411
|
* return;
|
|
444
412
|
* }
|
|
445
413
|
*
|
|
446
|
-
* GoogleAdMob.
|
|
414
|
+
* GoogleAdMob.showAppsInTossAdMob({
|
|
447
415
|
* options: {
|
|
448
|
-
*
|
|
416
|
+
* adGroupId: AD_GROUP_ID,
|
|
449
417
|
* },
|
|
450
418
|
* onEvent: (event) => {
|
|
451
419
|
* switch (event.type) {
|
|
452
420
|
* case 'requested':
|
|
453
421
|
* console.log('광고 보여주기 요청 완료');
|
|
454
|
-
*
|
|
422
|
+
* break;
|
|
423
|
+
*
|
|
424
|
+
* case 'clicked':
|
|
425
|
+
* console.log('광고 클릭');
|
|
426
|
+
* break;
|
|
427
|
+
*
|
|
428
|
+
* case 'dismissed':
|
|
429
|
+
* console.log('광고 닫힘');
|
|
430
|
+
* navigation.navigate('/examples/google-admob-interstitial-ad-landing');
|
|
431
|
+
* break;
|
|
432
|
+
*
|
|
433
|
+
* case 'failedToShow':
|
|
434
|
+
* console.log('광고 보여주기 실패');
|
|
435
|
+
* break;
|
|
436
|
+
*
|
|
437
|
+
* case 'impression':
|
|
438
|
+
* console.log('광고 노출');
|
|
439
|
+
* break;
|
|
440
|
+
*
|
|
441
|
+
* case 'userEarnedReward':
|
|
442
|
+
* console.log('광고 보상 획득 unitType:', event.data.unitType);
|
|
443
|
+
* console.log('광고 보상 획득 unitAmount:', event.data.unitAmount);
|
|
444
|
+
* break;
|
|
445
|
+
*
|
|
446
|
+
* case 'show':
|
|
447
|
+
* console.log('광고 컨텐츠 보여졌음');
|
|
455
448
|
* break;
|
|
456
449
|
* }
|
|
457
450
|
* },
|
|
@@ -461,6 +454,8 @@ export type LoadAdMobRewardedAdParams = AdMobHandlerParams<LoadAdMobRewardedAdOp
|
|
|
461
454
|
* });
|
|
462
455
|
* }, []);
|
|
463
456
|
*
|
|
457
|
+
* useFocusEffect(loadAd);
|
|
458
|
+
*
|
|
464
459
|
* return (
|
|
465
460
|
* <View>
|
|
466
461
|
* <Text>
|
|
@@ -469,7 +464,6 @@ export type LoadAdMobRewardedAdParams = AdMobHandlerParams<LoadAdMobRewardedAdOp
|
|
|
469
464
|
* {adLoadStatus === 'failed' && '광고 로드 실패'}
|
|
470
465
|
* </Text>
|
|
471
466
|
*
|
|
472
|
-
* <Button title="Load Ad" onPress={loadAd} />
|
|
473
467
|
* <Button title="Show Ad" onPress={showAd} disabled={adLoadStatus !== 'loaded'} />
|
|
474
468
|
* </View>
|
|
475
469
|
* );
|
|
@@ -539,67 +533,38 @@ export type ShowAdMobRewardedAdParams = AdMobHandlerParams<ShowAdMobRewardedAdOp
|
|
|
539
533
|
* @public
|
|
540
534
|
* @category 광고
|
|
541
535
|
* @name showAdMobRewardedAd
|
|
542
|
-
* @
|
|
543
|
-
* @param {ShowAdMobRewardedAdParams} params 광고를 보여주기 위해 사용할 설정 값이에요. 광고 ID와 광고의 동작에 대한 콜백을 설정할 수 있어요.
|
|
544
|
-
* @param {ShowAdMobRewardedAdOptions} params.options 광고를 보여줄 때 전달할 옵션 객체예요.
|
|
545
|
-
* @param {string} params.options.adUnitId 광고 단위 ID예요. `loadAdMobRewardedAd` 로 불러온 보상형 광고용 ID를 입력해요.
|
|
546
|
-
* @param {(event: ShowAdMobRewardedAdEvent) => void} [params.onEvent] 광고 관련 이벤트가 발생했을 때 호출돼요. (예시: 광고 노출을 요청했을 때). 자세한 이벤트 타입은 [ShowAdMobRewardedAdEvent](/react-native/reference/native-modules/광고/ShowAdMobRewardedAdEvent.html)를 참고하세요.
|
|
547
|
-
* @param {(reason: unknown) => void} [params.onError] 광고를 불러오지 못했을 때 호출돼요. (예시: 네트워크 오류나 지원하지 않는 환경일 때)
|
|
548
|
-
* @property {() => boolean} [isSupported] 현재 실행 중인 앱(예: 토스 앱, 개발용 샌드박스 앱 등)에서 Google AdMob 광고 기능을 지원하는지 확인하는 함수예요. 기능을 사용하기 전에 지원 여부를 확인해야 해요.
|
|
536
|
+
* @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.showAppsInTossAdMob}를 사용해주세요.
|
|
549
537
|
*
|
|
550
538
|
* @example
|
|
551
|
-
* ### 버튼 눌러 불러온
|
|
552
|
-
*
|
|
539
|
+
* ### 버튼 눌러 불러온 광고 보여주기 (showAppsInTossAdMob로 변경 예제)
|
|
553
540
|
* ```tsx
|
|
554
541
|
* import { GoogleAdMob } from '@apps-in-toss/framework';
|
|
542
|
+
* import { useFocusEffect } from '@react-native-bedrock/native/@react-navigation/native';
|
|
555
543
|
* import { useCallback, useState } from 'react';
|
|
556
544
|
* import { Button, Text, View } from 'react-native';
|
|
545
|
+
* import { useNavigation } from 'react-native-bedrock';
|
|
557
546
|
*
|
|
558
|
-
* const
|
|
547
|
+
* const AD_GROUP_ID = '<AD_GROUP_ID>';
|
|
559
548
|
*
|
|
560
|
-
* export function
|
|
549
|
+
* export function GoogleAdmobExample() {
|
|
561
550
|
* const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
|
|
551
|
+
* const navigation = useNavigation();
|
|
562
552
|
*
|
|
563
553
|
* const loadAd = useCallback(() => {
|
|
564
|
-
* if (GoogleAdMob.
|
|
554
|
+
* if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
|
|
565
555
|
* return;
|
|
566
556
|
* }
|
|
567
|
-
|
|
568
|
-
* const cleanup = GoogleAdMob.
|
|
557
|
+
|
|
558
|
+
* const cleanup = GoogleAdMob.loadAppsInTossAdMob({
|
|
569
559
|
* options: {
|
|
570
|
-
*
|
|
560
|
+
* adGroupId: AD_GROUP_ID,
|
|
571
561
|
* },
|
|
572
562
|
* onEvent: (event) => {
|
|
573
|
-
* console.log(event.type);
|
|
574
563
|
* switch (event.type) {
|
|
575
564
|
* case 'loaded':
|
|
576
565
|
* console.log('광고 로드 성공', event.data);
|
|
577
566
|
* setAdLoadStatus('loaded');
|
|
578
567
|
* break;
|
|
579
|
-
*
|
|
580
|
-
* case 'clicked':
|
|
581
|
-
* console.log('광고 클릭');
|
|
582
|
-
* break;
|
|
583
|
-
*
|
|
584
|
-
* case 'dismissed':
|
|
585
|
-
* console.log('광고 닫힘');
|
|
586
|
-
* break;
|
|
587
|
-
*
|
|
588
|
-
* case 'failedToShow':
|
|
589
|
-
* console.log('광고 보여주기 실패');
|
|
590
|
-
* break;
|
|
591
|
-
*
|
|
592
|
-
* case 'impression':
|
|
593
|
-
* console.log('광고 노출');
|
|
594
|
-
* break;
|
|
595
|
-
*
|
|
596
|
-
* case 'show':
|
|
597
|
-
* console.log('광고 컨텐츠 보여졌음');
|
|
598
|
-
* break;
|
|
599
|
-
*
|
|
600
|
-
* case 'userEarnedReward':
|
|
601
|
-
* console.log('사용자가 광고 시청을 완료했음');
|
|
602
|
-
* break;
|
|
603
568
|
* }
|
|
604
569
|
* },
|
|
605
570
|
* onError: (error) => {
|
|
@@ -608,22 +573,47 @@ export type ShowAdMobRewardedAdParams = AdMobHandlerParams<ShowAdMobRewardedAdOp
|
|
|
608
573
|
* });
|
|
609
574
|
*
|
|
610
575
|
* return cleanup;
|
|
611
|
-
* }, []);
|
|
576
|
+
* }, [navigation]);
|
|
612
577
|
*
|
|
613
578
|
* const showAd = useCallback(() => {
|
|
614
|
-
* if (GoogleAdMob.
|
|
579
|
+
* if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
|
|
615
580
|
* return;
|
|
616
581
|
* }
|
|
617
582
|
*
|
|
618
|
-
* GoogleAdMob.
|
|
583
|
+
* GoogleAdMob.showAppsInTossAdMob({
|
|
619
584
|
* options: {
|
|
620
|
-
*
|
|
585
|
+
* adGroupId: AD_GROUP_ID,
|
|
621
586
|
* },
|
|
622
587
|
* onEvent: (event) => {
|
|
623
588
|
* switch (event.type) {
|
|
624
589
|
* case 'requested':
|
|
625
590
|
* console.log('광고 보여주기 요청 완료');
|
|
626
|
-
*
|
|
591
|
+
* break;
|
|
592
|
+
*
|
|
593
|
+
* case 'clicked':
|
|
594
|
+
* console.log('광고 클릭');
|
|
595
|
+
* break;
|
|
596
|
+
*
|
|
597
|
+
* case 'dismissed':
|
|
598
|
+
* console.log('광고 닫힘');
|
|
599
|
+
* navigation.navigate('/examples/google-admob-interstitial-ad-landing');
|
|
600
|
+
* break;
|
|
601
|
+
*
|
|
602
|
+
* case 'failedToShow':
|
|
603
|
+
* console.log('광고 보여주기 실패');
|
|
604
|
+
* break;
|
|
605
|
+
*
|
|
606
|
+
* case 'impression':
|
|
607
|
+
* console.log('광고 노출');
|
|
608
|
+
* break;
|
|
609
|
+
*
|
|
610
|
+
* case 'userEarnedReward':
|
|
611
|
+
* console.log('광고 보상 획득 unitType:', event.data.unitType);
|
|
612
|
+
* console.log('광고 보상 획득 unitAmount:', event.data.unitAmount);
|
|
613
|
+
* break;
|
|
614
|
+
*
|
|
615
|
+
* case 'show':
|
|
616
|
+
* console.log('광고 컨텐츠 보여졌음');
|
|
627
617
|
* break;
|
|
628
618
|
* }
|
|
629
619
|
* },
|
|
@@ -633,6 +623,8 @@ export type ShowAdMobRewardedAdParams = AdMobHandlerParams<ShowAdMobRewardedAdOp
|
|
|
633
623
|
* });
|
|
634
624
|
* }, []);
|
|
635
625
|
*
|
|
626
|
+
* useFocusEffect(loadAd);
|
|
627
|
+
*
|
|
636
628
|
* return (
|
|
637
629
|
* <View>
|
|
638
630
|
* <Text>
|
|
@@ -641,7 +633,6 @@ export type ShowAdMobRewardedAdParams = AdMobHandlerParams<ShowAdMobRewardedAdOp
|
|
|
641
633
|
* {adLoadStatus === 'failed' && '광고 로드 실패'}
|
|
642
634
|
* </Text>
|
|
643
635
|
*
|
|
644
|
-
* <Button title="Load Ad" onPress={loadAd} />
|
|
645
636
|
* <Button title="Show Ad" onPress={showAd} disabled={adLoadStatus !== 'loaded'} />
|
|
646
637
|
* </View>
|
|
647
638
|
* );
|