@apps-in-toss/native-modules 1.6.2 → 1.7.1

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.
@@ -1,681 +0,0 @@
1
- import { noop } from 'es-toolkit';
2
- import type { AdMobFullScreenEvent, AdMobHandlerParams, InterstitialAd, RewardedAd } from './types';
3
- import { INTERNAL__appBridgeHandler } from '../../native-event-emitter/internal/appBridge';
4
- import { getOperationalEnvironment } from '../getOperationalEnvironment';
5
- import { isMinVersionSupported } from '../isMinVersionSupported';
6
-
7
- // MARK: Interstitial AD (load)
8
-
9
- export interface LoadAdMobInterstitialAdOptions {
10
- /**
11
- * 광고 단위 ID
12
- */
13
- adUnitId: string;
14
- }
15
-
16
- /**
17
- * @public
18
- * @category 광고
19
- * @name LoadAdMobInterstitialAdEvent
20
- * @description 전면 광고를 불러오는 함수에서 발생하는 이벤트 타입이에요. `loaded` 이벤트가 발생하면 광고를 성공적으로 불러온 거예요. 이때 [InterstitialAd](/react-native/reference/native-modules/광고/InterstitialAd.html) 객체가 함께 반환돼요.
21
- */
22
- export type LoadAdMobInterstitialAdEvent =
23
- | AdMobFullScreenEvent
24
- | {
25
- type: 'loaded';
26
- data: InterstitialAd;
27
- };
28
-
29
- /**
30
- * @public
31
- * @category 광고
32
- * @name LoadAdMobInterstitialAdParams
33
- * @description 전면 광고를 불러오는 함수에 필요한 옵션 객체예요.
34
- */
35
- export type LoadAdMobInterstitialAdParams = AdMobHandlerParams<
36
- LoadAdMobInterstitialAdOptions,
37
- LoadAdMobInterstitialAdEvent
38
- >;
39
-
40
- /**
41
- * @public
42
- * @category 광고
43
- * @name loadAdMobInterstitialAd
44
- * @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.loadAppsInTossAdMob}를 사용해주세요.
45
- *
46
- * @example
47
- * ### 버튼 눌러 불러온 광고 보여주기 (loadAppsInTossAdMob로 변경 예제)
48
- * ```tsx
49
- * import { GoogleAdMob } from '@apps-in-toss/framework';
50
- * import { useFocusEffect } from '@granite-js/native/@react-navigation/native';
51
- * import { useNavigation } from '@granite-js/react-native';
52
- * import { useCallback, useState } from 'react';
53
- * import { Button, Text, View } from 'react-native';
54
- *
55
- * const AD_GROUP_ID = '<AD_GROUP_ID>';
56
- *
57
- * export function GoogleAdmobExample() {
58
- * const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
59
- * const navigation = useNavigation();
60
- *
61
- * const loadAd = useCallback(() => {
62
- * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
63
- * return;
64
- * }
65
-
66
- * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
67
- * options: {
68
- * adGroupId: AD_GROUP_ID,
69
- * },
70
- * onEvent: (event) => {
71
- * switch (event.type) {
72
- * case 'loaded':
73
- * console.log('광고 로드 성공', event.data);
74
- * setAdLoadStatus('loaded');
75
- * break;
76
- * }
77
- * },
78
- * onError: (error) => {
79
- * console.error('광고 불러오기 실패', error);
80
- * },
81
- * });
82
- *
83
- * return cleanup;
84
- * }, [navigation]);
85
- *
86
- * const showAd = useCallback(() => {
87
- * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
88
- * return;
89
- * }
90
- *
91
- * GoogleAdMob.showAppsInTossAdMob({
92
- * options: {
93
- * adGroupId: AD_GROUP_ID,
94
- * },
95
- * onEvent: (event) => {
96
- * switch (event.type) {
97
- * case 'requested':
98
- * console.log('광고 보여주기 요청 완료');
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;
126
- * }
127
- * },
128
- * onError: (error) => {
129
- * console.error('광고 보여주기 실패', error);
130
- * },
131
- * });
132
- * }, []);
133
- *
134
- * useFocusEffect(loadAd);
135
- *
136
- * return (
137
- * <View>
138
- * <Text>
139
- * {adLoadStatus === 'not_loaded' && '광고 로드 하지 않음 '}
140
- * {adLoadStatus === 'loaded' && '광고 로드 완료'}
141
- * {adLoadStatus === 'failed' && '광고 로드 실패'}
142
- * </Text>
143
- *
144
- * <Button title="Show Ad" onPress={showAd} disabled={adLoadStatus !== 'loaded'} />
145
- * </View>
146
- * );
147
- * }
148
- * ```
149
- */
150
- export function loadAdMobInterstitialAd(params: LoadAdMobInterstitialAdParams) {
151
- if (!loadAdMobInterstitialAd.isSupported()) {
152
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
153
- return noop as () => void;
154
- }
155
-
156
- const { onEvent, onError, options } = params;
157
-
158
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod('loadAdMobInterstitialAd', options, {
159
- onAdClicked: () => {
160
- onEvent({ type: 'clicked' });
161
- },
162
- onAdDismissed: () => {
163
- onEvent({ type: 'dismissed' });
164
- },
165
- onAdFailedToShow: () => {
166
- onEvent({ type: 'failedToShow' });
167
- },
168
- onAdImpression: () => {
169
- onEvent({ type: 'impression' });
170
- },
171
- onAdShow: () => {
172
- onEvent({ type: 'show' });
173
- },
174
- onSuccess: (result: InterstitialAd) => onEvent({ type: 'loaded', data: result }),
175
- onError,
176
- });
177
-
178
- return unregisterCallbacks;
179
- }
180
-
181
- // MARK: Interstitial AD (show)
182
-
183
- export interface ShowAdMobInterstitialAdOptions {
184
- /**
185
- * 광고 단위 ID
186
- */
187
- adUnitId: string;
188
- }
189
-
190
- /**
191
- * @public
192
- * @category 광고
193
- * @name ShowAdMobInterstitialAdEvent
194
- * @description 전면 광고를 보여주는 함수에서 발생하는 이벤트 타입이에요. `requested` 이벤트가 발생하면 광고 노출 요청이 Google AdMob에 성공적으로 전달된 거예요.
195
- */
196
- export type ShowAdMobInterstitialAdEvent = { type: 'requested' };
197
-
198
- /**
199
- * @public
200
- * @category 광고
201
- * @name ShowAdMobInterstitialAdParams
202
- * @description 불러온 전면 광고를 보여주는 함수에 필요한 옵션 객체예요.
203
- */
204
- export type ShowAdMobInterstitialAdParams = AdMobHandlerParams<
205
- ShowAdMobInterstitialAdOptions,
206
- ShowAdMobInterstitialAdEvent
207
- >;
208
-
209
- /**
210
- * @public
211
- * @category 광고
212
- * @name showAdMobInterstitialAd
213
- * @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.showAppsInTossAdMob}를 사용해주세요.
214
- *
215
- * @example
216
- * ### 버튼 눌러 불러온 광고 보여주기 (showAppsInTossAdMob로 변경 예제)
217
- * ```tsx
218
- * import { GoogleAdMob } from '@apps-in-toss/framework';
219
- * import { useFocusEffect } from '@granite-js/native/@react-navigation/native';
220
- * import { useNavigation } from '@granite-js/react-native';
221
- * import { useCallback, useState } from 'react';
222
- * import { Button, Text, View } from 'react-native';
223
- *
224
- * const AD_GROUP_ID = '<AD_GROUP_ID>';
225
- *
226
- * export function GoogleAdmobExample() {
227
- * const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
228
- * const navigation = useNavigation();
229
- *
230
- * const loadAd = useCallback(() => {
231
- * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
232
- * return;
233
- * }
234
-
235
- * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
236
- * options: {
237
- * adGroupId: AD_GROUP_ID,
238
- * },
239
- * onEvent: (event) => {
240
- * switch (event.type) {
241
- * case 'loaded':
242
- * console.log('광고 로드 성공', event.data);
243
- * setAdLoadStatus('loaded');
244
- * break;
245
- * }
246
- * },
247
- * onError: (error) => {
248
- * console.error('광고 불러오기 실패', error);
249
- * },
250
- * });
251
- *
252
- * return cleanup;
253
- * }, [navigation]);
254
- *
255
- * const showAd = useCallback(() => {
256
- * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
257
- * return;
258
- * }
259
- *
260
- * GoogleAdMob.showAppsInTossAdMob({
261
- * options: {
262
- * adGroupId: AD_GROUP_ID,
263
- * },
264
- * onEvent: (event) => {
265
- * switch (event.type) {
266
- * case 'requested':
267
- * console.log('광고 보여주기 요청 완료');
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;
295
- * }
296
- * },
297
- * onError: (error) => {
298
- * console.error('광고 보여주기 실패', error);
299
- * },
300
- * });
301
- * }, []);
302
- *
303
- * useFocusEffect(loadAd);
304
- *
305
- * return (
306
- * <View>
307
- * <Text>
308
- * {adLoadStatus === 'not_loaded' && '광고 로드 하지 않음 '}
309
- * {adLoadStatus === 'loaded' && '광고 로드 완료'}
310
- * {adLoadStatus === 'failed' && '광고 로드 실패'}
311
- * </Text>
312
- *
313
- * <Button title="Show Ad" onPress={showAd} disabled={adLoadStatus !== 'loaded'} />
314
- * </View>
315
- * );
316
- * }
317
- * ```
318
- */
319
- export function showAdMobInterstitialAd(params: ShowAdMobInterstitialAdParams) {
320
- if (!showAdMobInterstitialAd.isSupported()) {
321
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
322
- return noop as () => void;
323
- }
324
-
325
- const { onEvent, onError, options } = params;
326
-
327
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod('showAdMobInterstitialAd', options, {
328
- onSuccess: () => onEvent({ type: 'requested' }),
329
- onError,
330
- });
331
-
332
- return unregisterCallbacks;
333
- }
334
-
335
- // MARK: Rewarded AD (load)
336
-
337
- export interface LoadAdMobRewardedAdOptions {
338
- /**
339
- * 광고 단위 ID
340
- */
341
- adUnitId: string;
342
- }
343
-
344
- /**
345
- * @public
346
- * @category 광고
347
- * @name LoadAdMobRewardedAdEvent
348
- * @description 보상형 광고를 불러오는 함수에서 발생하는 이벤트 타입이에요. `loaded` 이벤트가 발생하면 광고를 성공적으로 불러온 거예요. 이때 [RewardedAd](/react-native/reference/native-modules/광고/RewardedAd.html) 객체가 함께 반환돼요. `userEarnedReward` 이벤트는 사용자가 광고를 끝까지 시청해, 보상 조건을 충족했을 때 발생해요.
349
- */
350
- export type LoadAdMobRewardedAdEvent =
351
- | AdMobFullScreenEvent
352
- | { type: 'loaded'; data: RewardedAd }
353
- | { type: 'userEarnedReward' };
354
-
355
- /**
356
- * @public
357
- * @category 광고
358
- * @name LoadAdMobRewardedAdParams
359
- * @description 보상형 광고를 불러오는 함수에 필요한 옵션 객체예요.
360
- */
361
- export type LoadAdMobRewardedAdParams = AdMobHandlerParams<LoadAdMobRewardedAdOptions, LoadAdMobRewardedAdEvent>;
362
-
363
- /**
364
- * @public
365
- * @category 광고
366
- * @name loadAdMobRewardedAd
367
- * @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.loadAppsInTossAdMob}를 사용해주세요.
368
- *
369
- * @example
370
- * ### 버튼 눌러 불러온 광고 보여주기 (loadAppsInTossAdMob로 변경 예제)
371
- * ```tsx
372
- * import { GoogleAdMob } from '@apps-in-toss/framework';
373
- * import { useFocusEffect } from '@react-native-bedrock/native/@react-navigation/native';
374
- * import { useCallback, useState } from 'react';
375
- * import { Button, Text, View } from 'react-native';
376
- * import { useNavigation } from 'react-native-bedrock';
377
- *
378
- * const AD_GROUP_ID = '<AD_GROUP_ID>';
379
- *
380
- * export function GoogleAdmobExample() {
381
- * const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
382
- * const navigation = useNavigation();
383
- *
384
- * const loadAd = useCallback(() => {
385
- * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
386
- * return;
387
- * }
388
-
389
- * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
390
- * options: {
391
- * adGroupId: AD_GROUP_ID,
392
- * },
393
- * onEvent: (event) => {
394
- * switch (event.type) {
395
- * case 'loaded':
396
- * console.log('광고 로드 성공', event.data);
397
- * setAdLoadStatus('loaded');
398
- * break;
399
- * }
400
- * },
401
- * onError: (error) => {
402
- * console.error('광고 불러오기 실패', error);
403
- * },
404
- * });
405
- *
406
- * return cleanup;
407
- * }, [navigation]);
408
- *
409
- * const showAd = useCallback(() => {
410
- * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
411
- * return;
412
- * }
413
- *
414
- * GoogleAdMob.showAppsInTossAdMob({
415
- * options: {
416
- * adGroupId: AD_GROUP_ID,
417
- * },
418
- * onEvent: (event) => {
419
- * switch (event.type) {
420
- * case 'requested':
421
- * console.log('광고 보여주기 요청 완료');
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('광고 컨텐츠 보여졌음');
448
- * break;
449
- * }
450
- * },
451
- * onError: (error) => {
452
- * console.error('광고 보여주기 실패', error);
453
- * },
454
- * });
455
- * }, []);
456
- *
457
- * useFocusEffect(loadAd);
458
- *
459
- * return (
460
- * <View>
461
- * <Text>
462
- * {adLoadStatus === 'not_loaded' && '광고 로드 하지 않음 '}
463
- * {adLoadStatus === 'loaded' && '광고 로드 완료'}
464
- * {adLoadStatus === 'failed' && '광고 로드 실패'}
465
- * </Text>
466
- *
467
- * <Button title="Show Ad" onPress={showAd} disabled={adLoadStatus !== 'loaded'} />
468
- * </View>
469
- * );
470
- * }
471
- * ```
472
- */
473
- export function loadAdMobRewardedAd(params: LoadAdMobRewardedAdParams) {
474
- if (!loadAdMobRewardedAd.isSupported()) {
475
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
476
- return noop as () => void;
477
- }
478
-
479
- const { onEvent, onError, options } = params;
480
-
481
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod('loadAdMobRewardedAd', options, {
482
- onAdClicked: () => {
483
- onEvent({ type: 'clicked' });
484
- },
485
- onAdDismissed: () => {
486
- onEvent({ type: 'dismissed' });
487
- },
488
- onAdFailedToShow: () => {
489
- onEvent({ type: 'failedToShow' });
490
- },
491
- onAdImpression: () => {
492
- onEvent({ type: 'impression' });
493
- },
494
- onAdShow: () => {
495
- onEvent({ type: 'show' });
496
- },
497
- onUserEarnedReward: () => {
498
- onEvent({ type: 'userEarnedReward' });
499
- },
500
- onSuccess: (result: RewardedAd) => onEvent({ type: 'loaded', data: result }),
501
- onError,
502
- });
503
-
504
- return unregisterCallbacks;
505
- }
506
-
507
- // MARK: Rewarded AD (show)
508
-
509
- export interface ShowAdMobRewardedAdOptions {
510
- /**
511
- * 광고 단위 ID
512
- */
513
- adUnitId: string;
514
- }
515
-
516
- /**
517
- * @public
518
- * @category 광고
519
- * @name ShowAdMobRewardedAdEvent
520
- * @description 보상형 광고를 보여주는 함수에서 발생하는 이벤트 타입이에요. `requested` 이벤트가 발생하면 광고 노출 요청이 Google AdMob에 성공적으로 전달된 거예요.
521
- */
522
- export type ShowAdMobRewardedAdEvent = { type: 'requested' };
523
-
524
- /**
525
- * @public
526
- * @category 광고
527
- * @name ShowAdMobRewardedAdParams
528
- * @description 불러온 보상형 광고를 보여주는 함수에 필요한 옵션 객체예요.
529
- */
530
- export type ShowAdMobRewardedAdParams = AdMobHandlerParams<ShowAdMobRewardedAdOptions, ShowAdMobRewardedAdEvent>;
531
-
532
- /**
533
- * @public
534
- * @category 광고
535
- * @name showAdMobRewardedAd
536
- * @deprecated 이 함수는 더 이상 사용되지 않습니다. 대신 {@link GoogleAdMob.showAppsInTossAdMob}를 사용해주세요.
537
- *
538
- * @example
539
- * ### 버튼 눌러 불러온 광고 보여주기 (showAppsInTossAdMob로 변경 예제)
540
- * ```tsx
541
- * import { GoogleAdMob } from '@apps-in-toss/framework';
542
- * import { useFocusEffect } from '@react-native-bedrock/native/@react-navigation/native';
543
- * import { useCallback, useState } from 'react';
544
- * import { Button, Text, View } from 'react-native';
545
- * import { useNavigation } from 'react-native-bedrock';
546
- *
547
- * const AD_GROUP_ID = '<AD_GROUP_ID>';
548
- *
549
- * export function GoogleAdmobExample() {
550
- * const [adLoadStatus, setAdLoadStatus] = useState<'not_loaded' | 'loaded' | 'failed'>('not_loaded');
551
- * const navigation = useNavigation();
552
- *
553
- * const loadAd = useCallback(() => {
554
- * if (GoogleAdMob.loadAppsInTossAdMob.isSupported() !== true) {
555
- * return;
556
- * }
557
-
558
- * const cleanup = GoogleAdMob.loadAppsInTossAdMob({
559
- * options: {
560
- * adGroupId: AD_GROUP_ID,
561
- * },
562
- * onEvent: (event) => {
563
- * switch (event.type) {
564
- * case 'loaded':
565
- * console.log('광고 로드 성공', event.data);
566
- * setAdLoadStatus('loaded');
567
- * break;
568
- * }
569
- * },
570
- * onError: (error) => {
571
- * console.error('광고 불러오기 실패', error);
572
- * },
573
- * });
574
- *
575
- * return cleanup;
576
- * }, [navigation]);
577
- *
578
- * const showAd = useCallback(() => {
579
- * if (GoogleAdMob.showAppsInTossAdMob.isSupported() !== true) {
580
- * return;
581
- * }
582
- *
583
- * GoogleAdMob.showAppsInTossAdMob({
584
- * options: {
585
- * adGroupId: AD_GROUP_ID,
586
- * },
587
- * onEvent: (event) => {
588
- * switch (event.type) {
589
- * case 'requested':
590
- * console.log('광고 보여주기 요청 완료');
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('광고 컨텐츠 보여졌음');
617
- * break;
618
- * }
619
- * },
620
- * onError: (error) => {
621
- * console.error('광고 보여주기 실패', error);
622
- * },
623
- * });
624
- * }, []);
625
- *
626
- * useFocusEffect(loadAd);
627
- *
628
- * return (
629
- * <View>
630
- * <Text>
631
- * {adLoadStatus === 'not_loaded' && '광고 로드 하지 않음 '}
632
- * {adLoadStatus === 'loaded' && '광고 로드 완료'}
633
- * {adLoadStatus === 'failed' && '광고 로드 실패'}
634
- * </Text>
635
- *
636
- * <Button title="Show Ad" onPress={showAd} disabled={adLoadStatus !== 'loaded'} />
637
- * </View>
638
- * );
639
- * }
640
- * ```
641
- */
642
- export function showAdMobRewardedAd(params: ShowAdMobRewardedAdParams) {
643
- if (!showAdMobRewardedAd.isSupported()) {
644
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
645
- return noop as () => void;
646
- }
647
-
648
- const { onEvent, onError, options } = params;
649
-
650
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod('showAdMobRewardedAd', options, {
651
- onSuccess: () => onEvent({ type: 'requested' }),
652
- onError,
653
- });
654
-
655
- return unregisterCallbacks;
656
- }
657
-
658
- // MARK: - isSupported
659
-
660
- const ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION = '5.209.0';
661
- const IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION = '5.209.0';
662
- const UNSUPPORTED_ERROR_MESSAGE = 'This feature is not supported in the current environment';
663
- const ENVIRONMENT = getOperationalEnvironment();
664
-
665
- function createIsSupported() {
666
- return () => {
667
- if (ENVIRONMENT !== 'toss') {
668
- return false;
669
- }
670
-
671
- return isMinVersionSupported({
672
- android: ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION,
673
- ios: IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION,
674
- });
675
- };
676
- }
677
-
678
- loadAdMobInterstitialAd.isSupported = createIsSupported();
679
- loadAdMobRewardedAd.isSupported = createIsSupported();
680
- showAdMobInterstitialAd.isSupported = createIsSupported();
681
- showAdMobRewardedAd.isSupported = createIsSupported();