GameThrive and IDFA

Hi there,

I’ve just tried to upload a version of my game that includes GameThrive for the first time and am getting the following error:

Improper Advertising Identifier [IDFA] Usage. Your app contains the Advertising Identifier [IDFA] API but you have not indicated its usage on the Prepare for Upload page in iTunes Connect.

Does the GameThrive plugin access the IDFA at all? If so is there a way we can turn that off? Can we use openudid instead? I think it must be to do with the plugin as that’s the only thing I’ve really changed.

I’d really like to include GameThrive in my latest release but if it’s creating that issue then I’ll have to leave it out!

Any help is much appreciated!
 

Hi Mediaflex.

Did you get this message when you uploaded your binary with application loader when your app status was in ‘waiting for upload’?

or when your app was ‘under review status’?

Hi Mediaflex, that definitely shouldn’t be happening. We don’t use the IDFA for anything.

We’ll double check now to make sure this isn’t due to GameThrive. Could you list what other plugins you use as well? (even if you had them in a previous version of your app too)

Hey again. Ok, just tried it myself and didn’t get any IDFA related errors.

My guess is that it’s another plugin you’re using. Happy to help you try to figure out which one it is though.

Hi, good news - the app was approved by Apple. I’m also using the SponsorPay plugin (and have done for a couple of versions previous) so maybe they’ve made a change which flagged the IDFA check. 

Thanks for your help though guys - really impressed with GameThrive so far. I’ll give some more feedback over the next few weeks…

Glad to hear it was approved! SponsorPay does use the IDFA, but it’s ok for it to do so because the IDFA was designed to be used by ad-networks like SponsorPay. Here’s their blog post about it: https://blog.sponsorpay.com/an-update-on-apples-idfa-policies/

Hi Mediaflex.

Did you get this message when you uploaded your binary with application loader when your app status was in ‘waiting for upload’?

or when your app was ‘under review status’?

Hi Mediaflex, that definitely shouldn’t be happening. We don’t use the IDFA for anything.

We’ll double check now to make sure this isn’t due to GameThrive. Could you list what other plugins you use as well? (even if you had them in a previous version of your app too)

Hey again. Ok, just tried it myself and didn’t get any IDFA related errors.

My guess is that it’s another plugin you’re using. Happy to help you try to figure out which one it is though.

Hi, good news - the app was approved by Apple. I’m also using the SponsorPay plugin (and have done for a couple of versions previous) so maybe they’ve made a change which flagged the IDFA check. 

Thanks for your help though guys - really impressed with GameThrive so far. I’ll give some more feedback over the next few weeks…

Glad to hear it was approved! SponsorPay does use the IDFA, but it’s ok for it to do so because the IDFA was designed to be used by ad-networks like SponsorPay. Here’s their blog post about it: https://blog.sponsorpay.com/an-update-on-apples-idfa-policies/

I just submitted an app using build 2445 and after uploading and submitting, received a binary rejected email with the same error. Gamethrive is the only plugin I use. I removed it, resubmitted and everything is fine. Any ideas? Thanks!

is anyone else getting this… or has anyone successfully submitted an app with Gamethrive recently, ticked “no” for IDFA usage and subsequently been pinged by Apple?

Thanks!! 

Hey Derek, that’s odd. We’ve had several customers successfully submit apps with GameThrive without issue recently.

I’m investigating this now and should have some suggestions for you in a little while.

Hi again. Could you try the following steps:

  1. In terminal, unzip your app’s ipa file: “unzip yourapp.ipa”

  2. Change directory to the “Payload” folder that was created: “cd Payload”

  3. Run the following command (replace “yourapp” with the correct filename): “nm -m yourapp.app/yourapp | grep Advertis”

If you see something like the following, then the IDFA is being used by something in your app:

“002f3e48 (__TEXT,__text) weak external [Thumb] __ZNK2pf8DeviceID4Impl24getAdvertisingIdentifierEv”

Otherwise, there should be no result.

We just tested this ourselves on a Corona app with our GameThrive plugin and no advertising identifier usage was detected. If it is detected for you, could you paste your build.settings file or send it to us (support@gamethrive.com)?

That returned nothing.  However, running this

 

grep -r advertisingIdentifier yourapp.app

 

returned this:

 

Binary file yourapp.app/yourapp matches.

 

Rebuilding the app with the gamethrive plugin commented out of build.settings and re-running grep returned nothing.  ( I commented out the sections between  “–start push notification plugin” and “–end push notification plugin”

 

Here is my build.settings:

 

[lua]

settings =

{

  orientation =

  {

    default = “landscapeLeft”,

    supported =

    {

      “landscapeLeft”, “landscapeRight” , “portrait”, “portraitUpsideDown”,

    },

  },

  

  – start push notification plugin

–[[

  plugins=

  {

    [“plugin.GameThrivePushNotifications”] =

    {

      – required

      publisherId = “com.gamethrive”,

    },

    – Android requires Google Play Services with Corona v2014.2381 or later

    [“plugin.google.play.services”] =

    {

      publisherId = “com.coronalabs”

    },

  },

–]]

–end push notification plugin

  android =

  {

    largeHeap=true,

   

    usesPermissions =

    {

      “android.permission.INTERNET”,

      “android.permission.WRITE_EXTERNAL_STORAGE”,

      

      ------ INAPP  “com.android.vending.BILLING”,

    },

    intentFilters =

    {

      {

        label = “launch from URL”,

        actions = { “android.intent.action.VIEW” },

        categories =

        {

          “android.intent.category.DEFAULT”,

          “android.intent.category.BROWSABLE”,

        },

        data = { scheme = “realview” }

      },

      – You can add more intent filters here.

    },

  },

  iphone =

  {

    plist =

    {

      ------ NEWSSTAND UINewsstandApp = true, 

      CFBundleURLTypes =

      {

        {

          CFBundleURLSchemes =

          {

            “realview”,

          }

        }

      },

      UIAppFonts = { “Oxygen-Regular.ttf” },

      ------ DIFFERNT CFBundleIdentifier = “BUNDLEID HERE”,

      ------ DIFFERNT CFBundleDisplayName = “DISPLAY NAME HERE”,

      CFBundleIconFile = “Icon.png”,

      ------ NEWSSTAND CFBundleIcons = 

      ------ NEWSSTAND {

      ------ NEWSSTAND CFBundlePrimaryIcon = 

      ------ NEWSSTAND {

      CFBundleIconFiles =

      {

        “Icon.png”, 

        “Icon@2x.png”, 

        “Icon-Small.png”,

        “Icon-Small@2x.png”,

        “Icon-60.png”,

        “Icon-60@2x.png”,

        “Icon-72.png”, 

        “Icon-72@2x.png”,

        “Icon-Small-40.png”,

        “Icon-Small-40@2x.png”,

        “Icon-Small-50.png”,

        “Icon-Small-50@2x.png”,

        “Icon-76.png”,

        “Icon-76@2x.png”,

        ------ NEWSSTAND },

        ------ NEWSSTAND },

        ------ NEWSSTAND UINewsstandIcon = 

        ------ NEWSSTAND {

        ------ NEWSSTAND CFBundleIconFiles = 

        ------ NEWSSTAND {

        ------ NEWSSTAND “NewsStand.png”,

        ------ NEWSSTAND },

        ------ NEWSSTAND UINewsstandBindingType=“UINewsstandBindingTypeMagazine”,

        ------ NEWSSTAND UINewsstandBindingEdge=“UINewsstandBindingEdgeLeft”,

        ------ NEWSSTAND },

      },

    },

  },

}

[/lua]

Here is a screenshot from a hex editor 

 

http://imgur.com/hq9b72w

 

 

Thanks for following up. 

 

 

 

 

 

Thanks for the very detailed reply derek14!

We released a major update to our plugin last night that may also fix this issue for you. It will be automatically included the next time you create a build of your app, but you will need to follow the instructions here for it to continue working: http://forums.coronalabs.com/topic/51526-important-update-gamethrive-sdk-140/

Please give it a try and let me know if that worked.

thanks george18, will let you know how the submission process goes - we’ll be submitting another app later today.  fyi, the grep found an instance of “advertisingIdentifier” in the binary I just built (which includes all the changes for the 1.4 plugin) - not sure whether this is relevant or not though.

Thanks!

Add supportedPlatforms = { android=true }, to plugin.google.play.services section in your build.settings file so it looks like this.

 ["plugin.google.play.services"] = { publisherId = "com.coronalabs", supportedPlatforms = { android=true }, },

That will keep “AdvertisingIdentifier” from appearing in the binary. “iosAdvertisingIdentifier” is always present in Corona builds without any plugins but the looks to be a in a strings section of the binary so it shouldn’t be flag by Apple.

Hey derek14. We were able to reproduce this issue with the latest version of our plugin. You should follow jkasten’s instructions above and re-submit your app.

Sorry for the inconvenience and thanks for bringing this to our attention! We’ll be updating our documentation so other people don’t run into the same issue.