Does anyone successfully integrated Google Consent SDK into your Buildbox games? I have tried to do this, but it looks like the Consent SDK version 1.3 has a bug in it or am I doing something wrong? I also tested with version 1.2, same issue! I am using Xcode Version 10.1 (10B61) BB3 RC1 version used! Here's the error: ERROR: Cannot initialize a variable of type 'PACConsentStatus *' with an rvalue of type 'PACConsentStatus' This line of code is causing it: Code: PACConsentStatus *status = PACConsentInformation.sharedInstance.consentStatus; Downloaded: Consent SDK (version 1.3) Followed Consent SDK Integration Guide for iOS: https://developers.google.com/admob/ios/eu-consent#google_rendered_consent_form Added all of this into the GameViewController.mm Code: - (void)viewDidLoad{ [super viewDidLoad]; // Google CONSENT SDK - EU CONSENT -> Update consent status [PACConsentInformation.sharedInstance requestConsentInfoUpdateForPublisherIdentifiers:@[ @"pub-xxxxxxxxxxxx" ] completionHandler:^(NSError *_Nullable error) { if (error) { // Consent info update failed. } else { // Consent info update succeeded. The shared PACConsentInformation // instance has been updated. } }]; // TODO: Replace with your app's privacy policy url. NSURL *privacyURL = [NSURL URLWithString:@"http://yourwebsite/privacy-policy-apps/"]; PACConsentForm *form = [[PACConsentForm alloc] initWithApplicationPrivacyPolicyURL:privacyURL]; form.shouldOfferPersonalizedAds = YES; form.shouldOfferNonPersonalizedAds = YES; form.shouldOfferAdFree = NO; // Load Form [form loadWithCompletionHandler:^(NSError *_Nullable error) { NSLog(@"Load complete. Error: %@", error); if (error) { // Handle error. } else { // Load successful. // Show Form [form presentFromViewController:self dismissCompletion:^(NSError *_Nullable error, BOOL userPrefersAdFree) { if (error) { // Handle error. } else if (userPrefersAdFree) { // The user prefers to use a paid version of the app. } else { // Check the user's consent choice. PACConsentStatus *status = PACConsentInformation.sharedInstance.consentStatus; } }]; } }]; // Forward Consent to Google Mobile Ads SDK GADRequest *request = [GADRequest request]; GADExtras *extras = [[GADExtras alloc] init]; extras.additionalParameters = @{@"npa": @"1"}; [request registerAdNetworkExtras:extras]; // END Any ideas? @Josh (Tekanology) @Astro Games @PlayShaft @AaroArts
Nope, I haven't. This seems like a bug from Google, I contacted them and they said that they will investigate into the issue, but never got back from them on the status. Probably have to wait for a newer version of Consent SDK.
I do have consent message, but that is not the point, Consent SDK stores value based on EU users choose to show more relevant ads if you do not have that probably you will be earning less due to this segmentation of users. There are other ways to store consent based on users choices, but I could not find proper solution. Nik added a Navigation button value for GDPR that is in BB3 and BB2, but couldn’t find a way that is going to replace Google Consent form.
So basically the consent message does nothing, just displays a message and that is it , I does not connect with admob or anything like that ? Wont admob ban the account if it does not see consent sdk being used ?
Oh and last two question maybe you know this, 1. Is your message (not consent sdk) displayed every time ? If no how did you do it to show just once in bb2 ? 2. For android do you have a revoke button in settings ? Basically to give the user access to choose again ? Again if yes how did you do that ? Thank you !!!
Well, I just add URL button to privacy policy inside the app and some of my apps have custom code that shows native Ui alert box that is snowing just once on app load, it would be annoying if this message is showing every time. I would encourage what top tier publishers are doing to be compliant with GDPR. Download their apps, they leave clue. I do not have any revoke buttons in settings, but that would be good. In Navigation button in Buildbox as part of UI, there is custom option to revoke consent, and custom code has to be added for this to work. Check in some older BB2 releases, in Official Announcements section in this forum where Nik provides more derails, but you will need extra help to prep that extra code by someone if you do not code.
Thanks ! I see that Leep's World that has 200M downloads does not have revoke btn either, instead they mention in the policy that if you wish to opt out you need to disable location services and to consult phone manufacturer manual, its funny but it must seems to be ok as they have hundreds of millions downloads I am very new in programming but can find my way around if I have some examples , Would it be possible to share the custom code that shows native Ui alert box that is snowing just once on app load and where you place it (normally without your app details just the functionality if possible ? If I am not asking for too much trouble (I presume for android the code is placed PTPlayer.Java and in IOS in GameViewControler.mm ?) Again thanks, If we ever meet I will for sure buy you a beer
Here's how to revoke consent with Buildbox: https://www.buildbox.com/forum/index.php?threads/buildbox-2-3-7-custom-button-gdpr-and-more.14206/ But does anyone know what to add into those two functions, since that's a custom option: Code: -(void)buttonActivated:(NSString*) name{ } -(bool)buttonVisible:(NSString*)name{ return false; } It should be something very simple, let's say for Admob to revoke consent?
I am getting also unknown type name 'GADRequest' and unknown type name 'GADExtras' in GADRequest *request = [GADRequest request]; GADExtras *extras = [[GADExtras alloc] init]; And I dont know why, I tried to search but no information ? what did you import in GameViewController.mm besides PersonalizedAdConsent.h ? Thanks !
Follow this guide closely: https://developers.google.com/admob/ios/eu-consent#google_rendered_consent_form If doing so, you won't have problem with GAD Request. Make sure all frameworks are also imported. But I could not resolve the issue related to the bug in the Consent SDK.
Thanks, did everything to the letter and now I am getting linker command failed after i add this part // TODO: Replace with your app's privacy policy url. NSURL *privacyURL = [NSURL URLWithString"http://yourwebsite/privacy-policy-apps/"]; PACConsentForm *form = [[PACConsentForm alloc] initWithApplicationPrivacyPolicyURLrivacyURL]; form.shouldOfferPersonalizedAds = YES; form.shouldOfferNonPersonalizedAds = YES; form.shouldOfferAdFree = NO; Even without the * for the form and try to build the project. I hate this )) Anyways thanks for all of your help ! I think I might try MoPub on IOS although I don't like their platform very much
Yesterday I found this new monetizing platform called GlobalHop SDK, registered a new account using this coupon (https://dashboard.globalhop.net/register?coupon=GlobalHopSDK) and integrated into my game. They claim they will give 50$ bonus after reaching 150$. Hope this is true and I will make additional money.
Sad, anyone can help this guy? Does anyone have a consent to collect or revoke in their games? It would be nice if you share how you comply with GDPR.
So I think I came up with a good solution that I am going to use for this. Looking at top tier apps seems that most just have I agree message and link to privacy policy: An example is this: in Leep's World you are greed with a message saying something along the lines: I hereby consent that my Device ID is used for targeted advertising etc etc and i understand that I have the option to opt out as described in the privacy policy and terms of use (links to the policy and terms) - In their privacy policy it says that you can opt out by disabling location services - They don't have a revoke button (seems that most of the top games don't have a revoke button) I have checked other games and they employ similar approaches. Given the above I am thinking to do this for IOS Code: - (void)viewDidLoad{ [super viewDidLoad]; // I will add here a an alert box that shows just once with the text of user agreement and link to policy and on button that just dismisses the alert // I still need to understand how to show this message once, i will try to see if i can find a way to sore a value and check that value // Google CONSENT SDK - EU CONSENT -> Update consent status [PACConsentInformation.sharedInstance requestConsentInfoUpdateForPublisherIdentifiers:@[ @"pub-xxxxxxxxxxxx" ] completionHandler:^(NSError *_Nullable error) { if (error) { // Consent info update failed. } else { // Consent info update succeeded. The shared PACConsentInformation // instance has been updated. } }]; // collect providers NSArray *adProviders = PACConsentInformation.sharedInstance.adProviders; // set cosnent status PACConsentInformation.sharedInstance.consentStatus = PACConsentStatusPersonalized; // Forward Consent to Google Mobile Ads SDK GADRequest *request = [GADRequest request]; GADExtras *extras = [[GADExtras alloc] init]; extras.additionalParameters = @{@"npa": @"1"}; [request registerAdNetworkExtras:extras]; // END
Yeeeeah!!! Managed to do it. Just use my code on the first post of this thread, @George L. This line was causing this: PACConsentStatus *status = PACConsentInformation.sharedInstance.consentStatus; Instead, use this: PACConsentStatus status = PACConsentInformation.sharedInstance.consentStatus; Remove the * thing before status, Google has updated it on their website, since I reported it. Now it works, before it was throwing weird errors. However, if you do this, the chances are you'll get this error: https://stackoverflow.com/questions/50698525/google-consent-sdk-linker-error To resolve this, Go to Build Phase -> Link Binary With Libraries then add PersonalizedAdConsent framework From Google Fixed it! Here's how it should look like in your game: see attachment to this post ;-)
Awesome ! Quick question how did you import the consent sdk ? Pods or manual ? And did you have to import admob sdk as well to solve the gad part ?
I managed to make the build work I don't know why but the form does not show, also after removing the * I get a warning saying that Unused variable 'status'