SDKBOX - 2.4.0.0 Release with GDPR support

admob support GDPR.

Thanks @yinjimmy.

So admob 2.4.3.3 support npa as well?

Just confused with earlier post about using staging version 2.4.3.4

yes, admob 2.4.3.3 support npa

static void setGDPR(bool enabled);

No gameanalytics yet?

1 Like

I want to message you please

Public co-operation is best for everyone.

  1. no gameanalytics
  2. pm is ok.

@yinjimmy
sdkboxplay 2.4.3.3 support GDPR?
iap 2.4.3.3 support GDPR?

iap,sdkboxplay v2.4.3.9 support GDPR, itā€™s on staging server. will be released soon.

sdkbox import iap --staging

to gei it.

Thanks yinjimmy

Hi @yinjimmy,

iap 2.4.3.9 is printing debug log even in release build.

06-14 01:04:54.505 11790 11805 D IAP : Refreshing products: 'full_game_no_ads,android.test.canceled,android.test.purchased,android.test.item_unavailable'

I also set debug to false (before and after init call) as below but it is still logging debug

sdkbox::IAP::setDebug(false); sdkbox::IAP::init();

Any idea?

Thanks

Itā€™s a bug here, Iā€™m fixing currently.

Reading more about GDPR consent policy, user can change from targeted ads to npa.
But it doesnt look like admob plugin allow to change the gdpr flag once it is initialised.
So can the gdpr function be called after the init call?
PluginAdMob::setGDPR(bool)

Thanks

yes, you can and check with output message:

extra=

Thanks @yinjimmy.

As I am currently writing up the privacy policy for my game, I need to provide details on the security measures taken by third party companies when storing data.

I really appreciate the efforts by SDKBOX team to commit to GDPR compliance but the privacy policy does not provide any details on data encryption or safe storage.

I assume that SDKBOX encrypts all data in transit? If so, would the privacy policy be updated to mention this?

Thanks

http://www.sdkbox.com/privacy

CONTACT

If you have any questions or suggestions regarding this Privacy Policy, please contact us at privacy@sdkbox.com.

Thanks,

2.5.0.0 (20190627)

Add

  1. Misc: add keychain for iOS
  2. Misc: add SystemVersion for Android
  3. IAP: add generateIdentityVerificationSignature for iOS
  4. setGDPR: Some plugins invoke 3rd SDK (AdMob,Unity) api, some not yet.
    • PluginAdMob: AdMob & sdkbox-core
    • PluginUnity: Unity & sdkbox-core
    • PluginChartboost: Chartboost & sdkbox-core
    • PluginAdColony: sdkbox-core
    • PluginAgeCheq: sdkbox-core
    • PluginAppnext: sdkbox-core
    • PluginAppodeal: sdkbox-core
    • PluginApteligent: sdkbox-core
    • PluginBee7: sdkbox-core
    • PluginFacebook: sdkbox-core
    • PluginFirebaseAnalytics: sdkbox-core
    • PluginFlurryAnalytics: sdkbox-core
    • PluginFyber: sdkbox-core
    • PluginGoogleAnalytics: sdkbox-core
    • PluginGPG: sdkbox-core
    • PluginInMobi: sdkbox-core
    • IAP: sdkbox-core
    • PluginKochava: sdkbox-core
    • PluginLeadBolt: sdkbox-core
    • PluginMisc: sdkbox-core
    • PluginOneSignal: sdkbox-core
    • PluginPhunwareAds: sdkbox-core
    • PluginPhunwareMessaging: sdkbox-core
    • PluginSdkbox-coreAds: sdkbox-core
    • PluginSdkbox-corePlay: sdkbox-core
    • PluginShare: sdkbox-core
    • PluginTapcore: sdkbox-core
    • PluginTune: sdkbox-core
    • PluginValuePotion: sdkbox-core
    • PluginYoutube: sdkbox-core
  5. AdMob: output ad request extra argument for debug
  6. AdMob: auto cache failed AD by setAutoCacheDelay
  7. AdMob: support do not cache ad when init / AD closed by setAutoCache
  8. CMake: fix Lua/JS, gpg
  9. Support CMake when cocos >= 3.16
  10. Facebook: gameRequest api
  11. Facebook: onInviteFriendsWithInviteIdsResult return uids []
  12. Firebase: setScreenName api for Android
  13. Firebase: export constants to Lua
    • sdkbox.FB_PERM_READ_PUBLIC_PROFILE
    • sdkbox.FB_PERM_READ_EMAIL
    • sdkbox.FB_PERM_READ_USER_FRIENDS
    • sdkbox.FB_PERM_PUBLISH_POST
    • sdkbox.FBSDKLoginBehaviorNative
    • sdkbox.FBSDKLoginBehaviorBrowser
    • sdkbox.FBSDKLoginBehaviorSystemAccount
  14. export sdkbox api to JS/Lua
    • sdkbox::init
    • sdkbox::setConfig
    • sdkbox::getConfig

Upgrade

  1. Firebase update iOS SDK 6.2.0
  2. AdColony android 3.3.8
  3. play-services-ads android 17.2.0
  4. Facebook iOS SDK to V5
  5. AdMob iOS SDK 7.44.0

Bugfix

  1. Fixed SDKBoxPlay login: using getGoogleSignInOptions() not GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN on Android
  2. Fixed Facebook iOS12 login
  3. Fixed AdMob smart banner for iOS
  4. Fixed share proguard
  5. Fixed sdkbox-core iOS memory leak
  6. Fixed IAP getPurchaseHistory
  7. Fixed AdMob banner position: on top when config bottom some iOS device.

Thanks,

Hello yinjimmy. I have an issue with latest update of SDKBox.
Amount of ANRā€™s (Application Not Responding) events considerably increased. I did a quick investigation and found that the cause of it is an automatic caching of ads by AdMob.

So I disabled auto caching by calling

sdkbox::PluginAdMob::setAutoCache(false);
sdkbox::PluginAdMob::setAutoCacheDelay(-1);
sdkbox::PluginAdMob::init();

Also I reworked my code to do caching of ads by calling sdkbox::PluginAdMob::cache() in a separate worker thread. ANR amount has been decreased but not eliminated completely. I still get ANRā€™s where ads caching blocks main thread.

ā€œmainā€ prio=5 tid=1 Blocked
| group=ā€œmainā€ sCount=1 dsCount=0 flags=1 obj=0x73e3a838 self=0xeabc8000
| sysTid=20427 nice=-10 cgrp=default sched=0/0 handle=0xeeacb494
| state=S schedstat=( 1415768472 170654662 3797 ) utm=96 stm=45 core=7 HZ=100
| stack=0xff516000-0xff518000 stackSize=8MB
| held mutexes=
at com.google.android.gms.ads.internal.cache.a.c (a.java:1)

  • waiting to lock <0x0ae99f84> (a java.lang.Object) held by thread 65
    at com.google.android.gms.ads.internal.cache.b.run (b.java:2)
    at android.os.Handler.handleCallback (Handler.java:873)
    at android.os.Handler.dispatchMessage (Handler.java:99)
    at aaj.a (aaj.java)
    at com.google.android.gms.ads.internal.util.e.a (e.java:1)
    at aaj.dispatchMessage (aaj.java)
    at android.os.Looper.loop (Looper.java:280)
    at android.app.ActivityThread.main (ActivityThread.java:6706)
    at java.lang.reflect.Method.invoke (Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)

Can AdMob still do some caching on main thread even auto-caching is disabled? Or Iā€™m missing something?

Is Google Mobile Ads do some caching by itself? How this can be tuned or changed to prevent such an ANRā€™s? Thanks.

I also have a lot of ANRā€™s of this kind:

ā€œmainā€ tid=1 Blocked
ā€œmainā€ prio=5 tid=1 Blocked
| group=ā€œmainā€ sCount=1 dsCount=0 flags=1 obj=0x74b48550 self=0xf2d48000
| sysTid=31146 nice=-10 cgrp=default sched=0/0 handle=0xf7208494
| state=S schedstat=( 1034146069 152396547 3010 ) utm=81 stm=22 core=2 HZ=100
| stack=0xff0dc000-0xff0de000 stackSize=8MB
| held mutexes=
at com.google.android.gms.ads.internal.cache.a.a (a.java:13)

  • waiting to lock <0x0cb62f29> (a java.lang.Object) held by thread 108
    at com.google.android.gms.ads.nonagon.load.h.a (h.java:3)
    at com.google.android.gms.ads.nonagon.load.n.a (n.java:14)
    at aqh.a (aqh.java:3)
  • locked <0x0ea6c2ae> (a aqh)
    at com.google.android.gms.ads.nonagon.ad.banner.ae.a (ae.java:4)
    at aqh.a (aqh.java:3)
  • locked <0x0ce6184f> (a aqh)
    at com.google.android.gms.ads.nonagon.ad.banner.aa.a (aa.java:1)
    at com.google.android.gms.ads.nonagon.shim.j.b (j.java:13)
  • locked <0x01d1875e> (a com.google.android.gms.ads.nonagon.shim.j)
    at com.google.android.gms.ads.nonagon.shim.l.b (l.java:4)
    at com.google.android.gms.ads.internal.client.ao.a (ao.java:87)
    at pb.onTransact (pb.java:3)
    at android.os.Binder.transact (Binder.java:688)
    at com.google.android.gms.internal.ads.zzfm.transactAndReadException (zzfm.java:10)
    at com.google.android.gms.internal.ads.zzzm.zzb (zzzm.java:18)
    at com.google.android.gms.internal.ads.zzabb.zza (zzabb.java:123)
    at com.google.android.gms.ads.BaseAdView.loadAd (BaseAdView.java:15)
    at com.google.android.gms.ads.AdView.loadAd (AdView.java:18)
    at com.sdkbox.plugin.PluginAdMob.createOrGetBannerView (PluginAdMob.java:684)
    at com.sdkbox.plugin.PluginAdMob.access$200 (PluginAdMob.java:50)
    at com.sdkbox.plugin.PluginAdMob$1.run (PluginAdMob.java:219)
    at android.os.Handler.handleCallback (Handler.java:873)
    at android.os.Handler.dispatchMessage (Handler.java:99)
    at android.os.Looper.loop (Looper.java:193)
    at android.app.ActivityThread.main (ActivityThread.java:6863)
    at java.lang.reflect.Method.invoke (Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:537)
    at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:858)

EDIT:
And a bunch of ANRā€™s where next call appears:

com.sdkbox.plugin.PluginAdMob.nativeInit (PluginAdMob.java:140)

On screenshot I have marked update of my app. Iā€™m only updated SDKBox plugins on that update.
Untitled1

First, thanks for your report this issue.

These code stop PluginAdMob auto cache ads.
I need to research AdMob whether do some auto-caching.

.

Most devices that have ANR issues are Huawei ones with android 7.0 or 9.0. Hope this helps.