@apps-in-toss/native-modules 1.0.1 → 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.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.1",
4
+ "version": "1.0.2",
5
5
  "description": "Native Modules for Apps In Toss",
6
6
  "scripts": {
7
7
  "prepack": "yarn build",
@@ -53,5 +53,5 @@
53
53
  "publishConfig": {
54
54
  "access": "public"
55
55
  },
56
- "gitHead": "c117f889c8e029797ebff63000beef65c0597e6f"
56
+ "gitHead": "6bcca89699f84625d384052501b8ea0d28cabccc"
57
57
  }
@@ -41,16 +41,10 @@ export type LoadAdMobInterstitialAdParams = AdMobHandlerParams<
41
41
  * @public
42
42
  * @category 광고
43
43
  * @name loadAdMobInterstitialAd
44
- * @description 화면 전체를 덮는 전면 광고를 미리 불러와서, 광고가 필요한 시점에 바로 보여줄 수 있도록 준비하는 함수예요.
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 AD_UNIT_ID = '<AD_UNIT_ID>';
55
+ * const AD_GROUP_ID = '<AD_GROUP_ID>';
62
56
  *
63
- * export function GoogleAdmobInterstitialAdExample() {
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.loadAdMobInterstitialAd.isSupported() !== true) {
62
+ * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
69
63
  * return;
70
64
  * }
71
65
 
72
- * const cleanup = GoogleAdMob.loadAdMobInterstitialAd({
66
+ * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
73
67
  * options: {
74
- * adUnitId: AD_UNIT_ID,
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.showAdMobInterstitialAd.isSupported() !== true) {
87
+ * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
115
88
  * return;
116
89
  * }
117
90
  *
118
- * GoogleAdMob.showAdMobInterstitialAd({
91
+ * GoogleAdMob.showAppsInTossAdMob({
119
92
  * options: {
120
- * adUnitId: AD_UNIT_ID,
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
- * @description 앱 화면 전체를 덮는 전면 광고를 사용자에게 노출해요. 이 함수는 `loadAdMobInterstitialAd` 미리 불러온 광고를 실제로 사용자에게 노출해요.
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 AD_UNIT_ID = '<AD_UNIT_ID>';
224
+ * const AD_GROUP_ID = '<AD_GROUP_ID>';
232
225
  *
233
- * export function GoogleAdmobInterstitialAdExample() {
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.loadAdMobInterstitialAd.isSupported() !== true) {
231
+ * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
239
232
  * return;
240
233
  * }
241
234
 
242
- * const cleanup = GoogleAdMob.loadAdMobInterstitialAd({
235
+ * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
243
236
  * options: {
244
- * adUnitId: AD_UNIT_ID,
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.showAdMobInterstitialAd.isSupported() !== true) {
256
+ * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
285
257
  * return;
286
258
  * }
287
259
  *
288
- * GoogleAdMob.showAdMobInterstitialAd({
260
+ * GoogleAdMob.showAppsInTossAdMob({
289
261
  * options: {
290
- * adUnitId: AD_UNIT_ID,
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
- * @description 사용자가 광고를 끝까지 시청하면 리워드를 제공할 있는 보상형 광고를 미리 불러와서, 광고가 필요한 시점에 바로 보여줄 수 있도록 준비하는 함수예요.
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 AD_UNIT_ID = '<AD_UNIT_ID>';
378
+ * const AD_GROUP_ID = '<AD_GROUP_ID>';
387
379
  *
388
- * export function GoogleAdmobRewardedAdExample() {
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.loadAdMobRewardedAd.isSupported() !== true) {
385
+ * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
393
386
  * return;
394
387
  * }
395
- *
396
- * const cleanup = GoogleAdMob.loadAdMobRewardedAd({
388
+
389
+ * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
397
390
  * options: {
398
- * adUnitId: AD_UNIT_ID,
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.showAdMobRewardedAd.isSupported() !== true) {
410
+ * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
443
411
  * return;
444
412
  * }
445
413
  *
446
- * GoogleAdMob.showAdMobRewardedAd({
414
+ * GoogleAdMob.showAppsInTossAdMob({
447
415
  * options: {
448
- * adUnitId: AD_UNIT_ID,
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
- * setAdLoadStatus('not_loaded');
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
- * @description 사용자가 광고를 끝까지 보면 리워드를 받을 수 있도록, 보상형 광고를 화면에 보여줘요. 이 함수는 `loadAdMobRewardedAd` 미리 불러온 광고를 실제로 사용자에게 노출해요.
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 AD_UNIT_ID = '<AD_UNIT_ID>';
547
+ * const AD_GROUP_ID = '<AD_GROUP_ID>';
559
548
  *
560
- * export function GoogleAdmobRewardedAdExample() {
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.loadAdMobRewardedAd.isSupported() !== true) {
554
+ * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
565
555
  * return;
566
556
  * }
567
- *
568
- * const cleanup = GoogleAdMob.loadAdMobRewardedAd({
557
+
558
+ * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
569
559
  * options: {
570
- * adUnitId: AD_UNIT_ID,
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.showAdMobRewardedAd.isSupported() !== true) {
579
+ * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
615
580
  * return;
616
581
  * }
617
582
  *
618
- * GoogleAdMob.showAdMobRewardedAd({
583
+ * GoogleAdMob.showAppsInTossAdMob({
619
584
  * options: {
620
- * adUnitId: AD_UNIT_ID,
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
- * setAdLoadStatus('not_loaded');
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
  * );