From 07ae46bb80a62134df5d271aaaeb24c12228102d Mon Sep 17 00:00:00 2001 From: "frederic.depret" Date: Tue, 6 Mar 2018 09:34:00 +0100 Subject: [PATCH 1/3] feat: Add Targeting --- Example/index.js | 1 + README.md | 1 + RNPublisherBanner.js | 5 ++++ .../rnadmob/RNPublisherBannerViewManager.java | 25 +++++++++++++++++++ ios/RNDFPBannerView.h | 1 + ios/RNDFPBannerView.m | 22 +++++++++++++++- ios/RNDFPBannerViewManager.m | 1 + 7 files changed, 55 insertions(+), 1 deletion(-) diff --git a/Example/index.js b/Example/index.js index ce9b7977f..08c7afbae 100644 --- a/Example/index.js +++ b/Example/index.js @@ -147,6 +147,7 @@ export default class Example extends Component { (this._adSizesExample = el)} diff --git a/README.md b/README.md index 2c543ccb7..4ca79ffca 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ import { console.error(error)} onAppEvent={event => console.log(event.name, event.info)} diff --git a/RNPublisherBanner.js b/RNPublisherBanner.js index ec6e3c03a..a7b9eacee 100644 --- a/RNPublisherBanner.js +++ b/RNPublisherBanner.js @@ -102,6 +102,11 @@ PublisherBanner.propTypes = { */ adUnitID: string, + /** + * DFP targeting + */ + targeting: string, + /** * Array of test devices. Use PublisherBanner.simulatorId for the simulator */ diff --git a/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java b/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java index 916f1c3d4..abe128ffc 100644 --- a/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java +++ b/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java @@ -31,6 +31,7 @@ class ReactPublisherAdView extends ReactViewGroup implements AppEventListener { protected PublisherAdView adView; String[] testDevices; + String targetString = null; AdSize[] validAdSizes; String adUnitID; AdSize adSize; @@ -146,6 +147,18 @@ public void loadBanner() { this.adView.setAdSizes(adSizesArray); PublisherAdRequest.Builder adRequestBuilder = new PublisherAdRequest.Builder(); + if (targetString != null) { + String[] parts = targetString.split("\\|"); + for (String s : parts) { + if (s.contains(":")) { + if (s.split(":").length > 1) { + if (s.split(":")[0] != "" && s.split(":")[1] != "") { + adRequestBuilder.addCustomTargeting(s.split(":")[0], s.split(":")[1]); + } + } + } + } + } if (testDevices != null) { for (int i = 0; i < testDevices.length; i++) { adRequestBuilder.addTestDevice(testDevices[i]); @@ -173,6 +186,10 @@ public void setAdSize(AdSize adSize) { this.adSize = adSize; } + public void setTargeting(String targeting) { + this.targetString = targeting; + } + public void setValidAdSizes(AdSize[] adSizes) { this.validAdSizes = adSizes; } @@ -193,6 +210,7 @@ public class RNPublisherBannerViewManager extends ViewGroupManager @property (nonatomic, copy) NSArray *validAdSizes; +@property (nonatomic, copy) NSString *targeting; @property (nonatomic, copy) NSArray *testDevices; @property (nonatomic, copy) RCTBubblingEventBlock onSizeChange; diff --git a/ios/RNDFPBannerView.m b/ios/RNDFPBannerView.m index a2aa73e81..124e27093 100644 --- a/ios/RNDFPBannerView.m +++ b/ios/RNDFPBannerView.m @@ -52,7 +52,27 @@ - (void)insertReactSubview:(UIView *)subview atIndex:(NSInteger)atIndex #pragma clang diagnostic pop - (void)loadBanner { - GADRequest *request = [GADRequest request]; + DFPRequest *request = [DFPRequest request]; + if ([_targeting length] > 0) { + NSArray *array = [_targeting componentsSeparatedByString:@"|"]; + NSMutableDictionary *customtargeting = [[NSMutableDictionary alloc] initWithCapacity:[array count]]; + + for (int i = 0 ; i < [array count] ; i++) { + id objet = [array objectAtIndex:i]; + if ([objet length] > 0 && objet) { + NSArray *array2 = [objet componentsSeparatedByString:@":"]; + if ([array2 count]>1) { + NSString *key = [array2 objectAtIndex:0]; + NSString *valeur = [array2 objectAtIndex:1]; + if (valeur && ![valeur isEqual:@"[]"]) { + [customtargeting setObject:valeur forKey: key]; + } + } + } + } + + request.customTargeting = customtargeting; + } request.testDevices = _testDevices; [_bannerView loadRequest:request]; } diff --git a/ios/RNDFPBannerViewManager.m b/ios/RNDFPBannerViewManager.m index a6564951d..e870a7e8a 100644 --- a/ios/RNDFPBannerViewManager.m +++ b/ios/RNDFPBannerViewManager.m @@ -40,6 +40,7 @@ - (dispatch_queue_t)methodQueue RCT_REMAP_VIEW_PROPERTY(adSize, _bannerView.adSize, GADAdSize) RCT_REMAP_VIEW_PROPERTY(adUnitID, _bannerView.adUnitID, NSString) RCT_EXPORT_VIEW_PROPERTY(validAdSizes, NSArray) +RCT_EXPORT_VIEW_PROPERTY(targeting, NSString) RCT_EXPORT_VIEW_PROPERTY(testDevices, NSArray) RCT_EXPORT_VIEW_PROPERTY(onSizeChange, RCTBubblingEventBlock) From 7c110bab042d10bc8c62d70fc8f117c7f0160b4c Mon Sep 17 00:00:00 2001 From: "frederic.depret" Date: Thu, 8 Mar 2018 14:27:07 +0100 Subject: [PATCH 2/3] feat: Add Targeting --- .../java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java b/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java index abe128ffc..9e028e92a 100644 --- a/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java +++ b/android/src/main/java/com/sbugert/rnadmob/RNPublisherBannerViewManager.java @@ -210,7 +210,7 @@ public class RNPublisherBannerViewManager extends ViewGroupManager Date: Thu, 8 Mar 2018 14:42:36 +0100 Subject: [PATCH 3/3] feat: Add Targeting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4ca79ffca..3a0eca689 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ import { console.error(error)} onAppEvent={event => console.log(event.name, event.info)}