From 77026fc5b846009795a9e5be541201395707396f Mon Sep 17 00:00:00 2001 From: ramtinq Date: Wed, 2 Jun 2021 16:42:57 +0430 Subject: [PATCH 1/2] Testing ability to use keywords for loading ads in iOS. --- ios/Classes/Banner/BannerAdView.swift | 3 ++- .../Interstitial/InterstitialAdController.swift | 3 ++- ios/Classes/Native/NativeAdController.swift | 10 +++++++--- ios/Classes/RequestFactory.swift | 5 ++++- ios/Classes/Rewarded/RewardedAdController.swift | 3 ++- .../RewardedInterstitialAdController.swift | 3 ++- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/ios/Classes/Banner/BannerAdView.swift b/ios/Classes/Banner/BannerAdView.swift index 0cd009c..b86428f 100644 --- a/ios/Classes/Banner/BannerAdView.swift +++ b/ios/Classes/Banner/BannerAdView.swift @@ -28,7 +28,8 @@ class BannerAdView: NSObject, FlutterPlatformView { private func load() { let nonPersonalizedAds: Bool = data?["nonPersonalizedAds"] as! Bool - let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds) + let keywords: [String] = data?["keywords"] as! [String] + let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds, keywords: keywords) controller.bannerView.load(request) } diff --git a/ios/Classes/Interstitial/InterstitialAdController.swift b/ios/Classes/Interstitial/InterstitialAdController.swift index d6c6685..42bcaef 100644 --- a/ios/Classes/Interstitial/InterstitialAdController.swift +++ b/ios/Classes/Interstitial/InterstitialAdController.swift @@ -25,7 +25,8 @@ class InterstitialAdController: NSObject, GADFullScreenContentDelegate { channel.invokeMethod("loading", arguments: nil) let unitId: String = params?["unitId"] as! String let nonPersonalizedAds: Bool = params?["nonPersonalizedAds"] as! Bool - let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds) + let keywords: [String] = params?["keywords"] as! [String] + let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds, keywords: keywords) GADInterstitialAd.load(withAdUnitID: unitId, request: request) { (ad: GADInterstitialAd?, error: Error?) in if error != nil { self.interstitialAd = nil diff --git a/ios/Classes/Native/NativeAdController.swift b/ios/Classes/Native/NativeAdController.swift index e909043..33bac54 100644 --- a/ios/Classes/Native/NativeAdController.swift +++ b/ios/Classes/Native/NativeAdController.swift @@ -30,7 +30,11 @@ class NativeAdController: NSObject, GADNativeAdLoaderDelegate { let unitId: String = params?["unitId"] as! String let nonPersonalizedAds: Bool = params?["nonPersonalizedAds"] as! Bool let options: [String: Any] = params?["options"] as! [String: Any] - loadAd(unitId: unitId, nonPersonalizedAds: nonPersonalizedAds, options: options, result: result) + + let keywords: [String] = params?["keywords"] as! [String] + + + loadAd(unitId: unitId, nonPersonalizedAds: nonPersonalizedAds, options: options, keywords: keywords, result: result) case "updateUI": if params?["layout"] == nil || nativeAdUpdateRequested == nil { return } @@ -51,7 +55,7 @@ class NativeAdController: NSObject, GADNativeAdLoaderDelegate { } } - private func loadAd(unitId: String, nonPersonalizedAds: Bool, options: [String: Any], result _: FlutterResult) { + private func loadAd(unitId: String, nonPersonalizedAds: Bool, options: [String: Any], keywords: [String]?, result _: FlutterResult) { channel.invokeMethod("loading", arguments: nil) // ad options let adImageAdLoaderOptions = GADNativeAdImageAdLoaderOptions() @@ -67,7 +71,7 @@ class NativeAdController: NSObject, GADNativeAdLoaderDelegate { adLoader = GADAdLoader(adUnitID: unitId, rootViewController: nil, adTypes: [GADAdLoaderAdType.native], options: [adImageAdLoaderOptions, adViewAdOptions, adVideoOptions, adMediaAdLoaderOptions, adMuteThisAdLoaderOptions]) adLoader.delegate = self - let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds) + let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds, keywords: keywords) adLoader.load(request) } private func imagesToUrlStrigs (images: [GADNativeAdImage]?) -> [String]? { diff --git a/ios/Classes/RequestFactory.swift b/ios/Classes/RequestFactory.swift index 6f1fc22..ec5a96c 100644 --- a/ios/Classes/RequestFactory.swift +++ b/ios/Classes/RequestFactory.swift @@ -1,7 +1,7 @@ import GoogleMobileAds public enum RequestFactory { - public static func createAdRequest(nonPersonalizedAds: Bool) -> GADRequest { + public static func createAdRequest(nonPersonalizedAds: Bool, keywords: [String]? = nil) -> GADRequest { let request = GADRequest() if nonPersonalizedAds { let extras = GADExtras() @@ -11,6 +11,9 @@ public enum RequestFactory { if #available(iOS 13.0, *) { request.scene = UIApplication.shared.keyWindow?.windowScene } + if keywords != nil { + request.keywords = keywords + } return request } } diff --git a/ios/Classes/Rewarded/RewardedAdController.swift b/ios/Classes/Rewarded/RewardedAdController.swift index cb3c9ac..95db96c 100644 --- a/ios/Classes/Rewarded/RewardedAdController.swift +++ b/ios/Classes/Rewarded/RewardedAdController.swift @@ -27,7 +27,8 @@ class RewardedAdController: NSObject, GADFullScreenContentDelegate { channel.invokeMethod("loading", arguments: nil) let unitId: String = params?["unitId"] as! String let nonPersonalizedAds: Bool = params?["nonPersonalizedAds"] as! Bool - let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds) + let keywords: [String] = params?["keywords"] as! [String] + let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds, keywords: keywords) GADRewardedAd.load(withAdUnitID: unitId, request: request) { (ad: GADRewardedAd?, error: Error?) in if error != nil { self.rewardedAd = nil diff --git a/ios/Classes/RewardedInterstitial/RewardedInterstitialAdController.swift b/ios/Classes/RewardedInterstitial/RewardedInterstitialAdController.swift index 138009a..ecdd451 100644 --- a/ios/Classes/RewardedInterstitial/RewardedInterstitialAdController.swift +++ b/ios/Classes/RewardedInterstitial/RewardedInterstitialAdController.swift @@ -25,7 +25,8 @@ class RewardedIntersititalAdController: NSObject, GADFullScreenContentDelegate { channel.invokeMethod("loading", arguments: nil) let unitId: String = params?["unitId"] as! String let nonPersonalizedAds: Bool = params?["nonPersonalizedAds"] as! Bool - let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds) + let keywords: [String] = params?["keywords"] as! [String] + let request: GADRequest = RequestFactory.createAdRequest(nonPersonalizedAds: nonPersonalizedAds, keywords: keywords) GADRewardedInterstitialAd.load(withAdUnitID: unitId, request: request) { (ad: GADRewardedInterstitialAd?, error: Error?) in if error != nil { self.rewardedAd = nil From 22606952471c56ae38d9f7813ffa2c7aa8aa98fe Mon Sep 17 00:00:00 2001 From: ramtinq Date: Wed, 2 Jun 2021 16:54:39 +0430 Subject: [PATCH 2/2] Just removed a few extra spaces! --- ios/Classes/Native/NativeAdController.swift | 3 --- 1 file changed, 3 deletions(-) diff --git a/ios/Classes/Native/NativeAdController.swift b/ios/Classes/Native/NativeAdController.swift index 33bac54..d1b091d 100644 --- a/ios/Classes/Native/NativeAdController.swift +++ b/ios/Classes/Native/NativeAdController.swift @@ -30,10 +30,7 @@ class NativeAdController: NSObject, GADNativeAdLoaderDelegate { let unitId: String = params?["unitId"] as! String let nonPersonalizedAds: Bool = params?["nonPersonalizedAds"] as! Bool let options: [String: Any] = params?["options"] as! [String: Any] - let keywords: [String] = params?["keywords"] as! [String] - - loadAd(unitId: unitId, nonPersonalizedAds: nonPersonalizedAds, options: options, keywords: keywords, result: result) case "updateUI":