Flurry Analytics, not using Ads, still getting rejected for using IDFA

Hello everyone,

Our app was recently rejected by an Apple reviewer because while we don’t show ads, we’re apparently still using the IDFA (in contradiction of section 3.3.12 of the iOS Developer Program License Agreement ).

We recently included the Flurry plugin in our app so we can track download numbers, demographics, etc. The first update with Flurry included was accepted just fine by the Apple reviewer (my guess is that they just didn’t bother to check for ads showing) - but it appears they were more thorough this time.

In Feb 2014 there was a thread on here about this exact issue - apparently there was a bug in the Flurry sdk where they referenced the API even when not actually using Ads, and that’s what caused the app rejection.

We have updated to the latest daily build of Corona (2015.2535) and gave that a shot - but we ended up with strange linking errors when attempting to build, so we downgraded to (2015.2534) and that built just fine. We uploaded the build, selected it at iTunes Connect, said “no” to IDFA usage - and we were immediately blocked as they have detected that we do still indeed use the IDFA.

Can anyone provide us with some advice as to how we might proceed?

Thank you!

As far as I know nothing has changed in regards to Flurry or the IDFA.  Can you post those strange linking errors?

I know when you submit your app, they ask you questions about using the IDFA and one of the categories is for using analytics without advertising.  I forget the exact wording, but there should be one in there that will handle your case.

Rob

Hi, I have encountered the same problem. This is the official answer from flurry which solved this!

http://support.flurry.com/index.php?title=Analytics/FAQ/iOS&oldid=5654

Basically if you are using flurry for analytic, you have to select yes to Advertising Identifier and check the 2nd and 3rd option.

I do have 1 question, is the googleplay plugin required for iOS?

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

@Nob Studio

The way I see it, this only applies if you use User Acquisition Analytics (UAA) and set up specific Flurry campaigns to perform click-tracking of user installations from mobile advertising networks etc. 

If you only use Flurry to log app events using analytics.logEvent() you don’t need to declare IDFA usage.

I use Flurry in all my apps (for logging events only), and have yet to get rejected for not declaring IDFA usage.

If, on the other hand, you set up extra Flurry campaigns to do additional tracking, you’ll most likely need to declare IDFA usage.

@ingemar

Thats weird. I only use flurry for analytics.logEvent(), I checked my User Acquisition doesnt have any campaign, but when I select no for Advertising Identifier itunesconnect shows a warning that my app contains IDFA and I must declare it.

Maybe its the gameNetwork or googleplay plugin? 

my build settings

 plugins = { ["CoronaProvider.gameNetwork.apple"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, ["iphone-sim"]=true }, }, ["CoronaProvider.analytics.flurry"] = { publisherId = "com.coronalabs" }, ["plugin.google.play.services"] = { publisherId = "com.coronalabs" }, ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs" }, },

It does seem like something else is triggering it as I uploaded a new app (with Flurry) to Apple just a week ago with no warnings about IDFA usage, and yet another app was approved by them just a few days earlier.

@Nob Studio

I’ve found your culprit!

It’s this one:

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

From the metadata I see that it automatically links the AdSupport framework on iOS. The AdSupport framework includes references to the IDFA which is why you’re getting the warning.

@ingemar

Thank you! Just want to confirm, is that not required for flurry to work on iOS? Because on doc it says must add these two entries http://docs.coronalabs.com/plugin/flurry/index.html

I’ve never seen *that* before!

CoronaLabs will have to clarify why they say Google Play Services is needed. (Rob, can you chime in here?)

It might be necessary only on Android? I’m not sure. But one thing I can say is that the analytics are working for iOS even without it.

I’m using Enterprise, and the app compiles fine without it, however that may also be a difference between Pro and Enterprise. Again we’ll need to wait for some official answer from CoronaLabs on this matter.

I don’t have an official answer but a pretty good speculative one.  On Android, the Flurry SDK may be need features from the play.services plugin (which is the AdMob V2 plugin).  Since you’re including this big multipurpose library and it uses the IDFA, its getting included in your app.

You probably could limit loading that plugin to android only since I doubt Flurry needs it for iOS.  Try adding:

supportedPlatforms = { android=true },

to the play.services plugin and see if that solves the problem.

Thanks rob! I added supportedPlatforms = { android=true }, and tick no for IDFA. It was approved and flurry results came in so all is working fine. 

As far as I know nothing has changed in regards to Flurry or the IDFA.  Can you post those strange linking errors?

I know when you submit your app, they ask you questions about using the IDFA and one of the categories is for using analytics without advertising.  I forget the exact wording, but there should be one in there that will handle your case.

Rob

Hi, I have encountered the same problem. This is the official answer from flurry which solved this!

http://support.flurry.com/index.php?title=Analytics/FAQ/iOS&oldid=5654

Basically if you are using flurry for analytic, you have to select yes to Advertising Identifier and check the 2nd and 3rd option.

I do have 1 question, is the googleplay plugin required for iOS?

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

@Nob Studio

The way I see it, this only applies if you use User Acquisition Analytics (UAA) and set up specific Flurry campaigns to perform click-tracking of user installations from mobile advertising networks etc. 

If you only use Flurry to log app events using analytics.logEvent() you don’t need to declare IDFA usage.

I use Flurry in all my apps (for logging events only), and have yet to get rejected for not declaring IDFA usage.

If, on the other hand, you set up extra Flurry campaigns to do additional tracking, you’ll most likely need to declare IDFA usage.

@ingemar

Thats weird. I only use flurry for analytics.logEvent(), I checked my User Acquisition doesnt have any campaign, but when I select no for Advertising Identifier itunesconnect shows a warning that my app contains IDFA and I must declare it.

Maybe its the gameNetwork or googleplay plugin? 

my build settings

 plugins = { ["CoronaProvider.gameNetwork.apple"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, ["iphone-sim"]=true }, }, ["CoronaProvider.analytics.flurry"] = { publisherId = "com.coronalabs" }, ["plugin.google.play.services"] = { publisherId = "com.coronalabs" }, ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs" }, },

It does seem like something else is triggering it as I uploaded a new app (with Flurry) to Apple just a week ago with no warnings about IDFA usage, and yet another app was approved by them just a few days earlier.

@Nob Studio

I’ve found your culprit!

It’s this one:

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

From the metadata I see that it automatically links the AdSupport framework on iOS. The AdSupport framework includes references to the IDFA which is why you’re getting the warning.

@ingemar

Thank you! Just want to confirm, is that not required for flurry to work on iOS? Because on doc it says must add these two entries http://docs.coronalabs.com/plugin/flurry/index.html

I’ve never seen *that* before!

CoronaLabs will have to clarify why they say Google Play Services is needed. (Rob, can you chime in here?)

It might be necessary only on Android? I’m not sure. But one thing I can say is that the analytics are working for iOS even without it.

I’m using Enterprise, and the app compiles fine without it, however that may also be a difference between Pro and Enterprise. Again we’ll need to wait for some official answer from CoronaLabs on this matter.

I don’t have an official answer but a pretty good speculative one.  On Android, the Flurry SDK may be need features from the play.services plugin (which is the AdMob V2 plugin).  Since you’re including this big multipurpose library and it uses the IDFA, its getting included in your app.

You probably could limit loading that plugin to android only since I doubt Flurry needs it for iOS.  Try adding:

supportedPlatforms = { android=true },

to the play.services plugin and see if that solves the problem.