Giter Site home page Giter Site logo

nzme / react-native-ad-manager Goto Github PK

View Code? Open in Web Editor NEW
51.0 9.0 61.0 1.05 MB

Google Ad Manager bridge for React Native

License: MIT License

Java 52.10% JavaScript 0.61% Ruby 0.59% Objective-C 27.72% Shell 0.06% TypeScript 18.85% C 0.04% Swift 0.03%

react-native-ad-manager's Introduction

react-native-ad-manager

A react-native module for Google Ad Manager Banners, Interstitials and Native ads.

The banner types are implemented as components while the interstitial and rewarded video have an imperative API.

Native ads are implemented as wrapper for a native view.

Installation

You can use npm or Yarn to install the latest version.

npm:

npm i --save react-native-ad-manager

Yarn:

yarn add react-native-ad-manager

Mostly automatic installation

If your react native project does not use auto linking, you can link manually by running:

`$ react-native link react-native-ad-manager`

Alternatively for iOS you can install the library with CocoaPods by adding a line to your Podfile;

pod 'react-native-ad-manager', path: '../node_modules/react-native-ad-manager'

iOS

For iOS you will have to add the Google Mobile Ads SDK to your Xcode project.

Android

On Android the Ad Manager library code is part of Play Services, which is automatically added when this library is linked.

But you still have to manually update your AndroidManifest.xml, as described in the Google Mobile Ads SDK documentation.

GAM

iOS

Activate as Ad Manager app by editing your Info.plist

+ <key>GADIsAdManagerApp</key>
+ <true/>

Add transport security rules in Info.plist

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>

Android

Activate as Ad Manager app

<manifest>
  <application>

+   <meta-data android:name="com.google.android.gms.ads.AD_MANAGER_APP" android:value="true"/>

  </application>
</manifest>

Usage

import {
  Banner,
  Interstitial,
  PublisherBanner,
  NativeAdsManager,
} from 'react-native-ad-manager'

// Display a DFP Publisher banner
<Banner
  adSize="fullBanner"
  adUnitID="your-ad-unit-id"
  testDevices={[PublisherBanner.simulatorId]}
  onAdFailedToLoad={error => console.error(error)}
  onAppEvent={event => console.log(event.name, event.info)}
/>

// Display an interstitial
Interstitial.setAdUnitID('your-ad-unit-id');
Interstitial.setTestDevices([Interstitial.simulatorId]);
Interstitial.requestAd().then(() => Interstitial.showAd());

// Native ad
import NativeAdView from './NativeAdView';
const adsManager = new NativeAdsManager('your-ad-unit-id', [
    Interstitial.simulatorId,
]);
<NativeAdView
    targeting={{
        customTargeting: {group: 'user_test'},
        categoryExclusions: ['media'],
        contentURL: 'test://',
        publisherProvidedID: 'provider_id',
    }}
    style={{width: '100%'}}
    adsManager={adsManager}
    validAdTypes={['native', 'template']}
    customTemplateIds={['your-template-id-1', 'your-template-id-2']}
    onAdLoaded={ad => {
        console.log(ad);
    }}
    onAdFailedToLoad={error => {
        console.log(error);
    }}
/>

See the NativeAdView component in the example NativeAdView. For a full example reference to the example project.

Events

Event Description Output
onSizeChange Called when the size of Ad changes. { height: number, type: string, target: number, width: number }
onAdLoaded Called when Ad has finished loading. { gadSize: { adSize: string, height: number, width: number }, isFluid: string, measurements: { adHeight: number, adWidth: number, height: number, left: number, top: number, width: number }
onAdFailedToLoad Called when Ad request fails. Error
onAppEvent Called when the Ad receives an app event.
onAdOpened Called when the Ad is opened.
onAdClosed Called when the Ad is closed.
onAdCustomClick Called when the Ad is clicked from a custom template { Attribution: string, Calltoaction: string, DeeplinkUrl: string, assetName: string, label: string, target: number, text: string, title: string }
onAdRecordImpression Called when the Ad records an impression. { target: number }

Contributing

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

react-native-ad-manager's People

Contributors

aleccolville avatar aleccolville-nzme avatar cisclub avatar dependabot[bot] avatar gladiuscode avatar igorshcherba avatar jazdance avatar jbernhardt23 avatar marcshilling avatar matejdr avatar mharrison-nzme avatar rafauke avatar simonso-nzme avatar simonso3 avatar simonsograbone avatar traceymainzme avatar zubko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-ad-manager's Issues

[Android] - The ad size and ad unit ID must be set before loadAd is called

iOS loads the example banner properly but on Android I'm getting this error:
This exception does not get returned in the onAdFailedToLoad but connected to Android studio I see this:

E Unhandled SoftException java.lang.IllegalStateException: The ad size and ad unit ID must be set before loadAd is called. at com.google.android.gms.internal.ads.zzbhl.zzh(com.google.android.gms:play-services-ads-lite@@20.5.0:1) at com.google.android.gms.ads.admanager.AdManagerAdView.loadAd(com.google.android.gms:play-services-ads-lite@@20.5.0:1) at com.matejdr.admanager.BannerAdView.loadBanner(BannerAdView.java:279) at com.matejdr.admanager.RNAdManagerBannerViewManager.receiveCommand(RNAdManagerBannerViewManager.java:201) at com.matejdr.admanager.RNAdManagerBannerViewManager.receiveCommand(RNAdManagerBannerViewManager.java:27) at com.facebook.react.uimanager.NativeViewHierarchyManager.dispatchCommand(NativeViewHierarchyManager.java:832) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchCommandOperation.executeWithExceptions(UIViewOperationQueue.java:323) at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:879) at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1025) at com.facebook.react.uimanager.UIViewOperationQueue.access$2600(UIViewOperationQueue.java:47) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1085) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:984) at android.view.Choreographer.doCallbacks(Choreographer.java:764) at android.view.Choreographer.doFrame(Choreographer.java:696) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:965) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7073) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:965)
Versions:
"@react-native-firebase/app": "^12.9.3"
"react-native": "0.65.3",

Couldn't able to run Example App

Getting an error related to importing MetaAdapter while running the app.
Can you please let me know do I need to make any changes related to frameworks?

Screenshot 2023-12-10 at 5 03 47 PM

Adjusting when to begin ad rendering

It seems that ads render when the container begins to enter the viewport. How can we adjust the threshold so we can begin ad rendering before it's on screen. We notice ads are sometimes slow to load and the render rate of ads is low because the creatives don't render early enough.

Ad debug menu dialog isn't opening on android

Hi! Thank you for maintaining this.

Google Mobile Ads SDK has a Delivery Inspector feature that allows publishers to debug their ads implementation using the debug options menu. (docs for this can be found here ).
When using this library the ad debug options menu is not opening on android devices (although it works fine on ios). When trying to open it (how it's suggested in the docs ) I see the error in logcat

image

[Android&iOS] - Currently it is not possible to toggle non personalized ads

We are using a custom CMP SDK (OneTrust) to ask user permission to track his data for target advertising.
When the user denies this permission, we need to make user that Google AdManager SDK actually requests only non-personalized-advs.

To do so, we need to setup a parameter for the request that is called npa. This parameters tells the AdManager network to request only non-personalized-advs.

Currently this library doesn't allow us to do so.

We've patched the library meanwhile that we wait for our PR to be merged.

Here is the patch:

diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/AdaptiveBannerAdView.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/AdaptiveBannerAdView.java
index 3929753..8ebbffa 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/AdaptiveBannerAdView.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/AdaptiveBannerAdView.java
@@ -48,6 +48,7 @@ class AdaptiveBannerAdView extends ReactViewGroup implements AppEventListener, L
     String publisherProvidedID;
     Location location;
     String correlator;
+    Boolean servePersonalizedAds = true;

     int top;
     int left;
@@ -207,6 +208,10 @@ class AdaptiveBannerAdView extends ReactViewGroup implements AppEventListener, L
         Bundle bundle = new Bundle();
         bundle.putString("correlator", correlator);

+        if (!servePersonalizedAds) {
+            bundle.putInt("npa", 1);
+        }
+
         adRequestBuilder.addNetworkExtrasBundle(AdMobAdapter.class, bundle);

         // Targeting
@@ -308,6 +313,10 @@ class AdaptiveBannerAdView extends ReactViewGroup implements AppEventListener, L
         this.correlator = correlator;
     }

+    public void setServePersonalizedAds(Boolean servePersonalizedAds) {
+        this.servePersonalizedAds = servePersonalizedAds;
+    }
+
     @Override
     public void onAppEvent(String name, String info) {
         WritableMap event = Arguments.createMap();
diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java
index 348a7b6..4467dc9 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java
@@ -50,6 +50,8 @@ class BannerAdView extends ReactViewGroup implements AppEventListener, Lifecycle
     Location location;
     String correlator;

+    Boolean servePersonalizedAds = true;
+
     int top;
     int left;
     int width;
@@ -283,6 +285,10 @@ class BannerAdView extends ReactViewGroup implements AppEventListener, Lifecycle
             Bundle bundle = new Bundle();
             bundle.putString("correlator", correlator);

+            if (!servePersonalizedAds) {
+                bundle.putInt("npa", 1);
+            }
+
             adRequestBuilder.addNetworkExtrasBundle(AdMobAdapter.class, bundle);

             // Targeting
@@ -447,6 +453,14 @@ class BannerAdView extends ReactViewGroup implements AppEventListener, Lifecycle
         }
     }

+    public void setServePersonalizedAds(Boolean servePersonalizedAds) {
+        try {
+            this.servePersonalizedAds = servePersonalizedAds;
+        } catch (Exception e) {
+            sendErrorEvent("Error found at ad manager when setServePersonalizedAds(): " + e.getMessage() + "!");
+        }
+    }
+
     @Override
     public void onAppEvent(String name, String info) {
         try {
diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/NativeAdViewContainer.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/NativeAdViewContainer.java
index fc99289..f5bdd3f 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/NativeAdViewContainer.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/NativeAdViewContainer.java
@@ -76,6 +76,7 @@ public class NativeAdViewContainer extends ReactViewGroup implements AppEventLis
     String publisherProvidedID;
     Location location;
     String correlator;
+    Boolean servePersonalizedAds = true;
     List<String> customClickTemplateIds;

     /**
@@ -267,6 +268,10 @@ public class NativeAdViewContainer extends ReactViewGroup implements AppEventLis
                     Bundle bundle = new Bundle();
                     bundle.putString("correlator", correlator);

+                    if (!servePersonalizedAds) {
+                        bundle.putInt("npa", 1);
+                    }
+
                     adRequestBuilder.addNetworkExtrasBundle(AdMobAdapter.class, bundle);

                     Bundle fbExtras = new FacebookExtras()
@@ -639,6 +644,10 @@ public class NativeAdViewContainer extends ReactViewGroup implements AppEventLis
         this.correlator = correlator;
     }

+    public void setServePersonalizedAds(Boolean servePersonalizedAds) {
+        this.servePersonalizedAds = servePersonalizedAds;
+    }
+
     public void setCustomClickTemplateIds(String[] customClickTemplateIds) {
         this.customClickTemplateIds = Arrays.asList(customClickTemplateIds);
     }
diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerAdaptiveBannerViewManager.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerAdaptiveBannerViewManager.java
index 3bbf879..2750c06 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerAdaptiveBannerViewManager.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerAdaptiveBannerViewManager.java
@@ -32,6 +32,7 @@ public class RNAdManagerAdaptiveBannerViewManager extends ViewGroupManager<Adapt
     public static final String PROP_TEST_DEVICES = "testDevices";
     public static final String PROP_TARGETING = "targeting";
     public static final String PROP_CORRELATOR = "correlator";
+    public static final String PROP_SERVE_PERSONALIZED_ADS = "servePersonalizedAds";

     public static final String EVENT_SIZE_CHANGE = "onSizeChange";
     public static final String EVENT_AD_LOADED = "onAdLoaded";
@@ -178,6 +179,11 @@ public class RNAdManagerAdaptiveBannerViewManager extends ViewGroupManager<Adapt
         view.setCorrelator(correlator);
     }

+    @ReactProp(name = PROP_SERVE_PERSONALIZED_ADS)
+    public void setServePersonalizedAds(final AdaptiveBannerAdView view, final Boolean servePersonalizedAds) {
+        view.setServePersonalizedAds(servePersonalizedAds);
+    }
+
     @Nullable
     @Override
     public Map<String, Integer> getCommandsMap() {
diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerBannerViewManager.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerBannerViewManager.java
index ebe4d31..7722a93 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerBannerViewManager.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerBannerViewManager.java
@@ -34,6 +34,7 @@ public class RNAdManagerBannerViewManager extends ViewGroupManager<BannerAdView>
     public static final String PROP_TEST_DEVICES = "testDevices";
     public static final String PROP_TARGETING = "targeting";
     public static final String PROP_CORRELATOR = "correlator";
+    public static final String PROP_SERVE_PERSONALIZED_ADS = "servePersonalizedAds";

     public static final String EVENT_SIZE_CHANGE = "onSizeChange";
     public static final String EVENT_AD_LOADED = "onAdLoaded";
@@ -190,6 +191,11 @@ public class RNAdManagerBannerViewManager extends ViewGroupManager<BannerAdView>
         view.setCorrelator(correlator);
     }

+    @ReactProp(name = PROP_SERVE_PERSONALIZED_ADS)
+    public void setServePersonalizedAds(final BannerAdView view, final Boolean servePersonalizedAds) {
+        view.setServePersonalizedAds(servePersonalizedAds);
+    }
+
     @Nullable
     @Override
     public Map<String, Integer> getCommandsMap() {
diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerInterstitial.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerInterstitial.java
index 5cbf131..ee3553b 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerInterstitial.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerInterstitial.java
@@ -2,6 +2,7 @@ package com.matejdr.admanager;

 import android.app.Activity;
 import android.location.Location;
+import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;

@@ -19,6 +20,7 @@ import com.facebook.react.bridge.ReadableMapKeySetIterator;
 import com.facebook.react.bridge.ReadableNativeArray;
 import com.facebook.react.bridge.WritableMap;
 import com.facebook.react.modules.core.DeviceEventManagerModule;
+import com.google.ads.mediation.admob.AdMobAdapter;
 import com.google.android.gms.ads.AdError;
 import com.google.android.gms.ads.FullScreenContentCallback;
 import com.google.android.gms.ads.LoadAdError;
@@ -60,6 +62,7 @@ public class RNAdManagerInterstitial extends ReactContextBaseJavaModule {
     ReactApplicationContext reactContext;

     private Promise mRequestAdPromise;
+    private Boolean servePersonalizedAds = true;

     public RNAdManagerInterstitial(ReactApplicationContext reactContext) {
         super(reactContext);
@@ -142,6 +145,11 @@ public class RNAdManagerInterstitial extends ReactContextBaseJavaModule {
         }
     }

+    @ReactMethod
+    public void setServePersonalizedAds(Boolean servePersonalizedAds) {
+        this.servePersonalizedAds = servePersonalizedAds;
+    }
+
     private AdManagerAdRequest buildAdRequest() {
         AdManagerAdRequest.Builder adRequestBuilder = new AdManagerAdRequest.Builder();

@@ -203,6 +211,13 @@ public class RNAdManagerInterstitial extends ReactContextBaseJavaModule {
         //    adRequestBuilder.setLocation(location);
         //}

+        Bundle bundle = new Bundle();
+        if (!servePersonalizedAds) {
+            bundle.putInt("npa", 1);
+        }
+
+        adRequestBuilder.addNetworkExtrasBundle(AdMobAdapter.class, bundle);
+
         adRequest = adRequestBuilder.build();

         this.adRequest = adRequest;
diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerNativeViewManager.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerNativeViewManager.java
index 334d36c..ea91528 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerNativeViewManager.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/RNAdManagerNativeViewManager.java
@@ -36,6 +36,8 @@ public class RNAdManagerNativeViewManager extends ViewGroupManager<NativeAdViewC
     public static final String PROP_VALID_AD_TYPES = "validAdTypes";
     public static final String PROP_TARGETING = "targeting";
     public static final String PROP_CORRELATOR = "correlator";
+    public static final String PROP_SERVE_PERSONALIZED_ADS = "servePersonalizedAds";
+

     public static final String EVENT_AD_LOADED = "onAdLoaded";
     public static final String EVENT_SIZE_CHANGE = "onSizeChange";
@@ -222,6 +224,11 @@ public class RNAdManagerNativeViewManager extends ViewGroupManager<NativeAdViewC
         view.setCustomClickTemplateIds(customTemplateClickIdsStringArray);
     }

+    @ReactProp(name = PROP_SERVE_PERSONALIZED_ADS)
+    public void setServePersonalizedAds(final NativeAdViewContainer view, final Boolean servePersonalizedAds) {
+        view.setServePersonalizedAds(servePersonalizedAds);
+    }
+
     @Override
     public void addView(NativeAdViewContainer parent, View child, int index) {
         parent.addView(child, index);
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManageNativeManager.m b/node_modules/react-native-ad-manager/ios/RNAdManageNativeManager.m
index b8ec4dd..2eb6acb 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManageNativeManager.m
+++ b/node_modules/react-native-ad-manager/ios/RNAdManageNativeManager.m
@@ -180,6 +180,7 @@ - (UIView *)view
 RCT_EXPORT_VIEW_PROPERTY(validAdSizes, NSArray)
 RCT_EXPORT_VIEW_PROPERTY(targeting, NSDictionary)
 RCT_EXPORT_VIEW_PROPERTY(correlator, NSString)
+RCT_EXPORT_VIEW_PROPERTY(servePersonalizedAds, BOOL)

 RCT_EXPORT_VIEW_PROPERTY(onSizeChange, RCTBubblingEventBlock)
 RCT_EXPORT_VIEW_PROPERTY(onAppEvent, RCTBubblingEventBlock)
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.h b/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.h
index dfcfd91..3fd6201 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.h
+++ b/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.h
@@ -33,6 +33,7 @@
 @property (nonatomic, copy) NSArray *validAdSizes;
 @property (nonatomic, copy) NSDictionary *targeting;
 @property (nonatomic, copy) NSString *correlator;
+@property (nonatomic) BOOL servePersonalizedAds;

 @property (nonatomic, copy) RCTBubblingEventBlock onSizeChange;
 @property (nonatomic, copy) RCTBubblingEventBlock onAppEvent;
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.m b/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.m
index bdcd22c..0905c7a 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.m
+++ b/node_modules/react-native-ad-manager/ios/RNAdManageNativeView.m
@@ -143,9 +143,16 @@ - (void)reloadAd {
     if (_correlator == nil) {
         _correlator = getCorrelator(_adUnitID);
     }
-    extras.additionalParameters = [[NSDictionary alloc] initWithObjectsAndKeys:
-                                   _correlator, @"correlator",
-                                   nil];
+
+    NSMutableDictionary *additionalParams = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
+                                             _correlator, @"correlator",
+                                             nil];
+    if (_servePersonalizedAds == NO) {
+        [additionalParams setObject:[NSNumber numberWithInt:1] forKey:@"npa"];
+    }
+
+    // Set the dictionary to extras.additionalParameters
+    extras.additionalParameters = [NSDictionary dictionaryWithDictionary:additionalParams];

     [request registerAdNetworkExtras:extras];

@@ -237,6 +244,12 @@ - (void)setCorrelator:(NSString *)correlator
     _correlator = correlator;
 }

+- (void)setServePersonalizedAds:(BOOL)servePersonalizedAds
+{
+  _servePersonalizedAds = servePersonalizedAds;
+}
+
+
 #pragma mark GADAdLoaderDelegate implementation

 /// Tells the delegate an ad request failed.UnifiedNativeAdView
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.h b/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.h
index feb6f25..ee93f65 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.h
+++ b/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.h
@@ -9,6 +9,7 @@
 @property (nonatomic, copy) NSNumber *maxHeight;
 @property (nonatomic, strong) NSString *adUnitID;
 @property (nonatomic, copy) NSString *correlator;
+@property (nonatomic) BOOL servePersonalizedAds;

 @property (nonatomic, copy) RCTBubblingEventBlock onSizeChange;
 @property (nonatomic, copy) RCTBubblingEventBlock onAppEvent;
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.m b/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.m
index f919e41..df30fb7 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.m
+++ b/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerView.m
@@ -53,6 +53,12 @@ - (void)setCorrelator:(NSString *)correlator
   _correlator = correlator;
 }

+- (void)setServePersonalizedAds:(BOOL)servePersonalizedAds
+{
+  _servePersonalizedAds = servePersonalizedAds;
+}
+
+
 // Initialise BannerAdView as soon as all the props are set
 - (void)createViewIfCan
 {
@@ -110,9 +116,17 @@ - (void)createViewIfCan
     if (_correlator == nil) {
         _correlator = getCorrelator(_adUnitID);
     }
-    extras.additionalParameters = [[NSDictionary alloc] initWithObjectsAndKeys:
-                                   _correlator, @"correlator",
-                                   nil];
+
+    NSMutableDictionary *additionalParams = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
+                                             _correlator, @"correlator",
+                                             nil];
+    if (_servePersonalizedAds == NO) {
+        [additionalParams setObject:[NSNumber numberWithInt:1] forKey:@"npa"];
+    }
+
+    // Set the dictionary to extras.additionalParameters
+    extras.additionalParameters = [NSDictionary dictionaryWithDictionary:additionalParams];
+
     [request registerAdNetworkExtras:extras];

     if (_targeting != nil) {
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerViewManager.m b/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerViewManager.m
index 0118f4e..a276856 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerViewManager.m
+++ b/node_modules/react-native-ad-manager/ios/RNAdManagerAdaptiveBannerViewManager.m
@@ -40,6 +40,7 @@ - (UIView *)view
 RCT_EXPORT_VIEW_PROPERTY(correlator, NSString)
 RCT_EXPORT_VIEW_PROPERTY(testDevices, NSArray)
 RCT_EXPORT_VIEW_PROPERTY(targeting, NSDictionary)
+RCT_EXPORT_VIEW_PROPERTY(servePersonalizedAds, BOOL)

 RCT_EXPORT_VIEW_PROPERTY(onSizeChange, RCTBubblingEventBlock)
 RCT_EXPORT_VIEW_PROPERTY(onAppEvent, RCTBubblingEventBlock)
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.h b/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.h
index e2ec2cb..d86d1f3 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.h
+++ b/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.h
@@ -9,6 +9,7 @@
 @property (nonatomic, copy) NSString *adSize;
 @property (nonatomic, strong) NSString *adUnitID;
 @property (nonatomic, copy) NSString *correlator;
+@property (nonatomic) BOOL servePersonalizedAds;

 @property (nonatomic, copy) RCTBubblingEventBlock onSizeChange;
 @property (nonatomic, copy) RCTBubblingEventBlock onAppEvent;
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.m b/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.m
index a92d69a..38fa5b6 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.m
+++ b/node_modules/react-native-ad-manager/ios/RNAdManagerBannerView.m
@@ -64,6 +64,11 @@ - (void)setCorrelator:(NSString *)correlator
   _correlator = correlator;
 }

+- (void)setServePersonalizedAds:(BOOL)servePersonalizedAds
+{
+  _servePersonalizedAds = servePersonalizedAds;
+}
+
 // Initialise BannerAdView as soon as all the props are set
 - (void)createViewIfCan
 {
@@ -97,9 +102,17 @@ - (void)createViewIfCan
     if (_correlator == nil) {
         _correlator = getCorrelator(_adUnitID);
     }
-    extras.additionalParameters = [[NSDictionary alloc] initWithObjectsAndKeys:
-                                   _correlator, @"correlator",
-                                   nil];
+
+    NSMutableDictionary *additionalParams = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
+                                             _correlator, @"correlator",
+                                             nil];
+    if (_servePersonalizedAds == NO) {
+        [additionalParams setObject:[NSNumber numberWithInt:1] forKey:@"npa"];
+    }
+
+    // Set the dictionary to extras.additionalParameters
+    extras.additionalParameters = [NSDictionary dictionaryWithDictionary:additionalParams];
+
     [request registerAdNetworkExtras:extras];

     if (_targeting != nil) {
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManagerBannerViewManager.m b/node_modules/react-native-ad-manager/ios/RNAdManagerBannerViewManager.m
index 0e7c50d..7a698ca 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManagerBannerViewManager.m
+++ b/node_modules/react-native-ad-manager/ios/RNAdManagerBannerViewManager.m
@@ -45,6 +45,7 @@ - (UIView *)view
 RCT_EXPORT_VIEW_PROPERTY(validAdSizes, NSArray)
 RCT_EXPORT_VIEW_PROPERTY(testDevices, NSArray)
 RCT_EXPORT_VIEW_PROPERTY(targeting, NSDictionary)
+RCT_EXPORT_VIEW_PROPERTY(servePersonalizedAds, BOOL)

 RCT_EXPORT_VIEW_PROPERTY(onSizeChange, RCTBubblingEventBlock)
 RCT_EXPORT_VIEW_PROPERTY(onAppEvent, RCTBubblingEventBlock)
diff --git a/node_modules/react-native-ad-manager/ios/RNAdManagerInterstitial.m b/node_modules/react-native-ad-manager/ios/RNAdManagerInterstitial.m
index ea69e41..d8033db 100644
--- a/node_modules/react-native-ad-manager/ios/RNAdManagerInterstitial.m
+++ b/node_modules/react-native-ad-manager/ios/RNAdManagerInterstitial.m
@@ -15,6 +15,7 @@ @implementation RNAdManagerInterstitial
     NSString *_adUnitID;
     NSArray *_testDevices;
     NSDictionary *_targeting;
+    BOOL _servePersonalizedAds;

     RCTPromiseResolveBlock _requestAdResolve;
     RCTPromiseRejectBlock _requestAdReject;
@@ -60,6 +61,11 @@ + (BOOL)requiresMainQueueSetup
     _targeting = targeting;
 }

+RCT_EXPORT_METHOD(setServePersonalizedAds:(BOOL) servePersonalizedAds)
+{
+    _servePersonalizedAds = servePersonalizedAds;
+}
+
 RCT_EXPORT_METHOD(requestAd:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
 {
     _requestAdResolve = nil;
@@ -73,6 +79,14 @@ + (BOOL)requiresMainQueueSetup
         GADMobileAds.sharedInstance.requestConfiguration.testDeviceIdentifiers = _testDevices;
         GAMRequest *request = [GAMRequest request];

+        if (_servePersonalizedAds == NO) {
+            GADExtras *extras = [[GADExtras alloc] init];
+            extras.additionalParameters = [[NSDictionary alloc] initWithObjectsAndKeys:
+                                           [NSNumber numberWithInt:1], @"npa",
+                                           nil];
+            [request registerAdNetworkExtras:extras];
+        }
+
         if (_targeting != nil) {
             NSDictionary *customTargeting = [_targeting objectForKey:@"customTargeting"];
             if (customTargeting != nil) {
diff --git a/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcodeproj/xcuserdata/mirkoquaglia.xcuserdatad/xcschemes/xcschememanagement.plist b/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcodeproj/xcuserdata/mirkoquaglia.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 0000000..249ece5
--- /dev/null
+++ b/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcodeproj/xcuserdata/mirkoquaglia.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>SchemeUserState</key>
+	<dict>
+		<key>ReactNativeAdManager.xcscheme_^#shared#^_</key>
+		<dict>
+			<key>orderHint</key>
+			<integer>0</integer>
+		</dict>
+	</dict>
+</dict>
+</plist>
diff --git a/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
new file mode 100644
index 0000000..18d9810
--- /dev/null
+++ b/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>
diff --git a/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcworkspace/xcuserdata/mirkoquaglia.xcuserdatad/UserInterfaceState.xcuserstate b/node_modules/react-native-ad-manager/ios/ReactNativeAdManager.xcworkspace/xcuserdata/mirkoquaglia.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerAdaptiveBanner.js.map b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerAdaptiveBanner.js.map
index 304ce16..5442a21 100644
--- a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerAdaptiveBanner.js.map
+++ b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerAdaptiveBanner.js.map
@@ -1 +1 @@
-{"version":3,"sources":["CTKAdManagerAdaptiveBanner.tsx"],"names":["ComponentName","AdManagerAdaptiveBannerView","UIManager","getViewManagerConfig","Error","LINKING_ERROR","AdaptiveBanner","React","Component","constructor","props","handleSizeChange","bind","state","style","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidMount","loadBanner","dispatchViewManagerCommand","Commands","nativeEvent","height","width","setState","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerAdaptiveBannerPropsBase extends ViewProps {\n  /**\n   * Adaptive banner position.\n   */\n  adPosition?:\n    | 'currentOrientationAnchored'\n    | 'currentOrientationInline'\n    | 'portraitInline'\n    | 'landscapeInline'\n    | 'inline';\n\n  /**\n   * Max height of the adaptive banner. Only works with \"inline\" adPosition.\n   */\n  maxHeight?: number;\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n}\n\ninterface IAdManagerAdaptiveBannerProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerAdaptiveBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n}\n\ninterface IAdManagerAdaptiveBannerNativeProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\nconst ComponentName = 'CTKAdaptiveBannerView';\n\nconst AdManagerAdaptiveBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerAdaptiveBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class AdaptiveBanner extends React.Component<\n  IAdManagerAdaptiveBannerProps,\n  IAdManagerAdaptiveBannerState\n> {\n  constructor(props: IAdManagerAdaptiveBannerProps) {\n    super(props);\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerAdaptiveBannerProps,\n    nextState: IAdManagerAdaptiveBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.loadBanner();\n  }\n\n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerAdaptiveBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["CTKAdManagerAdaptiveBanner.tsx"],"names":["ComponentName","AdManagerAdaptiveBannerView","UIManager","getViewManagerConfig","Error","LINKING_ERROR","AdaptiveBanner","React","Component","constructor","props","handleSizeChange","bind","state","style","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidMount","loadBanner","dispatchViewManagerCommand","Commands","nativeEvent","height","width","setState","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerAdaptiveBannerPropsBase extends ViewProps {\n  /**\n   * Adaptive banner position.\n   */\n  adPosition?:\n    | 'currentOrientationAnchored'\n    | 'currentOrientationInline'\n    | 'portraitInline'\n    | 'landscapeInline'\n    | 'inline';\n\n  /**\n   * Max height of the adaptive banner. Only works with \"inline\" adPosition.\n   */\n  maxHeight?: number;\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n\n  servePersonalizedAds?: boolean;\n}\n\ninterface IAdManagerAdaptiveBannerProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerAdaptiveBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n}\n\ninterface IAdManagerAdaptiveBannerNativeProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\nconst ComponentName = 'CTKAdaptiveBannerView';\n\nconst AdManagerAdaptiveBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerAdaptiveBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class AdaptiveBanner extends React.Component<\n  IAdManagerAdaptiveBannerProps,\n  IAdManagerAdaptiveBannerState\n> {\n  constructor(props: IAdManagerAdaptiveBannerProps) {\n    super(props);\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerAdaptiveBannerProps,\n    nextState: IAdManagerAdaptiveBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.loadBanner();\n  }\n\n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerAdaptiveBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerBanner.js.map b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerBanner.js.map
index 67a6608..a14f60d 100644
--- a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerBanner.js.map
+++ b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerBanner.js.map
@@ -1 +1 @@
-{"version":3,"sources":["CTKAdManagerBanner.tsx"],"names":["ComponentName","AdManagerBannerView","UIManager","getViewManagerConfig","Error","LINKING_ERROR","Banner","React","Component","constructor","props","hasOnErrorFromParent","Object","prototype","hasOwnProperty","call","handleSizeChange","bind","state","style","error","shouldComponentUpdate","nextProps","nextState","entries","toString","componentDidMount","customListener","DeviceEventEmitter","addListener","eventData","setState","onError","loadBanner","componentWillUnmount","remove","dispatchViewManagerCommand","Commands","nativeEvent","height","width","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","onAppEvent","onAdOpened","onAdClosed","onAdRecordImpression"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n  DeviceEventEmitter,  \n  EventSubscription\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerBannerPropsBase extends ViewProps {\n  /**\n   * DFP iOS library banner size constants\n   * (https://developers.google.com/admob/ios/banner)\n   * banner (320x50, Standard Banner for Phones and Tablets)\n   * fullBanner (468x60, IAB Full-Size Banner for Tablets)\n   * largeBanner (320x100, Large Banner for Phones and Tablets)\n   * mediumRectangle (300x250, IAB Medium Rectangle for Phones and Tablets)\n   * leaderboard (728x90, IAB Leaderboard for Tablets)\n   * skyscraper (120x600, Skyscraper size for the iPad. Mediation only. AdMob/Google does not offer this size)\n   * fluid (An ad size that spans the full width of its container, with a height dynamically determined by the ad)\n   * {\\d}x{\\d} (Dynamic size determined byt the user, 300x250, 300x100 etc.)\n   *\n   * banner is default\n   */\n  adSize?: string;\n\n  /**\n   * Optional array specifying all valid sizes that are appropriate for this slot.\n   */\n  validAdSizes?: string[];\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n}\n\ninterface IAdManagerBannerProps extends IAdManagerBannerPropsBase {\n  // onError is a callback function sent from parent RN component of your RN app, aka: the error handler. \n  // so if your RN App wants to handle the error, please pass in the \"onError\" function.\n  onError?: (eventData: Error) => void;\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n  error: Error | null;\n}\n\ninterface IAdManagerBannerNativeProps extends IAdManagerBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdRecordImpression?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\nconst ComponentName = 'CTKBannerView';\n\nconst AdManagerBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class Banner extends React.Component<\n  IAdManagerBannerProps,\n  IAdManagerBannerState\n> {\n  hasOnErrorFromParent: boolean;\n  customListener: EventSubscription | undefined;\n\n  constructor(props: IAdManagerBannerProps) {\n    super(props);\n    this.hasOnErrorFromParent = Object.prototype.hasOwnProperty.call(props, 'onError');\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n      error: null,\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerBannerProps,\n    nextState: IAdManagerBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.customListener= DeviceEventEmitter.addListener('onError',eventData=>{\n      this.setState({ error: eventData });\n      if (this.hasOnErrorFromParent && this.props.onError) {      \n        this.props.onError(eventData);\n      }\n    });    \n    this.loadBanner();\n  }\n  \n  componentWillUnmount() {\n    if (this.customListener) {\n      this.customListener.remove();\n    }\n  }\n  \n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n        onAdRecordImpression={(event) =>\n          this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["CTKAdManagerBanner.tsx"],"names":["ComponentName","AdManagerBannerView","UIManager","getViewManagerConfig","Error","LINKING_ERROR","Banner","React","Component","constructor","props","hasOnErrorFromParent","Object","prototype","hasOwnProperty","call","handleSizeChange","bind","state","style","error","shouldComponentUpdate","nextProps","nextState","entries","toString","componentDidMount","customListener","DeviceEventEmitter","addListener","eventData","setState","onError","loadBanner","componentWillUnmount","remove","dispatchViewManagerCommand","Commands","nativeEvent","height","width","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","onAppEvent","onAdOpened","onAdClosed","onAdRecordImpression"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n  DeviceEventEmitter,\n  EventSubscription,\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerBannerPropsBase extends ViewProps {\n  /**\n   * DFP iOS library banner size constants\n   * (https://developers.google.com/admob/ios/banner)\n   * banner (320x50, Standard Banner for Phones and Tablets)\n   * fullBanner (468x60, IAB Full-Size Banner for Tablets)\n   * largeBanner (320x100, Large Banner for Phones and Tablets)\n   * mediumRectangle (300x250, IAB Medium Rectangle for Phones and Tablets)\n   * leaderboard (728x90, IAB Leaderboard for Tablets)\n   * skyscraper (120x600, Skyscraper size for the iPad. Mediation only. AdMob/Google does not offer this size)\n   * fluid (An ad size that spans the full width of its container, with a height dynamically determined by the ad)\n   * {\\d}x{\\d} (Dynamic size determined byt the user, 300x250, 300x100 etc.)\n   *\n   * banner is default\n   */\n  adSize?: string;\n\n  /**\n   * Optional array specifying all valid sizes that are appropriate for this slot.\n   */\n  validAdSizes?: string[];\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n\n  servePersonalizedAds?: boolean;\n}\n\ninterface IAdManagerBannerProps extends IAdManagerBannerPropsBase {\n  // onError is a callback function sent from parent RN component of your RN app, aka: the error handler.\n  // so if your RN App wants to handle the error, please pass in the \"onError\" function.\n  onError?: (eventData: Error) => void;\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n  error: Error | null;\n}\n\ninterface IAdManagerBannerNativeProps extends IAdManagerBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdRecordImpression?: (\n    event: NativeSyntheticEvent<IAdManagerEventBase>\n  ) => void;\n}\n\nconst ComponentName = 'CTKBannerView';\n\nconst AdManagerBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class Banner extends React.Component<\n  IAdManagerBannerProps,\n  IAdManagerBannerState\n> {\n  hasOnErrorFromParent: boolean;\n  customListener: EventSubscription | undefined;\n\n  constructor(props: IAdManagerBannerProps) {\n    super(props);\n    this.hasOnErrorFromParent = Object.prototype.hasOwnProperty.call(\n      props,\n      'onError'\n    );\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n      error: null,\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerBannerProps,\n    nextState: IAdManagerBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.customListener = DeviceEventEmitter.addListener(\n      'onError',\n      (eventData) => {\n        this.setState({ error: eventData });\n        if (this.hasOnErrorFromParent && this.props.onError) {\n          this.props.onError(eventData);\n        }\n      }\n    );\n    this.loadBanner();\n  }\n\n  componentWillUnmount() {\n    if (this.customListener) {\n      this.customListener.remove();\n    }\n  }\n\n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n        onAdRecordImpression={(event) =>\n          this.props.onAdRecordImpression &&\n          this.props.onAdRecordImpression(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js
index 351717f..7394884 100644
--- a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js
+++ b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js
@@ -85,6 +85,10 @@ const setTargeting = targeting => {
   CTKInterstitial.setTargeting(targeting);
 };

+const setServePersonalizedAds = servePersonalizedAds => {
+  CTKInterstitial.setServePersonalizedAds(servePersonalizedAds);
+};
+
 const requestAd = () => {
   return CTKInterstitial.requestAd();
 };
@@ -107,6 +111,7 @@ var _default = {
   setTargeting,
   requestAd,
   showAd,
+  setServePersonalizedAds,
   isReady
 };
 exports.default = _default;
diff --git a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js.map b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js.map
index e81d757..c596ff2 100644
--- a/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js.map
+++ b/node_modules/react-native-ad-manager/lib/commonjs/CTKAdManagerInterstitial.js.map
@@ -1 +1 @@
-{"version":3,"sources":["CTKAdManagerInterstitial.ts"],"names":["CTKInterstitial","NativeModules","Proxy","get","Error","LINKING_ERROR","eventEmitter","NativeEventEmitter","eventMap","adLoaded","adFailedToLoad","adOpened","adClosed","_subscriptions","Map","addEventListener","event","handler","mappedEvent","listener","addListener","error","set","remove","removeEventListener","console","warn","_event","delete","removeAllListeners","forEach","key","map","simulatorId","setAdUnitID","adUnitID","setTestDevices","testDevices","setTargeting","targeting","requestAd","showAd","isReady","callback"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, NativeModules } from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventErrorPayload,\n  IAdManagerEventLoadedInterstitial,\n} from './AdManagerEvent';\nimport { LINKING_ERROR } from './Constants';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\n\nconst CTKInterstitial = NativeModules.CTKInterstitial\n  ? NativeModules.CTKInterstitial\n  : new Proxy(\n      {},\n      {\n        get() {\n          throw new Error(LINKING_ERROR);\n        },\n      }\n    );\n\nconst eventEmitter = new NativeEventEmitter(CTKInterstitial);\n\nconst eventMap = {\n  adLoaded: 'interstitialAdLoaded',\n  adFailedToLoad: 'interstitialAdFailedToLoad',\n  adOpened: 'interstitialAdOpened',\n  adClosed: 'interstitialAdClosed',\n};\n\ntype TAdManagerInterstitialEvent =\n  | 'adLoaded'\n  | 'adFailedToLoad'\n  | 'adOpened'\n  | 'adClosed';\n\ntype TAdManagerInterstitialHandler = (\n  event: Error | IAdManagerEventBase | IAdManagerEventLoadedInterstitial\n) => void;\n\nconst _subscriptions = new Map();\n\nconst addEventListener = (\n  event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const mappedEvent = eventMap[event];\n  if (mappedEvent) {\n    let listener;\n    if (event === 'adFailedToLoad') {\n      listener = eventEmitter.addListener(\n        mappedEvent,\n        (error: IAdManagerEventErrorPayload) =>\n          handler(createErrorFromErrorData(error))\n      );\n    } else {\n      listener = eventEmitter.addListener(mappedEvent, handler);\n    }\n    _subscriptions.set(handler, listener);\n    return {\n      remove: () => removeEventListener(event, handler),\n    };\n  } else {\n    console.warn(`Trying to subscribe to unknown event: \"${event}\"`);\n    return {\n      remove: () => {},\n    };\n  }\n};\n\nconst removeEventListener = (\n  _event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const listener = _subscriptions.get(handler);\n  if (!listener) {\n    return;\n  }\n  listener.remove();\n  _subscriptions.delete(handler);\n};\n\nconst removeAllListeners = () => {\n  _subscriptions.forEach((listener, key, map) => {\n    listener.remove();\n    map.delete(key);\n  });\n};\n\nconst simulatorId = 'SIMULATOR';\n\nconst setAdUnitID = (adUnitID: string) => {\n  CTKInterstitial.setAdUnitID(adUnitID);\n};\n\nconst setTestDevices = (testDevices: string[]) => {\n  CTKInterstitial.setTestDevices(testDevices);\n};\n\nconst setTargeting = (targeting: IAdManagerTargeting) => {\n  CTKInterstitial.setTargeting(targeting);\n};\n\nconst requestAd = (): Promise<null> => {\n  return CTKInterstitial.requestAd();\n}\n\nconst showAd = (): Promise<null> => {\n  return CTKInterstitial.showAd();\n}\n\nconst isReady = (callback: (isReady: boolean) => void): Promise<null> => {\n  return CTKInterstitial.isReady(callback);\n}\n\nexport default {\n  addEventListener,\n  removeEventListener,\n  removeAllListeners,\n  simulatorId,\n  setAdUnitID,\n  setTestDevices,\n  setTargeting,\n  requestAd,\n  showAd,\n  isReady\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["CTKAdManagerInterstitial.ts"],"names":["CTKInterstitial","NativeModules","Proxy","get","Error","LINKING_ERROR","eventEmitter","NativeEventEmitter","eventMap","adLoaded","adFailedToLoad","adOpened","adClosed","_subscriptions","Map","addEventListener","event","handler","mappedEvent","listener","addListener","error","set","remove","removeEventListener","console","warn","_event","delete","removeAllListeners","forEach","key","map","simulatorId","setAdUnitID","adUnitID","setTestDevices","testDevices","setTargeting","targeting","setServePersonalizedAds","servePersonalizedAds","requestAd","showAd","isReady","callback"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, NativeModules } from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventErrorPayload,\n  IAdManagerEventLoadedInterstitial,\n} from './AdManagerEvent';\nimport { LINKING_ERROR } from './Constants';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\n\nconst CTKInterstitial = NativeModules.CTKInterstitial\n  ? NativeModules.CTKInterstitial\n  : new Proxy(\n      {},\n      {\n        get() {\n          throw new Error(LINKING_ERROR);\n        },\n      }\n    );\n\nconst eventEmitter = new NativeEventEmitter(CTKInterstitial);\n\nconst eventMap = {\n  adLoaded: 'interstitialAdLoaded',\n  adFailedToLoad: 'interstitialAdFailedToLoad',\n  adOpened: 'interstitialAdOpened',\n  adClosed: 'interstitialAdClosed',\n};\n\ntype TAdManagerInterstitialEvent =\n  | 'adLoaded'\n  | 'adFailedToLoad'\n  | 'adOpened'\n  | 'adClosed';\n\ntype TAdManagerInterstitialHandler = (\n  event: Error | IAdManagerEventBase | IAdManagerEventLoadedInterstitial\n) => void;\n\nconst _subscriptions = new Map();\n\nconst addEventListener = (\n  event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const mappedEvent = eventMap[event];\n  if (mappedEvent) {\n    let listener;\n    if (event === 'adFailedToLoad') {\n      listener = eventEmitter.addListener(\n        mappedEvent,\n        (error: IAdManagerEventErrorPayload) =>\n          handler(createErrorFromErrorData(error))\n      );\n    } else {\n      listener = eventEmitter.addListener(mappedEvent, handler);\n    }\n    _subscriptions.set(handler, listener);\n    return {\n      remove: () => removeEventListener(event, handler),\n    };\n  } else {\n    console.warn(`Trying to subscribe to unknown event: \"${event}\"`);\n    return {\n      remove: () => {},\n    };\n  }\n};\n\nconst removeEventListener = (\n  _event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const listener = _subscriptions.get(handler);\n  if (!listener) {\n    return;\n  }\n  listener.remove();\n  _subscriptions.delete(handler);\n};\n\nconst removeAllListeners = () => {\n  _subscriptions.forEach((listener, key, map) => {\n    listener.remove();\n    map.delete(key);\n  });\n};\n\nconst simulatorId = 'SIMULATOR';\n\nconst setAdUnitID = (adUnitID: string) => {\n  CTKInterstitial.setAdUnitID(adUnitID);\n};\n\nconst setTestDevices = (testDevices: string[]) => {\n  CTKInterstitial.setTestDevices(testDevices);\n};\n\nconst setTargeting = (targeting: IAdManagerTargeting) => {\n  CTKInterstitial.setTargeting(targeting);\n};\n\nconst setServePersonalizedAds = (servePersonalizedAds: boolean) => {\n  CTKInterstitial.setServePersonalizedAds(servePersonalizedAds);\n};\n\nconst requestAd = (): Promise<null> => {\n  return CTKInterstitial.requestAd();\n};\n\nconst showAd = (): Promise<null> => {\n  return CTKInterstitial.showAd();\n};\n\nconst isReady = (callback: (isReady: boolean) => void): Promise<null> => {\n  return CTKInterstitial.isReady(callback);\n};\n\nexport default {\n  addEventListener,\n  removeEventListener,\n  removeAllListeners,\n  simulatorId,\n  setAdUnitID,\n  setTestDevices,\n  setTargeting,\n  requestAd,\n  showAd,\n  setServePersonalizedAds,\n  isReady,\n};\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js b/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js
index 439e59f..4b00e4d 100644
--- a/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js
+++ b/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js
@@ -179,7 +179,8 @@ var _default = Component => class NativeAdWrapper extends _react.default.Compone
       onAdRecordImpression: event => this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent),
       targeting: this.props.targeting,
       customClickTemplateIds: this.props.customClickTemplateIds,
-      adsManager: adsManager.toJSON()
+      adsManager: adsManager.toJSON(),
+      servePersonalizedAds: this.props.servePersonalizedAds
     }, this.renderAdComponent(rest));
   }

diff --git a/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js.map b/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js.map
index abaac86..520da49 100644
--- a/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js.map
+++ b/node_modules/react-native-ad-manager/lib/commonjs/native-ads/withNativeAd.js.map
@@ -1 +1 @@
-{"version":3,"sources":["withNativeAd.tsx"],"names":["areSetsEqual","a","b","size","aItem","has","ComponentName","NativeAdView","UIManager","getViewManagerConfig","Error","LINKING_ERROR","Component","NativeAdWrapper","React","constructor","props","Map","child","handle","clickableChildrenNodeHandles","set","setState","clickableChildren","state","add","newClickableChildren","Set","delete","get","nativeEvent","height","width","style","onSizeChange","nativeAd","onAdLoaded","componentDidMount","reloadAd","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidUpdate","_","prevState","clickableChildrenChanged","viewHandle","NativeAdsManager","registerViewsForInteractionAsync","then","catch","dispatchViewManagerCommand","Commands","renderAdComponent","componentProps","register","registerClickableChild","unregister","unregisterClickableChild","render","_a","adsManager","rest","adSize","adLoaderIndex","correlator","customTemplateIds","validAdSizes","validAdTypes","handleSizeChange","handleAdLoaded","event","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed","onAdCustomClick","onAdRecordImpression","targeting","customClickTemplateIds","toJSON"],"mappings":"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","sourcesContent":["import React, { JSXElementConstructor } from 'react';\nimport {\n  findNodeHandle,\n  NativeSyntheticEvent,\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n} from 'react-native';\nimport { TriggerableContext } from './TriggerableViewManager';\nimport { NativeAdsManager } from './NativeAdsManager';\nimport type {\n  IAdManagerTargeting,\n  TReactNodeHandleRef,\n} from '../AdManagerTypes';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventCustomClick,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventLoadedNative,\n  IAdManagerEventLoadedTemplate,\n  IAdManagerEventSize,\n  IAdManagerEventError,\n} from '../AdManagerEvent';\nimport { createErrorFromErrorData, stripProperties } from '../utils';\nimport { LINKING_ERROR } from '../Constants';\n\n/*\n@property (nonatomic, copy) NSDictionary *targeting;\n\n */\ninterface INativeAdPropsBase extends ViewProps {\n  adSize?: string;\n  correlator?: string;\n  customTemplateIds?: string[];\n  validAdSizes?: string[];\n  validAdTypes?: ('banner' | 'native' | 'template')[];\n  customClickTemplateIds?: string[];\n  targeting?: IAdManagerTargeting;\n}\n\ninterface INativeAdNativeProps extends INativeAdPropsBase {\n  children: React.ReactNode;\n  adsManager: string;\n  loaderIndex?: string;\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdCustomClick?: (\n    event: NativeSyntheticEvent<IAdManagerEventCustomClick>\n  ) => void;\n  onAdRecordImpression?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\ninterface INativeAdProps extends INativeAdPropsBase {\n  adsManager: NativeAdsManager;\n  adLoaderIndex?: string;\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (\n    event:\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n  ) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdCustomClick?: (event: IAdManagerEventCustomClick) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface INativeAdState {\n  clickableChildren: Set<TReactNodeHandleRef>;\n  style: {\n    width?: number;\n    height?: number;\n  };\n  nativeAd?:\n    | IAdManagerEventLoadedBanner\n    | IAdManagerEventLoadedTemplate\n    | IAdManagerEventLoadedNative;\n}\n\nconst areSetsEqual = (\n  a: Set<TReactNodeHandleRef>,\n  b: Set<TReactNodeHandleRef>\n) => {\n  if (a.size !== b.size) return false;\n  for (const aItem of a) {\n    if (!b.has(aItem)) return false;\n  }\n  return true;\n};\n\nconst ComponentName = 'CTKAdManageNative';\n\nconst NativeAdView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<INativeAdNativeProps>(ComponentName)\n    : () => {\n        // eslint-disable-next-line no-undef\n        throw new Error(LINKING_ERROR);\n      };\n\nexport default (Component: JSXElementConstructor<any>) =>\n  class NativeAdWrapper extends React.Component<\n    INativeAdProps,\n    INativeAdState\n  > {\n    clickableChildrenNodeHandles = new Map();\n\n    constructor(props: INativeAdProps) {\n      super(props);\n      this.state = {\n        // iOS requires a non-null value\n        clickableChildren: new Set(),\n        style: {},\n      };\n    }\n\n    componentDidMount() {\n      this.reloadAd();\n    }\n\n    registerClickableChild = (child: TReactNodeHandleRef) => {\n      const handle = findNodeHandle(child);\n      if (!handle) {\n        return;\n      }\n      this.clickableChildrenNodeHandles.set(child, handle);\n      this.setState({\n        clickableChildren: this.state.clickableChildren.add(handle),\n      });\n    };\n\n    unregisterClickableChild = (child: TReactNodeHandleRef) => {\n      this.setState(({ clickableChildren }) => {\n        const newClickableChildren = new Set(clickableChildren);\n        newClickableChildren.delete(\n          this.clickableChildrenNodeHandles.get(child)\n        );\n        this.clickableChildrenNodeHandles.delete(child);\n        return { clickableChildren: newClickableChildren };\n      });\n    };\n\n    handleSizeChange = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<IAdManagerEventSize>) => {\n      const { height, width } = nativeEvent;\n      this.setState({ style: { width, height } });\n      this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n    };\n\n    handleAdLoaded = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >) => {\n      this.setState({ nativeAd: nativeEvent });\n      this.props.onAdLoaded && this.props.onAdLoaded(nativeEvent);\n    };\n\n    shouldComponentUpdate(\n      nextProps: INativeAdProps,\n      nextState: INativeAdState\n    ) {\n      if (\n        Object.entries(this.state).toString() ===\n          Object.entries(nextState).toString() &&\n        Object.entries(this.props).toString() ===\n          Object.entries(nextProps).toString()\n      ) {\n        return false;\n      }\n      return true;\n    }\n\n    componentDidUpdate(_: INativeAdProps, prevState: INativeAdState) {\n      const clickableChildrenChanged = areSetsEqual(\n        prevState.clickableChildren,\n        this.state.clickableChildren\n      );\n      if (clickableChildrenChanged) {\n        const viewHandle = findNodeHandle(this);\n        if (!viewHandle) {\n          // Skip registration if the view is no longer valid.\n          return;\n        }\n\n        NativeAdsManager.registerViewsForInteractionAsync(viewHandle, [\n          ...this.state.clickableChildren,\n        ])\n          .then(() => {\n            // do nothing for now\n          })\n          .catch(() => {\n            // do nothing for now\n          });\n      }\n    }\n\n    reloadAd() {\n      UIManager.dispatchViewManagerCommand(\n        findNodeHandle(this),\n        UIManager.getViewManagerConfig(ComponentName).Commands.reloadAd,\n        []\n      );\n    }\n\n    renderAdComponent(componentProps: INativeAdProps) {\n      if (!this.state.nativeAd) {\n        return null;\n      }\n\n      return (\n        <TriggerableContext.Provider\n          value={{\n            register: this.registerClickableChild,\n            unregister: this.unregisterClickableChild,\n          }}\n        >\n          <Component {...componentProps} nativeAd={this.state.nativeAd} />\n        </TriggerableContext.Provider>\n      );\n    }\n\n    render() {\n      // Cast to any until https://github.com/Microsoft/TypeScript/issues/10727 is resolved\n      const _a = this.props,\n        { adsManager } = _a,\n        rest = stripProperties(_a, ['adsManager', 'onAdLoaded']);\n\n      return (\n        <NativeAdView\n          style={[this.props.style, this.state.style]}\n          adSize={this.props.adSize}\n          loaderIndex={this.props.adLoaderIndex}\n          correlator={this.props.correlator}\n          customTemplateIds={this.props.customTemplateIds}\n          validAdSizes={this.props.validAdSizes}\n          validAdTypes={this.props.validAdTypes}\n          onSizeChange={this.handleSizeChange}\n          onAdLoaded={this.handleAdLoaded}\n          onAdFailedToLoad={(event) =>\n            this.props.onAdFailedToLoad &&\n            this.props.onAdFailedToLoad(\n              createErrorFromErrorData(event.nativeEvent.error)\n            )\n          }\n          onAppEvent={(event) =>\n            this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n          }\n          onAdOpened={(event) =>\n            this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n          }\n          onAdClosed={(event) =>\n            this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n          }\n          onAdCustomClick={(event) =>\n            this.props.onAdCustomClick &&\n            this.props.onAdCustomClick(event.nativeEvent)\n          }\n          onAdRecordImpression={(event) =>\n            this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent)\n          }\n          targeting={this.props.targeting}\n          customClickTemplateIds={this.props.customClickTemplateIds}\n          adsManager={adsManager.toJSON()}\n        >\n          {this.renderAdComponent(rest)}\n        </NativeAdView>\n      );\n    }\n  };\n"]}
\ No newline at end of file
+{"version":3,"sources":["withNativeAd.tsx"],"names":["areSetsEqual","a","b","size","aItem","has","ComponentName","NativeAdView","UIManager","getViewManagerConfig","Error","LINKING_ERROR","Component","NativeAdWrapper","React","constructor","props","Map","child","handle","clickableChildrenNodeHandles","set","setState","clickableChildren","state","add","newClickableChildren","Set","delete","get","nativeEvent","height","width","style","onSizeChange","nativeAd","onAdLoaded","componentDidMount","reloadAd","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidUpdate","_","prevState","clickableChildrenChanged","viewHandle","NativeAdsManager","registerViewsForInteractionAsync","then","catch","dispatchViewManagerCommand","Commands","renderAdComponent","componentProps","register","registerClickableChild","unregister","unregisterClickableChild","render","_a","adsManager","rest","adSize","adLoaderIndex","correlator","customTemplateIds","validAdSizes","validAdTypes","handleSizeChange","handleAdLoaded","event","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed","onAdCustomClick","onAdRecordImpression","targeting","customClickTemplateIds","toJSON","servePersonalizedAds"],"mappings":"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","sourcesContent":["import React, { JSXElementConstructor } from 'react';\nimport {\n  findNodeHandle,\n  NativeSyntheticEvent,\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n} from 'react-native';\nimport { TriggerableContext } from './TriggerableViewManager';\nimport { NativeAdsManager } from './NativeAdsManager';\nimport type {\n  IAdManagerTargeting,\n  TReactNodeHandleRef,\n} from '../AdManagerTypes';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventCustomClick,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventLoadedNative,\n  IAdManagerEventLoadedTemplate,\n  IAdManagerEventSize,\n  IAdManagerEventError,\n} from '../AdManagerEvent';\nimport { createErrorFromErrorData, stripProperties } from '../utils';\nimport { LINKING_ERROR } from '../Constants';\n\n/*\n@property (nonatomic, copy) NSDictionary *targeting;\n\n */\ninterface INativeAdPropsBase extends ViewProps {\n  adSize?: string;\n  correlator?: string;\n  customTemplateIds?: string[];\n  validAdSizes?: string[];\n  validAdTypes?: ('banner' | 'native' | 'template')[];\n  customClickTemplateIds?: string[];\n  targeting?: IAdManagerTargeting;\n  servePersonalizedAds?: boolean;\n}\n\ninterface INativeAdNativeProps extends INativeAdPropsBase {\n  children: React.ReactNode;\n  adsManager: string;\n  loaderIndex?: string;\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdCustomClick?: (\n    event: NativeSyntheticEvent<IAdManagerEventCustomClick>\n  ) => void;\n  onAdRecordImpression?: (\n    event: NativeSyntheticEvent<IAdManagerEventBase>\n  ) => void;\n}\n\ninterface INativeAdProps extends INativeAdPropsBase {\n  adsManager: NativeAdsManager;\n  adLoaderIndex?: string;\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (\n    event:\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n  ) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdCustomClick?: (event: IAdManagerEventCustomClick) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface INativeAdState {\n  clickableChildren: Set<TReactNodeHandleRef>;\n  style: {\n    width?: number;\n    height?: number;\n  };\n  nativeAd?:\n    | IAdManagerEventLoadedBanner\n    | IAdManagerEventLoadedTemplate\n    | IAdManagerEventLoadedNative;\n}\n\nconst areSetsEqual = (\n  a: Set<TReactNodeHandleRef>,\n  b: Set<TReactNodeHandleRef>\n) => {\n  if (a.size !== b.size) return false;\n  for (const aItem of a) {\n    if (!b.has(aItem)) return false;\n  }\n  return true;\n};\n\nconst ComponentName = 'CTKAdManageNative';\n\nconst NativeAdView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<INativeAdNativeProps>(ComponentName)\n    : () => {\n        // eslint-disable-next-line no-undef\n        throw new Error(LINKING_ERROR);\n      };\n\nexport default (Component: JSXElementConstructor<any>) =>\n  class NativeAdWrapper extends React.Component<\n    INativeAdProps,\n    INativeAdState\n  > {\n    clickableChildrenNodeHandles = new Map();\n\n    constructor(props: INativeAdProps) {\n      super(props);\n      this.state = {\n        // iOS requires a non-null value\n        clickableChildren: new Set(),\n        style: {},\n      };\n    }\n\n    componentDidMount() {\n      this.reloadAd();\n    }\n\n    registerClickableChild = (child: TReactNodeHandleRef) => {\n      const handle = findNodeHandle(child);\n      if (!handle) {\n        return;\n      }\n      this.clickableChildrenNodeHandles.set(child, handle);\n      this.setState({\n        clickableChildren: this.state.clickableChildren.add(handle),\n      });\n    };\n\n    unregisterClickableChild = (child: TReactNodeHandleRef) => {\n      this.setState(({ clickableChildren }) => {\n        const newClickableChildren = new Set(clickableChildren);\n        newClickableChildren.delete(\n          this.clickableChildrenNodeHandles.get(child)\n        );\n        this.clickableChildrenNodeHandles.delete(child);\n        return { clickableChildren: newClickableChildren };\n      });\n    };\n\n    handleSizeChange = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<IAdManagerEventSize>) => {\n      const { height, width } = nativeEvent;\n      this.setState({ style: { width, height } });\n      this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n    };\n\n    handleAdLoaded = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >) => {\n      this.setState({ nativeAd: nativeEvent });\n      this.props.onAdLoaded && this.props.onAdLoaded(nativeEvent);\n    };\n\n    shouldComponentUpdate(\n      nextProps: INativeAdProps,\n      nextState: INativeAdState\n    ) {\n      if (\n        Object.entries(this.state).toString() ===\n          Object.entries(nextState).toString() &&\n        Object.entries(this.props).toString() ===\n          Object.entries(nextProps).toString()\n      ) {\n        return false;\n      }\n      return true;\n    }\n\n    componentDidUpdate(_: INativeAdProps, prevState: INativeAdState) {\n      const clickableChildrenChanged = areSetsEqual(\n        prevState.clickableChildren,\n        this.state.clickableChildren\n      );\n      if (clickableChildrenChanged) {\n        const viewHandle = findNodeHandle(this);\n        if (!viewHandle) {\n          // Skip registration if the view is no longer valid.\n          return;\n        }\n\n        NativeAdsManager.registerViewsForInteractionAsync(viewHandle, [\n          ...this.state.clickableChildren,\n        ])\n          .then(() => {\n            // do nothing for now\n          })\n          .catch(() => {\n            // do nothing for now\n          });\n      }\n    }\n\n    reloadAd() {\n      UIManager.dispatchViewManagerCommand(\n        findNodeHandle(this),\n        UIManager.getViewManagerConfig(ComponentName).Commands.reloadAd,\n        []\n      );\n    }\n\n    renderAdComponent(componentProps: INativeAdProps) {\n      if (!this.state.nativeAd) {\n        return null;\n      }\n\n      return (\n        <TriggerableContext.Provider\n          value={{\n            register: this.registerClickableChild,\n            unregister: this.unregisterClickableChild,\n          }}\n        >\n          <Component {...componentProps} nativeAd={this.state.nativeAd} />\n        </TriggerableContext.Provider>\n      );\n    }\n\n    render() {\n      // Cast to any until https://github.com/Microsoft/TypeScript/issues/10727 is resolved\n      const _a = this.props,\n        { adsManager } = _a,\n        rest = stripProperties(_a, ['adsManager', 'onAdLoaded']);\n\n      return (\n        <NativeAdView\n          style={[this.props.style, this.state.style]}\n          adSize={this.props.adSize}\n          loaderIndex={this.props.adLoaderIndex}\n          correlator={this.props.correlator}\n          customTemplateIds={this.props.customTemplateIds}\n          validAdSizes={this.props.validAdSizes}\n          validAdTypes={this.props.validAdTypes}\n          onSizeChange={this.handleSizeChange}\n          onAdLoaded={this.handleAdLoaded}\n          onAdFailedToLoad={(event) =>\n            this.props.onAdFailedToLoad &&\n            this.props.onAdFailedToLoad(\n              createErrorFromErrorData(event.nativeEvent.error)\n            )\n          }\n          onAppEvent={(event) =>\n            this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n          }\n          onAdOpened={(event) =>\n            this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n          }\n          onAdClosed={(event) =>\n            this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n          }\n          onAdCustomClick={(event) =>\n            this.props.onAdCustomClick &&\n            this.props.onAdCustomClick(event.nativeEvent)\n          }\n          onAdRecordImpression={(event) =>\n            this.props.onAdRecordImpression &&\n            this.props.onAdRecordImpression(event.nativeEvent)\n          }\n          targeting={this.props.targeting}\n          customClickTemplateIds={this.props.customClickTemplateIds}\n          adsManager={adsManager.toJSON()}\n          servePersonalizedAds={this.props.servePersonalizedAds}\n        >\n          {this.renderAdComponent(rest)}\n        </NativeAdView>\n      );\n    }\n  };\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerAdaptiveBanner.js.map b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerAdaptiveBanner.js.map
index ca11779..e04a0f0 100644
--- a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerAdaptiveBanner.js.map
+++ b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerAdaptiveBanner.js.map
@@ -1 +1 @@
-{"version":3,"sources":["CTKAdManagerAdaptiveBanner.tsx"],"names":["React","requireNativeComponent","UIManager","findNodeHandle","createErrorFromErrorData","LINKING_ERROR","ComponentName","AdManagerAdaptiveBannerView","getViewManagerConfig","Error","AdaptiveBanner","Component","constructor","props","handleSizeChange","bind","state","style","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidMount","loadBanner","dispatchViewManagerCommand","Commands","nativeEvent","height","width","setState","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerAdaptiveBannerPropsBase extends ViewProps {\n  /**\n   * Adaptive banner position.\n   */\n  adPosition?:\n    | 'currentOrientationAnchored'\n    | 'currentOrientationInline'\n    | 'portraitInline'\n    | 'landscapeInline'\n    | 'inline';\n\n  /**\n   * Max height of the adaptive banner. Only works with \"inline\" adPosition.\n   */\n  maxHeight?: number;\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n}\n\ninterface IAdManagerAdaptiveBannerProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerAdaptiveBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n}\n\ninterface IAdManagerAdaptiveBannerNativeProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\nconst ComponentName = 'CTKAdaptiveBannerView';\n\nconst AdManagerAdaptiveBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerAdaptiveBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class AdaptiveBanner extends React.Component<\n  IAdManagerAdaptiveBannerProps,\n  IAdManagerAdaptiveBannerState\n> {\n  constructor(props: IAdManagerAdaptiveBannerProps) {\n    super(props);\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerAdaptiveBannerProps,\n    nextState: IAdManagerAdaptiveBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.loadBanner();\n  }\n\n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerAdaptiveBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["CTKAdManagerAdaptiveBanner.tsx"],"names":["React","requireNativeComponent","UIManager","findNodeHandle","createErrorFromErrorData","LINKING_ERROR","ComponentName","AdManagerAdaptiveBannerView","getViewManagerConfig","Error","AdaptiveBanner","Component","constructor","props","handleSizeChange","bind","state","style","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidMount","loadBanner","dispatchViewManagerCommand","Commands","nativeEvent","height","width","setState","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerAdaptiveBannerPropsBase extends ViewProps {\n  /**\n   * Adaptive banner position.\n   */\n  adPosition?:\n    | 'currentOrientationAnchored'\n    | 'currentOrientationInline'\n    | 'portraitInline'\n    | 'landscapeInline'\n    | 'inline';\n\n  /**\n   * Max height of the adaptive banner. Only works with \"inline\" adPosition.\n   */\n  maxHeight?: number;\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n\n  servePersonalizedAds?: boolean;\n}\n\ninterface IAdManagerAdaptiveBannerProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerAdaptiveBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n}\n\ninterface IAdManagerAdaptiveBannerNativeProps\n  extends IAdManagerAdaptiveBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\nconst ComponentName = 'CTKAdaptiveBannerView';\n\nconst AdManagerAdaptiveBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerAdaptiveBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class AdaptiveBanner extends React.Component<\n  IAdManagerAdaptiveBannerProps,\n  IAdManagerAdaptiveBannerState\n> {\n  constructor(props: IAdManagerAdaptiveBannerProps) {\n    super(props);\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerAdaptiveBannerProps,\n    nextState: IAdManagerAdaptiveBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.loadBanner();\n  }\n\n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerAdaptiveBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerBanner.js.map b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerBanner.js.map
index 02def61..ee14c2e 100644
--- a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerBanner.js.map
+++ b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerBanner.js.map
@@ -1 +1 @@
-{"version":3,"sources":["CTKAdManagerBanner.tsx"],"names":["React","requireNativeComponent","UIManager","findNodeHandle","DeviceEventEmitter","createErrorFromErrorData","LINKING_ERROR","ComponentName","AdManagerBannerView","getViewManagerConfig","Error","Banner","Component","constructor","props","hasOnErrorFromParent","Object","prototype","hasOwnProperty","call","handleSizeChange","bind","state","style","error","shouldComponentUpdate","nextProps","nextState","entries","toString","componentDidMount","customListener","addListener","eventData","setState","onError","loadBanner","componentWillUnmount","remove","dispatchViewManagerCommand","Commands","nativeEvent","height","width","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","onAppEvent","onAdOpened","onAdClosed","onAdRecordImpression"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n  DeviceEventEmitter,  \n  EventSubscription\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerBannerPropsBase extends ViewProps {\n  /**\n   * DFP iOS library banner size constants\n   * (https://developers.google.com/admob/ios/banner)\n   * banner (320x50, Standard Banner for Phones and Tablets)\n   * fullBanner (468x60, IAB Full-Size Banner for Tablets)\n   * largeBanner (320x100, Large Banner for Phones and Tablets)\n   * mediumRectangle (300x250, IAB Medium Rectangle for Phones and Tablets)\n   * leaderboard (728x90, IAB Leaderboard for Tablets)\n   * skyscraper (120x600, Skyscraper size for the iPad. Mediation only. AdMob/Google does not offer this size)\n   * fluid (An ad size that spans the full width of its container, with a height dynamically determined by the ad)\n   * {\\d}x{\\d} (Dynamic size determined byt the user, 300x250, 300x100 etc.)\n   *\n   * banner is default\n   */\n  adSize?: string;\n\n  /**\n   * Optional array specifying all valid sizes that are appropriate for this slot.\n   */\n  validAdSizes?: string[];\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n}\n\ninterface IAdManagerBannerProps extends IAdManagerBannerPropsBase {\n  // onError is a callback function sent from parent RN component of your RN app, aka: the error handler. \n  // so if your RN App wants to handle the error, please pass in the \"onError\" function.\n  onError?: (eventData: Error) => void;\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n  error: Error | null;\n}\n\ninterface IAdManagerBannerNativeProps extends IAdManagerBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdRecordImpression?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\nconst ComponentName = 'CTKBannerView';\n\nconst AdManagerBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class Banner extends React.Component<\n  IAdManagerBannerProps,\n  IAdManagerBannerState\n> {\n  hasOnErrorFromParent: boolean;\n  customListener: EventSubscription | undefined;\n\n  constructor(props: IAdManagerBannerProps) {\n    super(props);\n    this.hasOnErrorFromParent = Object.prototype.hasOwnProperty.call(props, 'onError');\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n      error: null,\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerBannerProps,\n    nextState: IAdManagerBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.customListener= DeviceEventEmitter.addListener('onError',eventData=>{\n      this.setState({ error: eventData });\n      if (this.hasOnErrorFromParent && this.props.onError) {      \n        this.props.onError(eventData);\n      }\n    });    \n    this.loadBanner();\n  }\n  \n  componentWillUnmount() {\n    if (this.customListener) {\n      this.customListener.remove();\n    }\n  }\n  \n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n        onAdRecordImpression={(event) =>\n          this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["CTKAdManagerBanner.tsx"],"names":["React","requireNativeComponent","UIManager","findNodeHandle","DeviceEventEmitter","createErrorFromErrorData","LINKING_ERROR","ComponentName","AdManagerBannerView","getViewManagerConfig","Error","Banner","Component","constructor","props","hasOnErrorFromParent","Object","prototype","hasOwnProperty","call","handleSizeChange","bind","state","style","error","shouldComponentUpdate","nextProps","nextState","entries","toString","componentDidMount","customListener","addListener","eventData","setState","onError","loadBanner","componentWillUnmount","remove","dispatchViewManagerCommand","Commands","nativeEvent","height","width","onSizeChange","render","event","onAdLoaded","onAdFailedToLoad","onAppEvent","onAdOpened","onAdClosed","onAdRecordImpression"],"mappings":"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","sourcesContent":["import React from 'react';\nimport {\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n  findNodeHandle,\n  NativeSyntheticEvent,\n  DeviceEventEmitter,\n  EventSubscription,\n} from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventError,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventSize,\n} from './AdManagerEvent';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\nimport { LINKING_ERROR } from './Constants';\n\ninterface IAdManagerBannerPropsBase extends ViewProps {\n  /**\n   * DFP iOS library banner size constants\n   * (https://developers.google.com/admob/ios/banner)\n   * banner (320x50, Standard Banner for Phones and Tablets)\n   * fullBanner (468x60, IAB Full-Size Banner for Tablets)\n   * largeBanner (320x100, Large Banner for Phones and Tablets)\n   * mediumRectangle (300x250, IAB Medium Rectangle for Phones and Tablets)\n   * leaderboard (728x90, IAB Leaderboard for Tablets)\n   * skyscraper (120x600, Skyscraper size for the iPad. Mediation only. AdMob/Google does not offer this size)\n   * fluid (An ad size that spans the full width of its container, with a height dynamically determined by the ad)\n   * {\\d}x{\\d} (Dynamic size determined byt the user, 300x250, 300x100 etc.)\n   *\n   * banner is default\n   */\n  adSize?: string;\n\n  /**\n   * Optional array specifying all valid sizes that are appropriate for this slot.\n   */\n  validAdSizes?: string[];\n\n  /**\n   * DFP ad unit ID\n   */\n  adUnitID?: string;\n\n  /**\n   * Array of test devices. Use Banner.simulatorId for the simulator\n   */\n  testDevices?: string[];\n\n  targeting?: IAdManagerTargeting;\n\n  servePersonalizedAds?: boolean;\n}\n\ninterface IAdManagerBannerProps extends IAdManagerBannerPropsBase {\n  // onError is a callback function sent from parent RN component of your RN app, aka: the error handler.\n  // so if your RN App wants to handle the error, please pass in the \"onError\" function.\n  onError?: (eventData: Error) => void;\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (event: IAdManagerEventLoadedBanner) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface IAdManagerBannerState {\n  style: {\n    width?: number;\n    height?: number;\n  };\n  error: Error | null;\n}\n\ninterface IAdManagerBannerNativeProps extends IAdManagerBannerPropsBase {\n  /**\n   * DFP library events\n   */\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<IAdManagerEventLoadedBanner>\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdRecordImpression?: (\n    event: NativeSyntheticEvent<IAdManagerEventBase>\n  ) => void;\n}\n\nconst ComponentName = 'CTKBannerView';\n\nconst AdManagerBannerView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<IAdManagerBannerNativeProps>(ComponentName)\n    : () => {\n        throw new Error(LINKING_ERROR);\n      };\n\nexport class Banner extends React.Component<\n  IAdManagerBannerProps,\n  IAdManagerBannerState\n> {\n  hasOnErrorFromParent: boolean;\n  customListener: EventSubscription | undefined;\n\n  constructor(props: IAdManagerBannerProps) {\n    super(props);\n    this.hasOnErrorFromParent = Object.prototype.hasOwnProperty.call(\n      props,\n      'onError'\n    );\n    this.handleSizeChange = this.handleSizeChange.bind(this);\n    this.state = {\n      style: {},\n      error: null,\n    };\n  }\n\n  shouldComponentUpdate(\n    nextProps: IAdManagerBannerProps,\n    nextState: IAdManagerBannerState\n  ) {\n    if (\n      Object.entries(this.state.style).toString() ===\n        Object.entries(nextState.style).toString() &&\n      Object.entries(this.props).toString() ===\n        Object.entries(nextProps).toString()\n    ) {\n      return false;\n    }\n    return true;\n  }\n\n  componentDidMount() {\n    this.customListener = DeviceEventEmitter.addListener(\n      'onError',\n      (eventData) => {\n        this.setState({ error: eventData });\n        if (this.hasOnErrorFromParent && this.props.onError) {\n          this.props.onError(eventData);\n        }\n      }\n    );\n    this.loadBanner();\n  }\n\n  componentWillUnmount() {\n    if (this.customListener) {\n      this.customListener.remove();\n    }\n  }\n\n  loadBanner() {\n    UIManager.dispatchViewManagerCommand(\n      findNodeHandle(this),\n      UIManager.getViewManagerConfig(ComponentName).Commands.loadBanner,\n      []\n    );\n  }\n\n  handleSizeChange({ nativeEvent }: NativeSyntheticEvent<IAdManagerEventSize>) {\n    const { height, width } = nativeEvent;\n    this.setState({ style: { width, height } });\n    this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n  }\n\n  render() {\n    return (\n      <AdManagerBannerView\n        {...this.props}\n        style={[this.props.style, this.state.style]}\n        onSizeChange={this.handleSizeChange}\n        onAdLoaded={(event) =>\n          this.props.onAdLoaded && this.props.onAdLoaded(event.nativeEvent)\n        }\n        onAdFailedToLoad={(event) =>\n          this.props.onAdFailedToLoad &&\n          this.props.onAdFailedToLoad(\n            createErrorFromErrorData(event.nativeEvent.error)\n          )\n        }\n        onAppEvent={(event) =>\n          this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n        }\n        onAdOpened={(event) =>\n          this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n        }\n        onAdClosed={(event) =>\n          this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n        }\n        onAdRecordImpression={(event) =>\n          this.props.onAdRecordImpression &&\n          this.props.onAdRecordImpression(event.nativeEvent)\n        }\n      />\n    );\n  }\n}\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js
index 2622210..33f9fd8 100644
--- a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js
+++ b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js
@@ -75,6 +75,10 @@ const setTargeting = targeting => {
   CTKInterstitial.setTargeting(targeting);
 };

+const setServePersonalizedAds = servePersonalizedAds => {
+  CTKInterstitial.setServePersonalizedAds(servePersonalizedAds);
+};
+
 const requestAd = () => {
   return CTKInterstitial.requestAd();
 };
@@ -97,6 +101,7 @@ export default {
   setTargeting,
   requestAd,
   showAd,
+  setServePersonalizedAds,
   isReady
 };
 //# sourceMappingURL=CTKAdManagerInterstitial.js.map
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js.map b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js.map
index 899138d..a83c9d0 100644
--- a/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js.map
+++ b/node_modules/react-native-ad-manager/lib/module/CTKAdManagerInterstitial.js.map
@@ -1 +1 @@
-{"version":3,"sources":["CTKAdManagerInterstitial.ts"],"names":["NativeEventEmitter","NativeModules","createErrorFromErrorData","LINKING_ERROR","CTKInterstitial","Proxy","get","Error","eventEmitter","eventMap","adLoaded","adFailedToLoad","adOpened","adClosed","_subscriptions","Map","addEventListener","event","handler","mappedEvent","listener","addListener","error","set","remove","removeEventListener","console","warn","_event","delete","removeAllListeners","forEach","key","map","simulatorId","setAdUnitID","adUnitID","setTestDevices","testDevices","setTargeting","targeting","requestAd","showAd","isReady","callback"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, NativeModules } from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventErrorPayload,\n  IAdManagerEventLoadedInterstitial,\n} from './AdManagerEvent';\nimport { LINKING_ERROR } from './Constants';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\n\nconst CTKInterstitial = NativeModules.CTKInterstitial\n  ? NativeModules.CTKInterstitial\n  : new Proxy(\n      {},\n      {\n        get() {\n          throw new Error(LINKING_ERROR);\n        },\n      }\n    );\n\nconst eventEmitter = new NativeEventEmitter(CTKInterstitial);\n\nconst eventMap = {\n  adLoaded: 'interstitialAdLoaded',\n  adFailedToLoad: 'interstitialAdFailedToLoad',\n  adOpened: 'interstitialAdOpened',\n  adClosed: 'interstitialAdClosed',\n};\n\ntype TAdManagerInterstitialEvent =\n  | 'adLoaded'\n  | 'adFailedToLoad'\n  | 'adOpened'\n  | 'adClosed';\n\ntype TAdManagerInterstitialHandler = (\n  event: Error | IAdManagerEventBase | IAdManagerEventLoadedInterstitial\n) => void;\n\nconst _subscriptions = new Map();\n\nconst addEventListener = (\n  event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const mappedEvent = eventMap[event];\n  if (mappedEvent) {\n    let listener;\n    if (event === 'adFailedToLoad') {\n      listener = eventEmitter.addListener(\n        mappedEvent,\n        (error: IAdManagerEventErrorPayload) =>\n          handler(createErrorFromErrorData(error))\n      );\n    } else {\n      listener = eventEmitter.addListener(mappedEvent, handler);\n    }\n    _subscriptions.set(handler, listener);\n    return {\n      remove: () => removeEventListener(event, handler),\n    };\n  } else {\n    console.warn(`Trying to subscribe to unknown event: \"${event}\"`);\n    return {\n      remove: () => {},\n    };\n  }\n};\n\nconst removeEventListener = (\n  _event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const listener = _subscriptions.get(handler);\n  if (!listener) {\n    return;\n  }\n  listener.remove();\n  _subscriptions.delete(handler);\n};\n\nconst removeAllListeners = () => {\n  _subscriptions.forEach((listener, key, map) => {\n    listener.remove();\n    map.delete(key);\n  });\n};\n\nconst simulatorId = 'SIMULATOR';\n\nconst setAdUnitID = (adUnitID: string) => {\n  CTKInterstitial.setAdUnitID(adUnitID);\n};\n\nconst setTestDevices = (testDevices: string[]) => {\n  CTKInterstitial.setTestDevices(testDevices);\n};\n\nconst setTargeting = (targeting: IAdManagerTargeting) => {\n  CTKInterstitial.setTargeting(targeting);\n};\n\nconst requestAd = (): Promise<null> => {\n  return CTKInterstitial.requestAd();\n}\n\nconst showAd = (): Promise<null> => {\n  return CTKInterstitial.showAd();\n}\n\nconst isReady = (callback: (isReady: boolean) => void): Promise<null> => {\n  return CTKInterstitial.isReady(callback);\n}\n\nexport default {\n  addEventListener,\n  removeEventListener,\n  removeAllListeners,\n  simulatorId,\n  setAdUnitID,\n  setTestDevices,\n  setTargeting,\n  requestAd,\n  showAd,\n  isReady\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["CTKAdManagerInterstitial.ts"],"names":["NativeEventEmitter","NativeModules","createErrorFromErrorData","LINKING_ERROR","CTKInterstitial","Proxy","get","Error","eventEmitter","eventMap","adLoaded","adFailedToLoad","adOpened","adClosed","_subscriptions","Map","addEventListener","event","handler","mappedEvent","listener","addListener","error","set","remove","removeEventListener","console","warn","_event","delete","removeAllListeners","forEach","key","map","simulatorId","setAdUnitID","adUnitID","setTestDevices","testDevices","setTargeting","targeting","setServePersonalizedAds","servePersonalizedAds","requestAd","showAd","isReady","callback"],"mappings":"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","sourcesContent":["import { NativeEventEmitter, NativeModules } from 'react-native';\nimport { createErrorFromErrorData } from './utils';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventErrorPayload,\n  IAdManagerEventLoadedInterstitial,\n} from './AdManagerEvent';\nimport { LINKING_ERROR } from './Constants';\nimport type { IAdManagerTargeting } from './AdManagerTypes';\n\nconst CTKInterstitial = NativeModules.CTKInterstitial\n  ? NativeModules.CTKInterstitial\n  : new Proxy(\n      {},\n      {\n        get() {\n          throw new Error(LINKING_ERROR);\n        },\n      }\n    );\n\nconst eventEmitter = new NativeEventEmitter(CTKInterstitial);\n\nconst eventMap = {\n  adLoaded: 'interstitialAdLoaded',\n  adFailedToLoad: 'interstitialAdFailedToLoad',\n  adOpened: 'interstitialAdOpened',\n  adClosed: 'interstitialAdClosed',\n};\n\ntype TAdManagerInterstitialEvent =\n  | 'adLoaded'\n  | 'adFailedToLoad'\n  | 'adOpened'\n  | 'adClosed';\n\ntype TAdManagerInterstitialHandler = (\n  event: Error | IAdManagerEventBase | IAdManagerEventLoadedInterstitial\n) => void;\n\nconst _subscriptions = new Map();\n\nconst addEventListener = (\n  event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const mappedEvent = eventMap[event];\n  if (mappedEvent) {\n    let listener;\n    if (event === 'adFailedToLoad') {\n      listener = eventEmitter.addListener(\n        mappedEvent,\n        (error: IAdManagerEventErrorPayload) =>\n          handler(createErrorFromErrorData(error))\n      );\n    } else {\n      listener = eventEmitter.addListener(mappedEvent, handler);\n    }\n    _subscriptions.set(handler, listener);\n    return {\n      remove: () => removeEventListener(event, handler),\n    };\n  } else {\n    console.warn(`Trying to subscribe to unknown event: \"${event}\"`);\n    return {\n      remove: () => {},\n    };\n  }\n};\n\nconst removeEventListener = (\n  _event: TAdManagerInterstitialEvent,\n  handler: TAdManagerInterstitialHandler\n) => {\n  const listener = _subscriptions.get(handler);\n  if (!listener) {\n    return;\n  }\n  listener.remove();\n  _subscriptions.delete(handler);\n};\n\nconst removeAllListeners = () => {\n  _subscriptions.forEach((listener, key, map) => {\n    listener.remove();\n    map.delete(key);\n  });\n};\n\nconst simulatorId = 'SIMULATOR';\n\nconst setAdUnitID = (adUnitID: string) => {\n  CTKInterstitial.setAdUnitID(adUnitID);\n};\n\nconst setTestDevices = (testDevices: string[]) => {\n  CTKInterstitial.setTestDevices(testDevices);\n};\n\nconst setTargeting = (targeting: IAdManagerTargeting) => {\n  CTKInterstitial.setTargeting(targeting);\n};\n\nconst setServePersonalizedAds = (servePersonalizedAds: boolean) => {\n  CTKInterstitial.setServePersonalizedAds(servePersonalizedAds);\n};\n\nconst requestAd = (): Promise<null> => {\n  return CTKInterstitial.requestAd();\n};\n\nconst showAd = (): Promise<null> => {\n  return CTKInterstitial.showAd();\n};\n\nconst isReady = (callback: (isReady: boolean) => void): Promise<null> => {\n  return CTKInterstitial.isReady(callback);\n};\n\nexport default {\n  addEventListener,\n  removeEventListener,\n  removeAllListeners,\n  simulatorId,\n  setAdUnitID,\n  setTestDevices,\n  setTargeting,\n  requestAd,\n  showAd,\n  setServePersonalizedAds,\n  isReady,\n};\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js b/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js
index 98da5a3..34083e7 100644
--- a/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js
+++ b/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js
@@ -168,7 +168,8 @@ export default (Component => class NativeAdWrapper extends React.Component {
       onAdRecordImpression: event => this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent),
       targeting: this.props.targeting,
       customClickTemplateIds: this.props.customClickTemplateIds,
-      adsManager: adsManager.toJSON()
+      adsManager: adsManager.toJSON(),
+      servePersonalizedAds: this.props.servePersonalizedAds
     }, this.renderAdComponent(rest));
   }

diff --git a/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js.map b/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js.map
index e6595c0..c0f7ed6 100644
--- a/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js.map
+++ b/node_modules/react-native-ad-manager/lib/module/native-ads/withNativeAd.js.map
@@ -1 +1 @@
-{"version":3,"sources":["withNativeAd.tsx"],"names":["React","findNodeHandle","requireNativeComponent","UIManager","TriggerableContext","NativeAdsManager","createErrorFromErrorData","stripProperties","LINKING_ERROR","areSetsEqual","a","b","size","aItem","has","ComponentName","NativeAdView","getViewManagerConfig","Error","Component","NativeAdWrapper","constructor","props","Map","child","handle","clickableChildrenNodeHandles","set","setState","clickableChildren","state","add","newClickableChildren","Set","delete","get","nativeEvent","height","width","style","onSizeChange","nativeAd","onAdLoaded","componentDidMount","reloadAd","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidUpdate","_","prevState","clickableChildrenChanged","viewHandle","registerViewsForInteractionAsync","then","catch","dispatchViewManagerCommand","Commands","renderAdComponent","componentProps","register","registerClickableChild","unregister","unregisterClickableChild","render","_a","adsManager","rest","adSize","adLoaderIndex","correlator","customTemplateIds","validAdSizes","validAdTypes","handleSizeChange","handleAdLoaded","event","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed","onAdCustomClick","onAdRecordImpression","targeting","customClickTemplateIds","toJSON"],"mappings":"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","sourcesContent":["import React, { JSXElementConstructor } from 'react';\nimport {\n  findNodeHandle,\n  NativeSyntheticEvent,\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n} from 'react-native';\nimport { TriggerableContext } from './TriggerableViewManager';\nimport { NativeAdsManager } from './NativeAdsManager';\nimport type {\n  IAdManagerTargeting,\n  TReactNodeHandleRef,\n} from '../AdManagerTypes';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventCustomClick,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventLoadedNative,\n  IAdManagerEventLoadedTemplate,\n  IAdManagerEventSize,\n  IAdManagerEventError,\n} from '../AdManagerEvent';\nimport { createErrorFromErrorData, stripProperties } from '../utils';\nimport { LINKING_ERROR } from '../Constants';\n\n/*\n@property (nonatomic, copy) NSDictionary *targeting;\n\n */\ninterface INativeAdPropsBase extends ViewProps {\n  adSize?: string;\n  correlator?: string;\n  customTemplateIds?: string[];\n  validAdSizes?: string[];\n  validAdTypes?: ('banner' | 'native' | 'template')[];\n  customClickTemplateIds?: string[];\n  targeting?: IAdManagerTargeting;\n}\n\ninterface INativeAdNativeProps extends INativeAdPropsBase {\n  children: React.ReactNode;\n  adsManager: string;\n  loaderIndex?: string;\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdCustomClick?: (\n    event: NativeSyntheticEvent<IAdManagerEventCustomClick>\n  ) => void;\n  onAdRecordImpression?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n}\n\ninterface INativeAdProps extends INativeAdPropsBase {\n  adsManager: NativeAdsManager;\n  adLoaderIndex?: string;\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (\n    event:\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n  ) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdCustomClick?: (event: IAdManagerEventCustomClick) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface INativeAdState {\n  clickableChildren: Set<TReactNodeHandleRef>;\n  style: {\n    width?: number;\n    height?: number;\n  };\n  nativeAd?:\n    | IAdManagerEventLoadedBanner\n    | IAdManagerEventLoadedTemplate\n    | IAdManagerEventLoadedNative;\n}\n\nconst areSetsEqual = (\n  a: Set<TReactNodeHandleRef>,\n  b: Set<TReactNodeHandleRef>\n) => {\n  if (a.size !== b.size) return false;\n  for (const aItem of a) {\n    if (!b.has(aItem)) return false;\n  }\n  return true;\n};\n\nconst ComponentName = 'CTKAdManageNative';\n\nconst NativeAdView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<INativeAdNativeProps>(ComponentName)\n    : () => {\n        // eslint-disable-next-line no-undef\n        throw new Error(LINKING_ERROR);\n      };\n\nexport default (Component: JSXElementConstructor<any>) =>\n  class NativeAdWrapper extends React.Component<\n    INativeAdProps,\n    INativeAdState\n  > {\n    clickableChildrenNodeHandles = new Map();\n\n    constructor(props: INativeAdProps) {\n      super(props);\n      this.state = {\n        // iOS requires a non-null value\n        clickableChildren: new Set(),\n        style: {},\n      };\n    }\n\n    componentDidMount() {\n      this.reloadAd();\n    }\n\n    registerClickableChild = (child: TReactNodeHandleRef) => {\n      const handle = findNodeHandle(child);\n      if (!handle) {\n        return;\n      }\n      this.clickableChildrenNodeHandles.set(child, handle);\n      this.setState({\n        clickableChildren: this.state.clickableChildren.add(handle),\n      });\n    };\n\n    unregisterClickableChild = (child: TReactNodeHandleRef) => {\n      this.setState(({ clickableChildren }) => {\n        const newClickableChildren = new Set(clickableChildren);\n        newClickableChildren.delete(\n          this.clickableChildrenNodeHandles.get(child)\n        );\n        this.clickableChildrenNodeHandles.delete(child);\n        return { clickableChildren: newClickableChildren };\n      });\n    };\n\n    handleSizeChange = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<IAdManagerEventSize>) => {\n      const { height, width } = nativeEvent;\n      this.setState({ style: { width, height } });\n      this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n    };\n\n    handleAdLoaded = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >) => {\n      this.setState({ nativeAd: nativeEvent });\n      this.props.onAdLoaded && this.props.onAdLoaded(nativeEvent);\n    };\n\n    shouldComponentUpdate(\n      nextProps: INativeAdProps,\n      nextState: INativeAdState\n    ) {\n      if (\n        Object.entries(this.state).toString() ===\n          Object.entries(nextState).toString() &&\n        Object.entries(this.props).toString() ===\n          Object.entries(nextProps).toString()\n      ) {\n        return false;\n      }\n      return true;\n    }\n\n    componentDidUpdate(_: INativeAdProps, prevState: INativeAdState) {\n      const clickableChildrenChanged = areSetsEqual(\n        prevState.clickableChildren,\n        this.state.clickableChildren\n      );\n      if (clickableChildrenChanged) {\n        const viewHandle = findNodeHandle(this);\n        if (!viewHandle) {\n          // Skip registration if the view is no longer valid.\n          return;\n        }\n\n        NativeAdsManager.registerViewsForInteractionAsync(viewHandle, [\n          ...this.state.clickableChildren,\n        ])\n          .then(() => {\n            // do nothing for now\n          })\n          .catch(() => {\n            // do nothing for now\n          });\n      }\n    }\n\n    reloadAd() {\n      UIManager.dispatchViewManagerCommand(\n        findNodeHandle(this),\n        UIManager.getViewManagerConfig(ComponentName).Commands.reloadAd,\n        []\n      );\n    }\n\n    renderAdComponent(componentProps: INativeAdProps) {\n      if (!this.state.nativeAd) {\n        return null;\n      }\n\n      return (\n        <TriggerableContext.Provider\n          value={{\n            register: this.registerClickableChild,\n            unregister: this.unregisterClickableChild,\n          }}\n        >\n          <Component {...componentProps} nativeAd={this.state.nativeAd} />\n        </TriggerableContext.Provider>\n      );\n    }\n\n    render() {\n      // Cast to any until https://github.com/Microsoft/TypeScript/issues/10727 is resolved\n      const _a = this.props,\n        { adsManager } = _a,\n        rest = stripProperties(_a, ['adsManager', 'onAdLoaded']);\n\n      return (\n        <NativeAdView\n          style={[this.props.style, this.state.style]}\n          adSize={this.props.adSize}\n          loaderIndex={this.props.adLoaderIndex}\n          correlator={this.props.correlator}\n          customTemplateIds={this.props.customTemplateIds}\n          validAdSizes={this.props.validAdSizes}\n          validAdTypes={this.props.validAdTypes}\n          onSizeChange={this.handleSizeChange}\n          onAdLoaded={this.handleAdLoaded}\n          onAdFailedToLoad={(event) =>\n            this.props.onAdFailedToLoad &&\n            this.props.onAdFailedToLoad(\n              createErrorFromErrorData(event.nativeEvent.error)\n            )\n          }\n          onAppEvent={(event) =>\n            this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n          }\n          onAdOpened={(event) =>\n            this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n          }\n          onAdClosed={(event) =>\n            this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n          }\n          onAdCustomClick={(event) =>\n            this.props.onAdCustomClick &&\n            this.props.onAdCustomClick(event.nativeEvent)\n          }\n          onAdRecordImpression={(event) =>\n            this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent)\n          }\n          targeting={this.props.targeting}\n          customClickTemplateIds={this.props.customClickTemplateIds}\n          adsManager={adsManager.toJSON()}\n        >\n          {this.renderAdComponent(rest)}\n        </NativeAdView>\n      );\n    }\n  };\n"]}
\ No newline at end of file
+{"version":3,"sources":["withNativeAd.tsx"],"names":["React","findNodeHandle","requireNativeComponent","UIManager","TriggerableContext","NativeAdsManager","createErrorFromErrorData","stripProperties","LINKING_ERROR","areSetsEqual","a","b","size","aItem","has","ComponentName","NativeAdView","getViewManagerConfig","Error","Component","NativeAdWrapper","constructor","props","Map","child","handle","clickableChildrenNodeHandles","set","setState","clickableChildren","state","add","newClickableChildren","Set","delete","get","nativeEvent","height","width","style","onSizeChange","nativeAd","onAdLoaded","componentDidMount","reloadAd","shouldComponentUpdate","nextProps","nextState","Object","entries","toString","componentDidUpdate","_","prevState","clickableChildrenChanged","viewHandle","registerViewsForInteractionAsync","then","catch","dispatchViewManagerCommand","Commands","renderAdComponent","componentProps","register","registerClickableChild","unregister","unregisterClickableChild","render","_a","adsManager","rest","adSize","adLoaderIndex","correlator","customTemplateIds","validAdSizes","validAdTypes","handleSizeChange","handleAdLoaded","event","onAdFailedToLoad","error","onAppEvent","onAdOpened","onAdClosed","onAdCustomClick","onAdRecordImpression","targeting","customClickTemplateIds","toJSON","servePersonalizedAds"],"mappings":"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","sourcesContent":["import React, { JSXElementConstructor } from 'react';\nimport {\n  findNodeHandle,\n  NativeSyntheticEvent,\n  requireNativeComponent,\n  UIManager,\n  ViewProps,\n} from 'react-native';\nimport { TriggerableContext } from './TriggerableViewManager';\nimport { NativeAdsManager } from './NativeAdsManager';\nimport type {\n  IAdManagerTargeting,\n  TReactNodeHandleRef,\n} from '../AdManagerTypes';\nimport type {\n  IAdManagerEventBase,\n  IAdManagerEventCustomClick,\n  IAdManagerEventAppEvent,\n  IAdManagerEventLoadedBanner,\n  IAdManagerEventLoadedNative,\n  IAdManagerEventLoadedTemplate,\n  IAdManagerEventSize,\n  IAdManagerEventError,\n} from '../AdManagerEvent';\nimport { createErrorFromErrorData, stripProperties } from '../utils';\nimport { LINKING_ERROR } from '../Constants';\n\n/*\n@property (nonatomic, copy) NSDictionary *targeting;\n\n */\ninterface INativeAdPropsBase extends ViewProps {\n  adSize?: string;\n  correlator?: string;\n  customTemplateIds?: string[];\n  validAdSizes?: string[];\n  validAdTypes?: ('banner' | 'native' | 'template')[];\n  customClickTemplateIds?: string[];\n  targeting?: IAdManagerTargeting;\n  servePersonalizedAds?: boolean;\n}\n\ninterface INativeAdNativeProps extends INativeAdPropsBase {\n  children: React.ReactNode;\n  adsManager: string;\n  loaderIndex?: string;\n  onSizeChange?: (event: NativeSyntheticEvent<IAdManagerEventSize>) => void;\n  onAdLoaded?: (\n    event: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >\n  ) => void;\n  onAdFailedToLoad?: (\n    event: NativeSyntheticEvent<IAdManagerEventError>\n  ) => void;\n  onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;\n  onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;\n  onAdCustomClick?: (\n    event: NativeSyntheticEvent<IAdManagerEventCustomClick>\n  ) => void;\n  onAdRecordImpression?: (\n    event: NativeSyntheticEvent<IAdManagerEventBase>\n  ) => void;\n}\n\ninterface INativeAdProps extends INativeAdPropsBase {\n  adsManager: NativeAdsManager;\n  adLoaderIndex?: string;\n  onSizeChange?: (event: IAdManagerEventSize) => void;\n  onAdLoaded?: (\n    event:\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n  ) => void;\n  onAdFailedToLoad?: (error: Error) => void;\n  onAppEvent?: (event: IAdManagerEventAppEvent) => void;\n  onAdOpened?: (event: IAdManagerEventBase) => void;\n  onAdClosed?: (event: IAdManagerEventBase) => void;\n  onAdCustomClick?: (event: IAdManagerEventCustomClick) => void;\n  onAdRecordImpression?: (event: IAdManagerEventBase) => void;\n}\n\ninterface INativeAdState {\n  clickableChildren: Set<TReactNodeHandleRef>;\n  style: {\n    width?: number;\n    height?: number;\n  };\n  nativeAd?:\n    | IAdManagerEventLoadedBanner\n    | IAdManagerEventLoadedTemplate\n    | IAdManagerEventLoadedNative;\n}\n\nconst areSetsEqual = (\n  a: Set<TReactNodeHandleRef>,\n  b: Set<TReactNodeHandleRef>\n) => {\n  if (a.size !== b.size) return false;\n  for (const aItem of a) {\n    if (!b.has(aItem)) return false;\n  }\n  return true;\n};\n\nconst ComponentName = 'CTKAdManageNative';\n\nconst NativeAdView =\n  UIManager.getViewManagerConfig(ComponentName) != null\n    ? requireNativeComponent<INativeAdNativeProps>(ComponentName)\n    : () => {\n        // eslint-disable-next-line no-undef\n        throw new Error(LINKING_ERROR);\n      };\n\nexport default (Component: JSXElementConstructor<any>) =>\n  class NativeAdWrapper extends React.Component<\n    INativeAdProps,\n    INativeAdState\n  > {\n    clickableChildrenNodeHandles = new Map();\n\n    constructor(props: INativeAdProps) {\n      super(props);\n      this.state = {\n        // iOS requires a non-null value\n        clickableChildren: new Set(),\n        style: {},\n      };\n    }\n\n    componentDidMount() {\n      this.reloadAd();\n    }\n\n    registerClickableChild = (child: TReactNodeHandleRef) => {\n      const handle = findNodeHandle(child);\n      if (!handle) {\n        return;\n      }\n      this.clickableChildrenNodeHandles.set(child, handle);\n      this.setState({\n        clickableChildren: this.state.clickableChildren.add(handle),\n      });\n    };\n\n    unregisterClickableChild = (child: TReactNodeHandleRef) => {\n      this.setState(({ clickableChildren }) => {\n        const newClickableChildren = new Set(clickableChildren);\n        newClickableChildren.delete(\n          this.clickableChildrenNodeHandles.get(child)\n        );\n        this.clickableChildrenNodeHandles.delete(child);\n        return { clickableChildren: newClickableChildren };\n      });\n    };\n\n    handleSizeChange = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<IAdManagerEventSize>) => {\n      const { height, width } = nativeEvent;\n      this.setState({ style: { width, height } });\n      this.props.onSizeChange && this.props.onSizeChange(nativeEvent);\n    };\n\n    handleAdLoaded = ({\n      nativeEvent,\n    }: NativeSyntheticEvent<\n      | IAdManagerEventLoadedBanner\n      | IAdManagerEventLoadedTemplate\n      | IAdManagerEventLoadedNative\n    >) => {\n      this.setState({ nativeAd: nativeEvent });\n      this.props.onAdLoaded && this.props.onAdLoaded(nativeEvent);\n    };\n\n    shouldComponentUpdate(\n      nextProps: INativeAdProps,\n      nextState: INativeAdState\n    ) {\n      if (\n        Object.entries(this.state).toString() ===\n          Object.entries(nextState).toString() &&\n        Object.entries(this.props).toString() ===\n          Object.entries(nextProps).toString()\n      ) {\n        return false;\n      }\n      return true;\n    }\n\n    componentDidUpdate(_: INativeAdProps, prevState: INativeAdState) {\n      const clickableChildrenChanged = areSetsEqual(\n        prevState.clickableChildren,\n        this.state.clickableChildren\n      );\n      if (clickableChildrenChanged) {\n        const viewHandle = findNodeHandle(this);\n        if (!viewHandle) {\n          // Skip registration if the view is no longer valid.\n          return;\n        }\n\n        NativeAdsManager.registerViewsForInteractionAsync(viewHandle, [\n          ...this.state.clickableChildren,\n        ])\n          .then(() => {\n            // do nothing for now\n          })\n          .catch(() => {\n            // do nothing for now\n          });\n      }\n    }\n\n    reloadAd() {\n      UIManager.dispatchViewManagerCommand(\n        findNodeHandle(this),\n        UIManager.getViewManagerConfig(ComponentName).Commands.reloadAd,\n        []\n      );\n    }\n\n    renderAdComponent(componentProps: INativeAdProps) {\n      if (!this.state.nativeAd) {\n        return null;\n      }\n\n      return (\n        <TriggerableContext.Provider\n          value={{\n            register: this.registerClickableChild,\n            unregister: this.unregisterClickableChild,\n          }}\n        >\n          <Component {...componentProps} nativeAd={this.state.nativeAd} />\n        </TriggerableContext.Provider>\n      );\n    }\n\n    render() {\n      // Cast to any until https://github.com/Microsoft/TypeScript/issues/10727 is resolved\n      const _a = this.props,\n        { adsManager } = _a,\n        rest = stripProperties(_a, ['adsManager', 'onAdLoaded']);\n\n      return (\n        <NativeAdView\n          style={[this.props.style, this.state.style]}\n          adSize={this.props.adSize}\n          loaderIndex={this.props.adLoaderIndex}\n          correlator={this.props.correlator}\n          customTemplateIds={this.props.customTemplateIds}\n          validAdSizes={this.props.validAdSizes}\n          validAdTypes={this.props.validAdTypes}\n          onSizeChange={this.handleSizeChange}\n          onAdLoaded={this.handleAdLoaded}\n          onAdFailedToLoad={(event) =>\n            this.props.onAdFailedToLoad &&\n            this.props.onAdFailedToLoad(\n              createErrorFromErrorData(event.nativeEvent.error)\n            )\n          }\n          onAppEvent={(event) =>\n            this.props.onAppEvent && this.props.onAppEvent(event.nativeEvent)\n          }\n          onAdOpened={(event) =>\n            this.props.onAdOpened && this.props.onAdOpened(event.nativeEvent)\n          }\n          onAdClosed={(event) =>\n            this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)\n          }\n          onAdCustomClick={(event) =>\n            this.props.onAdCustomClick &&\n            this.props.onAdCustomClick(event.nativeEvent)\n          }\n          onAdRecordImpression={(event) =>\n            this.props.onAdRecordImpression &&\n            this.props.onAdRecordImpression(event.nativeEvent)\n          }\n          targeting={this.props.targeting}\n          customClickTemplateIds={this.props.customClickTemplateIds}\n          adsManager={adsManager.toJSON()}\n          servePersonalizedAds={this.props.servePersonalizedAds}\n        >\n          {this.renderAdComponent(rest)}\n        </NativeAdView>\n      );\n    }\n  };\n"]}
\ No newline at end of file
diff --git a/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerAdaptiveBanner.d.ts b/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerAdaptiveBanner.d.ts
index 9db41d1..a8d9f57 100644
--- a/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerAdaptiveBanner.d.ts
+++ b/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerAdaptiveBanner.d.ts
@@ -20,6 +20,7 @@ interface IAdManagerAdaptiveBannerPropsBase extends ViewProps {
      */
     testDevices?: string[];
     targeting?: IAdManagerTargeting;
+    servePersonalizedAds?: boolean;
 }
 interface IAdManagerAdaptiveBannerProps extends IAdManagerAdaptiveBannerPropsBase {
     /**
diff --git a/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerBanner.d.ts b/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerBanner.d.ts
index e23c639..ee0b6ea 100644
--- a/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerBanner.d.ts
+++ b/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerBanner.d.ts
@@ -31,6 +31,7 @@ interface IAdManagerBannerPropsBase extends ViewProps {
      */
     testDevices?: string[];
     targeting?: IAdManagerTargeting;
+    servePersonalizedAds?: boolean;
 }
 interface IAdManagerBannerProps extends IAdManagerBannerPropsBase {
     onError?: (eventData: Error) => void;
diff --git a/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerInterstitial.d.ts b/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerInterstitial.d.ts
index bf01c95..2f49f53 100644
--- a/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerInterstitial.d.ts
+++ b/node_modules/react-native-ad-manager/lib/typescript/CTKAdManagerInterstitial.d.ts
@@ -14,6 +14,7 @@ declare const _default: {
     setTargeting: (targeting: IAdManagerTargeting) => void;
     requestAd: () => Promise<null>;
     showAd: () => Promise<null>;
+    setServePersonalizedAds: (servePersonalizedAds: boolean) => void;
     isReady: (callback: (isReady: boolean) => void) => Promise<null>;
 };
 export default _default;
diff --git a/node_modules/react-native-ad-manager/lib/typescript/__tests__/index.test.d.ts b/node_modules/react-native-ad-manager/lib/typescript/__tests__/index.test.d.ts
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/react-native-ad-manager/lib/typescript/native-ads/withNativeAd.d.ts b/node_modules/react-native-ad-manager/lib/typescript/native-ads/withNativeAd.d.ts
index adb3168..b6c383a 100644
--- a/node_modules/react-native-ad-manager/lib/typescript/native-ads/withNativeAd.d.ts
+++ b/node_modules/react-native-ad-manager/lib/typescript/native-ads/withNativeAd.d.ts
@@ -11,6 +11,7 @@ interface INativeAdPropsBase extends ViewProps {
     validAdTypes?: ('banner' | 'native' | 'template')[];
     customClickTemplateIds?: string[];
     targeting?: IAdManagerTargeting;
+    servePersonalizedAds?: boolean;
 }
 interface INativeAdProps extends INativeAdPropsBase {
     adsManager: NativeAdsManager;
diff --git a/node_modules/react-native-ad-manager/src/CTKAdManagerAdaptiveBanner.tsx b/node_modules/react-native-ad-manager/src/CTKAdManagerAdaptiveBanner.tsx
index b20a336..0c8a750 100644
--- a/node_modules/react-native-ad-manager/src/CTKAdManagerAdaptiveBanner.tsx
+++ b/node_modules/react-native-ad-manager/src/CTKAdManagerAdaptiveBanner.tsx
@@ -44,6 +44,8 @@ interface IAdManagerAdaptiveBannerPropsBase extends ViewProps {
   testDevices?: string[];

   targeting?: IAdManagerTargeting;
+
+  servePersonalizedAds?: boolean;
 }

 interface IAdManagerAdaptiveBannerProps
diff --git a/node_modules/react-native-ad-manager/src/CTKAdManagerBanner.tsx b/node_modules/react-native-ad-manager/src/CTKAdManagerBanner.tsx
index d3130cb..665ceb2 100644
--- a/node_modules/react-native-ad-manager/src/CTKAdManagerBanner.tsx
+++ b/node_modules/react-native-ad-manager/src/CTKAdManagerBanner.tsx
@@ -6,7 +6,7 @@ import {
   findNodeHandle,
   NativeSyntheticEvent,
   DeviceEventEmitter,
-  EventSubscription
+  EventSubscription,
 } from 'react-native';
 import { createErrorFromErrorData } from './utils';
 import type {
@@ -52,6 +52,8 @@ interface IAdManagerBannerPropsBase extends ViewProps {
   testDevices?: string[];

   targeting?: IAdManagerTargeting;
+
+  servePersonalizedAds?: boolean;
 }

 interface IAdManagerBannerProps extends IAdManagerBannerPropsBase {
@@ -92,7 +94,9 @@ interface IAdManagerBannerNativeProps extends IAdManagerBannerPropsBase {
   onAppEvent?: (event: NativeSyntheticEvent<IAdManagerEventAppEvent>) => void;
   onAdOpened?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;
   onAdClosed?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;
-  onAdRecordImpression?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;
+  onAdRecordImpression?: (
+    event: NativeSyntheticEvent<IAdManagerEventBase>
+  ) => void;
 }

 const ComponentName = 'CTKBannerView';
@@ -113,7 +117,10 @@ export class Banner extends React.Component<

   constructor(props: IAdManagerBannerProps) {
     super(props);
-    this.hasOnErrorFromParent = Object.prototype.hasOwnProperty.call(props, 'onError');
+    this.hasOnErrorFromParent = Object.prototype.hasOwnProperty.call(
+      props,
+      'onError'
+    );
     this.handleSizeChange = this.handleSizeChange.bind(this);
     this.state = {
       style: {},
@@ -137,12 +144,15 @@ export class Banner extends React.Component<
   }

   componentDidMount() {
-    this.customListener= DeviceEventEmitter.addListener('onError',eventData=>{
-      this.setState({ error: eventData });
-      if (this.hasOnErrorFromParent && this.props.onError) {
-        this.props.onError(eventData);
+    this.customListener = DeviceEventEmitter.addListener(
+      'onError',
+      (eventData) => {
+        this.setState({ error: eventData });
+        if (this.hasOnErrorFromParent && this.props.onError) {
+          this.props.onError(eventData);
+        }
       }
-    });
+    );
     this.loadBanner();
   }

@@ -191,7 +201,8 @@ export class Banner extends React.Component<
           this.props.onAdClosed && this.props.onAdClosed(event.nativeEvent)
         }
         onAdRecordImpression={(event) =>
-          this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent)
+          this.props.onAdRecordImpression &&
+          this.props.onAdRecordImpression(event.nativeEvent)
         }
       />
     );
diff --git a/node_modules/react-native-ad-manager/src/CTKAdManagerInterstitial.ts b/node_modules/react-native-ad-manager/src/CTKAdManagerInterstitial.ts
index b2ab9ac..ec4490a 100644
--- a/node_modules/react-native-ad-manager/src/CTKAdManagerInterstitial.ts
+++ b/node_modules/react-native-ad-manager/src/CTKAdManagerInterstitial.ts
@@ -101,17 +101,21 @@ const setTargeting = (targeting: IAdManagerTargeting) => {
   CTKInterstitial.setTargeting(targeting);
 };

+const setServePersonalizedAds = (servePersonalizedAds: boolean) => {
+  CTKInterstitial.setServePersonalizedAds(servePersonalizedAds);
+};
+
 const requestAd = (): Promise<null> => {
   return CTKInterstitial.requestAd();
-}
+};

 const showAd = (): Promise<null> => {
   return CTKInterstitial.showAd();
-}
+};

 const isReady = (callback: (isReady: boolean) => void): Promise<null> => {
   return CTKInterstitial.isReady(callback);
-}
+};

 export default {
   addEventListener,
@@ -123,5 +127,6 @@ export default {
   setTargeting,
   requestAd,
   showAd,
-  isReady
-}
+  setServePersonalizedAds,
+  isReady,
+};
diff --git a/node_modules/react-native-ad-manager/src/__tests__/index.test.tsx b/node_modules/react-native-ad-manager/src/__tests__/index.test.tsx
new file mode 100644
index 0000000..bf84291
--- /dev/null
+++ b/node_modules/react-native-ad-manager/src/__tests__/index.test.tsx
@@ -0,0 +1 @@
+it.todo('write a test');
diff --git a/node_modules/react-native-ad-manager/src/native-ads/withNativeAd.tsx b/node_modules/react-native-ad-manager/src/native-ads/withNativeAd.tsx
index fef346b..544f701 100644
--- a/node_modules/react-native-ad-manager/src/native-ads/withNativeAd.tsx
+++ b/node_modules/react-native-ad-manager/src/native-ads/withNativeAd.tsx
@@ -37,6 +37,7 @@ interface INativeAdPropsBase extends ViewProps {
   validAdTypes?: ('banner' | 'native' | 'template')[];
   customClickTemplateIds?: string[];
   targeting?: IAdManagerTargeting;
+  servePersonalizedAds?: boolean;
 }

 interface INativeAdNativeProps extends INativeAdPropsBase {
@@ -60,7 +61,9 @@ interface INativeAdNativeProps extends INativeAdPropsBase {
   onAdCustomClick?: (
     event: NativeSyntheticEvent<IAdManagerEventCustomClick>
   ) => void;
-  onAdRecordImpression?: (event: NativeSyntheticEvent<IAdManagerEventBase>) => void;
+  onAdRecordImpression?: (
+    event: NativeSyntheticEvent<IAdManagerEventBase>
+  ) => void;
 }

 interface INativeAdProps extends INativeAdPropsBase {
@@ -276,11 +279,13 @@ export default (Component: JSXElementConstructor<any>) =>
             this.props.onAdCustomClick(event.nativeEvent)
           }
           onAdRecordImpression={(event) =>
-            this.props.onAdRecordImpression && this.props.onAdRecordImpression(event.nativeEvent)
+            this.props.onAdRecordImpression &&
+            this.props.onAdRecordImpression(event.nativeEvent)
           }
           targeting={this.props.targeting}
           customClickTemplateIds={this.props.customClickTemplateIds}
           adsManager={adsManager.toJSON()}
+          servePersonalizedAds={this.props.servePersonalizedAds}
         >
           {this.renderAdComponent(rest)}
         </NativeAdView>


Question: What type of ads and how to refresh in infitite scroll

Hi,

We have a archive page and we want to show ads that are linked to our Google ad manager.

What should be the type of ad to select : native or banner ?

Since it goes in our feed, i guess it would be a native, but again not sure.

And if we choose native, the documentation is not clear on how to implement the native. Do we have to code the block ourself?

Finally, In a infinite loop, how can we refresh the ad if we only have one ad manager slot ?

Add LICENSE

It would be great to know how this package is licensed and it can be reused.

fluid ads dont work on Android

Ad size "fluid" works on iOS, but does not work on Android.

On Android, onAdLoaded is called, but returns the following size object:

{"gadSize": {"adSize": "320x50_mb", "height": 50, "width": 320}, "isFluid": "true", "measurements": {"adHeight": 0, "adWidth": 0, "height": 0, "left": 0, "top": 0, "width": 0}, "type": "banner"}

No ad shows up for Android.

On iOS, when onAdLoaded is called for the same ad, the Fluid GADAdSize is properly returned:

{"gadSize": {"adSize": "Fluid GADAdSize: {393, 263.5625}", "height": 263.5625, "width": 393}, "isFluid": "true", "measurements": {"adHeight": 263.5625, "adWidth": 393, "height": 263.5625, "left": 0, "top": 0, "width": 393}, "target": 54813, "type": "banner"}

The ad properly shows up for iOS.

Is there a code issue here that isn't calling for the proper Fluid ad on Android, but is instead calling for the 320x50_mb ad?

Ads are not displayed on Android 12

I have tried this on iOS devices and any other Android devices and it works fine, but for Android 12 I am having problems.
I have a Pixel 5 device and when I try to display ads on this device I get the error The ad request was successful, but no ad was returned due to lack of ad inventory.. This happens for all types of ads (banners, native etc.). The same thing doesn't happen with any other type of device.
I have also tried checking these out on a release build and it's still the same thing. I have also added the work-runtime as below as mentioned here:


    constraints {
        implementation('androidx.work:work-runtime:2.7.0') {
            because '''androidx.work:work-runtime:2.1.0 pulled from play-services-ads
                   has a bug using PendingIntent without FLAG_IMMUTABLE or
                   FLAG_MUTABLE and will fail in apps targeting S+.'''
        }
    }

This just avoids crashing the app but has no effect on displaying the actual ads.

Also, I definitely have live ads and this doesn't only happen with those, I am also using the example ads shown here. I am assuming at least these should be working.

Undefined symbols "_GADFBSocialContext" and "_OBJC_CLASS_$_GADFBNetworkExtras"

Hello guys! I'm having an issue related to this package whenever I build in release (I don't have such issue in debug). From my understanding, some variables are never defined (or never set?) in RNAdManageNativeView.o.

Anyone got a fix for it?

Thanks

Undefined symbols for architecture i386:
  "_GADFBSocialContext", referenced from:
      -[RNAdManageNativeView triggerAdLoadedEvent:] in libreact-native-ad-manager.a(RNAdManageNativeView.o)
  "_OBJC_CLASS_$_GADFBNetworkExtras", referenced from:
      objc-class-ref in libreact-native-ad-manager.a(RNAdManageNativeView.o)

Issues displaying out-of-page ads on Android in version 2.0.7

Hello,

I'm experiencing difficulties when trying to display out-of-page ads on Android devices using version 2.0.7 of the library. I would like to confirm if the library supports this ad format.

Additional details:

  • Library Version: 2.0.7
  • Platform: Android
  • Ad Format: out-of-page

Any guidance or additional information on how to resolve this issue would be greatly appreciated.

Thank you.

Support for Turbo Modules

Hello Dev Team, is turbo module support being planned for this SDK? We've updated to latest and seems it does not have any support at this point.

Native ad not working

Hello!
I cannot make native ads to work with provided example.
What am I doing wrong? Nothing gets rendered.

This is my native ad format in admanager

Screenshot 2022-04-13 at 11 20 18

Seeking suggestion: To display banner ads at regular intervals in a feed list, which is an infinitely paginated flat list

This is not a bug; I am seeking suggestions on how to integrate ads into a React Native project with the following requirements:

I have an infinitely scrollable flat list of feed items, similar to Instagram, where I need to display banner ads at regular intervals.
This involves handling scenarios such as:

  1. If an Ad request succeeds for a specific index - Display the Ad at the index
  2. If an Ad request fails for a specific index - Display the next feed item rather than displaying a Placeholder/Empty view
  3. If an Ad request fails because of timeout error - Display the next feed item
  4. If the index where an Ad should be displayed is scrolled before receiving a successful response for the ad request - Display the next feed item
    • But if the index where the Ad isn't displayed because of the delayed response should be displayed if the user scrolls up to that index again.

The approach I am thinking of at the moment:
I thought that the solution for the above use cases is to pre-fetch the banner ad view object before displaying it. But, because the Banner Ad is a component in this SDK, I should only be able to load the Ad(make an Ad request) after mounting the component into the screen or flat list. However, with this approach, I wasn't able to handle the failure cases.

But with the above approach, I need to find a way to pre-fetch the banner ad object.

Can you please help me by sharing any better approach you can think of? Or can you please help me with improving my approach to implement this?

support Adaptive Banners

To support adaptive banner. We need to expose GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth to reactnative.

`smartBannerPortrait` ad size is not suppored on iOS

I noticed on iOS that sometimes we receive the following errror:

[native] Error setting property 'validAdSizes' of CTKBannerView with tag #15447: Invalid adSize smartBannerPortrait

We set valid ad sizes to list similar to ['banner', 'largeBanner', 'mediumRectangle', 'smartBannerPortrait'].

The supported ad sizes lists this as a valid one at:

/**
* DFP iOS library banner size constants
* (https://developers.google.com/admob/ios/banner)
* banner (320x50, Standard Banner for Phones and Tablets)
* largeBanner (320x100, Large Banner for Phones and Tablets)
* mediumRectangle (300x250, IAB Medium Rectangle for Phones and Tablets)
* fullBanner (468x60, IAB Full-Size Banner for Tablets)
* leaderboard (728x90, IAB Leaderboard for Tablets)
* smartBannerPortrait (Screen width x 32|50|90, Smart Banner for Phones and Tablets)
* smartBannerLandscape (Screen width x 32|50|90, Smart Banner for Phones and Tablets)
*
* banner is default
*/
adSize: string,

However, on iOS the code seems to be commented out:

f4a74fe#diff-a5e6266736fa911df1e20cba92359aa0513c35fbb88b172e167024eb518edef9R22-R25

Was that intended change?

iOS - '58 duplicate symbols for architecture x86_64' When Using with react-native-fbsdk-next

It seems this package installs the pod FBSDKCoreKit_Basics, which doesn't play nicely with the pods installed via react-native-fbsdk-next (FBSDKCoreKit).

I'm using react-native-fbsdk-next for Facebook login, and app installs tracking.

These are the error messages I'm getting in my console:

All of the locations refer to Xcode derived data.

duplicate symbol '_FBSDKAppEventPhone' in: /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKUserDataStore.o) /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit_Basics/libFBSDKCoreKit_Basics.a(FBSDKUserDataStore.o) duplicate symbol '_FBSDKAppEventFirstName' in: /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKUserDataStore.o) /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit_Basics/libFBSDKCoreKit_Basics.a(FBSDKUserDataStore.o) duplicate symbol '_FBSDKAppEventLastName' in: /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKUserDataStore.o) /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit_Basics/libFBSDKCoreKit_Basics.a(FBSDKUserDataStore.o) duplicate symbol '_FBSDKAppEventExternalId' in: /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit/libFBSDKCoreKit.a(FBSDKUserDataStore.o) /Users/xxxxxxxx/Library/Developer/Xcode/DerivedData/xxxxxxxx-enthknpdsnjhrbdjmtnzzhwjysgl/Build/Products/Debug-iphonesimulator/FBSDKCoreKit_Basics/libFBSDKCoreKit_Basics.a(FBSDKUserDataStore.o)

Native Ad not clickable on Android

Hello,

I integrated the lib in my react native project. The Native Ad is not clickable on Android. The same implementation works on iOS. Any ideas what could be wrong? I have spent days trying to fix the issue but no luck so far.

Thanks in advance for any help!

[android] Error while updating property 'adUnitID' of a view managed by: CTKBannerView

I've seen a number of background crashes with this stacktrace after upgrading to 2.0.1 from 1.3.5 (android only)

Exception com.facebook.react.bridge.JSApplicationIllegalArgumentException: Error while updating property 'adUnitID' of a view managed by: CTKBannerView
  at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp (ViewManagersPropertyCache.java:101)
  at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty (ViewManagerPropertyUpdater.java:136)
  at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps (ViewManagerPropertyUpdater.java:56)
  at com.facebook.react.uimanager.ViewManager.updateProperties (ViewManager.java:47)
  at com.facebook.react.uimanager.ViewManager.createViewInstance (ViewManager.java:143)
  at com.facebook.react.uimanager.ViewManager.createView (ViewManager.java:76)
  at com.facebook.react.uimanager.NativeViewHierarchyManager.createView (NativeViewHierarchyManager.java:281)
  at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute (UIViewOperationQueue.java:194)
  at com.facebook.react.uimanager.UIViewOperationQueue$1.run (UIViewOperationQueue.java:909)
  at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches (UIViewOperationQueue.java:1026)
  at com.facebook.react.uimanager.UIViewOperationQueue.access$2600 (UIViewOperationQueue.java:47)
  at com.facebook.react.uimanager.UIViewOperationQueue$2.runGuarded (UIViewOperationQueue.java:984)
  at com.facebook.react.bridge.GuardedRunnable.run (GuardedRunnable.java:31)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at android.app.ActivityThread.main (ActivityThread.java:8751)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135)
Caused by java.lang.reflect.InvocationTargetException:
  at java.lang.reflect.Method.invoke
  at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp (ViewManagersPropertyCache.java:93)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.gms.ads.admanager.AdManagerAdView.setAdUnitId(java.lang.String)' on a null object reference
  at com.matejdr.admanager.BannerAdView.setAdUnitID (BannerAdView.java:289)
  at com.matejdr.admanager.RNAdManagerBannerViewManager.setPropAdUnitID (RNAdManagerBannerViewManager.java:119)

I'm experimenting with a patch that looks like this:

diff --git a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java
index a883edd..efb4c73 100644
--- a/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java
+++ b/node_modules/react-native-ad-manager/android/src/main/java/com/matejdr/admanager/BannerAdView.java
@@ -54,7 +54,6 @@ class BannerAdView extends ReactViewGroup implements AppEventListener, Lifecycle
 
     public BannerAdView(final Context context, ReactApplicationContext applicationContext) {
         super(context);
-        currentActivityContext = applicationContext.getCurrentActivity();
         applicationContext.addLifecycleEventListener(this);
         this.createAdView();
     }
@@ -71,9 +70,9 @@ class BannerAdView extends ReactViewGroup implements AppEventListener, Lifecycle
 
     private void createAdView() {
         if (this.adManagerAdView != null) this.adManagerAdView.destroy();
-        if (this.currentActivityContext == null) return;
 
-        this.adManagerAdView = new AdManagerAdView(currentActivityContext);
+        final Context context = getContext();
+        this.adManagerAdView = new AdManagerAdView(context);
 
         if (isFluid()) {
             AdManagerAdView.LayoutParams layoutParams = new AdManagerAdView.LayoutParams(
@@ -355,7 +354,6 @@ class BannerAdView extends ReactViewGroup implements AppEventListener, Lifecycle
     @Override
     public void onHostDestroy() {
         if (this.adManagerAdView != null) {
-            this.currentActivityContext = null;
             this.adManagerAdView.destroy();
         }
     }

Let me know if you've seen anything like this similarly, or what you're thinking is. It seems like 1.3.8+ would be effected by this.

iOS. FBAudienceNetwork(FBAdSKAdNetworkManager.m.o)

The terminal show this error

image

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_SKAdImpression", referenced from:
      objc-class-ref in FBAudienceNetwork(FBAdSKAdNetworkManager.m.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

And the last log is

The following build commands failed:
	Ld /Users/<user>/Library/Developer/Xcode/DerivedData/<project>-gfpxrtualuvknthdhsguryeqneey/Build/Products/Debug<App>-iphonesimulator/<App>.app/<App> normal
(1 failure)

Environment:
Xcode 12.4
"react-native": "0.63.4"

Anyone having the same problem?
Someone fixed this?
Thanks

black video popup showing up on IOS while loading ads

I have tried this on Android devices and it works fine, but for iOS I am having problems.
I have a iPhone 6 device and when I try to display ads on this device the ads are showing up but along with that after few seconds a black video popup is showing up with default player controls. When I click on close button it hides the black video popup and then I can use the app. The same thing doesn't happen on Android devices or on iPad devices.

I am using below code to show the banner ads

<Banner
    adSize= {DSWPConfig.adPolicy.adSize.mediumRectangle}
    validAdSizes={[DSWPConfig.adPolicy.adSize.mediumRectangle]}
    adUnitID={item.adUnitId}
    style = {style?.adStyle}
  />

I have also tried the example project and inside it, I am facing the same issue where while loading some ads it is showing the black video player.

I have hardcoded the ads url that we are using in our project and tried to load the ads. Ads are loading but there are some types of ads which does not load and instead of the ads it loads a black video with the video controls.

Here is a video recording for the issue that I am facing: https://www.dropbox.com/s/n9fxpe2s8wbzfo9/Image%20from%20iOS.MP4?dl=0

iOS can't install target has transitive dependencies that include statically linked binaries

I've this error when i run pod install.

[!] The 'Pods-MultipleAppsPods-appOne' target has transitive dependencies that include statically linked binaries: (/ios/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework/GoogleMobileAds.xcframework and /ios/Pods/GoogleMobileAdsMediationFacebook/MetaAdapter-6.12.0.1/MetaAdapter.xcframework)

This is my Podfile:

require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '13'
install! 'cocoapods', :deterministic_uuids => false

production = ENV["PRODUCTION"] == "1"
$RNFirebaseAsStaticFramework = true

abstract_target 'MultipleAppsPods' do
  config = use_native_modules!
  use_frameworks!

  # Flags change depending on the env values.
  flags = get_default_flags()

  use_react_native!(
    :path => config[:reactNativePath],
    :production => production,
    :hermes_enabled => flags[:hermes_enabled],
    :fabric_enabled => flags[:fabric_enabled],
    :flipper_configuration => FlipperConfiguration.disabled,
    :app_path => "#{Pod::Config.instance.installation_root}/.."
  )

  pod 'FBSDKCoreKit', :modular_headers => true
  
  pod 'RNAWSCognito', :path => '../node_modules/amazon-cognito-identity-js'
  pod 'ComScore', '~> 6.0'
  pod 'react-native-google-cast/GuestMode', path: '../node_modules/react-native-google-cast'
  pod 'google-cast-sdk', '4.6.1'
  pod 'react-native-config', :path => '../node_modules/react-native-config'
  pod 'react-native-config/Extension', :path => '../node_modules/react-native-config'
  
  target 'appOne' do
  end
  target 'appTwo' do
  end


  post_install do |installer|
    react_native_post_install(installer)
    __apply_Xcode_12_5_M1_post_install_workaround(installer)
    installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] =  "arm64"
  end
  end
end

[Android&IOS] - Interstitial ads - It shows up only once and isReady crashes on Android

Hi!
We've implemented this library to show Interstitial ads between screens and we noticed the following issues:

  1. On both platforms the interstitial ad shows up only once;
  2. On Android, whenever we call isReady, the app crashes;

This is our setup:

  • React Native v.73.0
  • iOS Simulator 17.2
  • Android Emulator API 34

After a debugging session, we managed to fix up both issues as follow:

  1. On Android there was a problem with isReady callback parameter. Right now this library attempts to pass mInterstitialAd directly, but it is an object and it isn't possible to return an instance as a callback parameter;
  2. On iOS there was a problem with requestAd, the condition to check if we can request a new add should be inverted;

Here you can find our patch that we created using patch-package

Current dependency on Google-Mobile-Ads-SDK 7.68.0 break cocoapods installation

The react-native-ad-manager depends on Google-Mobile-Ads-SDK 7.68.0 which depends on GoogleMobileAdsMediationFacebook 6.2.0.0 as a dependency that fails during pod install.

Not able to reach this URL: https://google.bintray.com/mobile-ads-adapters-ios/FacebookAdapter/6.2.0.0/FacebookAdapter-6.2.0.0.zip

AdsSDK

I have reported an issue with Google-Mobile-ads-SDK as well : googleads/googleads-mobile-unity#1686

It would be good to use the latest version of the library and not tie it to one specific version which might be causing the issue.

Interstitial.setAdUnitID issue on Android

Hello,

First of all I can't thank you enough for this valuable library. I have been using it in many projects for about 2 years.

My problem is if I define once the ad id for the interstitials, I cannot replace it with a new one on Android. Let me share the code:

`

useEffect(() => {
let countValue = 10;

if (!isInterstitial) {
  Interstitial.setAdUnitID('/6499/example/interstitial');
  setInterstitial(true);
}

if (count >= countValue) {
  Interstitial.requestAd()
    .then(() =>
      Interstitial.showAd().catch((error) => {
        console.warn('showAd', error);
      }),
    )
    .then(() => {
      setTimeout(() => {
        Interstitial.setAdUnitID('anotherAdId');
      }, 3000);
    })
    .catch((error) => {
      setTimeout(() => {
        Interstitial.setAdUnitID('anotherAdId');
      }, 3000);
    });
}
}, [isInterstitial, count])

`

In summary, I define an id when the application is first opened, and after the ad is shown, I want to define a new id. But unfortunately it still uses the old id when requesting the ads.

Everything’s fine on iOS.

bitcode error

After installing the package as mentioned in the ReadMe file, when i try to start the app, the build is failed with the following error and it seems that react native ad manager needs FBAudienceNetwork lib which is causing this issue :

reactnative/NASCAR/ios/Pods/FBAudienceNetwork/Static/FBAudienceNetwork.framework/FBAudienceNetwork(FBANInterstitialAdAdapter.m.o), could not parse object file /Users/ksharma/Desktop/nascar-reactnative/NASCAR/ios/Pods/FBAudienceNetwork/Static/FBAudienceNetwork.framework/FBAudienceNetwork(FBANInterstitialAdAdapter.m.o): ’Invalid bitcode version (Producer: ‘1103.0.32.59.0_0’ Reader: ‘1100.0.33.8_0’)’, using libLTO version ‘LLVM version 11.0.0, (clang-1100.0.33.8)’ file ‘/Users/ksharma/Desktop/nascar-reactnative/NASCAR/ios/Pods/FBAudienceNetwork/Static/FBAudienceNetwork.framework/FBAudienceNetwork’ for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

We don't want to disable bitcode as Apple uses it to optimize the app. Please suggest how to fix this issue. Thanks !!

description of props

please describe all the props of native ad view and where to get from m stuck here

<NativeAdView targeting={{ customTargeting: { group: "user_test" }, categoryExclusions: ["media"], contentURL: "test://", publisherProvidedID: "provider_id" }} style={{ width: "100%" }} adsManager={adsManager} validAdTypes={["native", "template"]} customTemplateId="123" onAdLoaded={ad => { console.log(ad); }} onAdFailedToLoad={error => { console.log(error); }} />

Need support for iOS privacy manifest files (Google AdMob Mobile SDK 11.2.0)

Hi react-native-ad-mananger developers, I am wondering if you have plans to update to Google AdMob Mobile SDK 11.2.0 which has support for iOS privacy manifest files?
Thanks,
Simon

https://developers.google.com/admob/ios/rel-notes

"Starting May 1: You’ll need to include approved reasons for the listed APIs used by your app’s code to upload a new or updated app to App Store Connect. If you’re not using an API for an allowed reason, please find an alternative. And if you add a new third-party SDK that’s on the list of commonly used third-party SDKs, these API, privacy manifest, and signature requirements will apply to that SDK. Make sure to use a version of the SDK that includes its privacy manifest and note that signatures are also required when the SDK is added as a binary dependency."
https://developer.apple.com/news/?id=3d8a9yyh

NativeAddView is not working. throwing Internal error

Error: Request Error: Internal error.
at createErrorFromErrorData (utils.ts:7:17)
at onAdFailedToLoad (withNativeAd.tsx:262:39)
at Object.invokeGuardedCallbackProd (ReactNativeRenderer-dev.js:107:10)
at invokeGuardedCallback (ReactNativeRenderer-dev.js:340:31)
at invokeGuardedCallbackAndCatchFirstError (ReactNativeRenderer-dev.js:364:25)
at executeDispatch (ReactNativeRenderer-dev.js:466:3)
at executeDispatchesInOrder (ReactNativeRenderer-dev.js:490:5)
at executeDispatchesAndRelease (ReactNativeRenderer-dev.js:2774:5)
at executeDispatchesAndReleaseTopLevel (ReactNativeRenderer-dev.js:2783:10)
at forEachAccumulated (ReactNativeRenderer-dev.js:1254:8)

const adsManager = new NativeAdsManager(TEST_AD_BANNER);

<NativeAdView
        targeting={{
          customTargeting: { group: 'nzme_user_test' },
          categoryExclusions: ['media'],
          contentURL: 'nzmetest://',
          publisherProvidedID: 'provider_id_nzme',
        }}
        // style={{ width: '100%'}}
        adsManager={adsManager}
        validAdTypes={['banner']}
        adSize="mediumRectangle"
        validAdSizes={['mediumRectangle']}
        // onAdLoaded={this.onAdLoaded}
        onAdFailedToLoad={(error) => {
          console.log(error);
        }}
      />

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.