Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

iOS Advertising Identifier rejection FAQ

Discussion in 'iOS and tvOS' started by Mantas-Puida, Feb 3, 2014.

  1. MrDude

    MrDude

    Joined:
    Sep 21, 2006
    Posts:
    2,569
    What reason did Apple give you for the rejection? Manta also said that the review team must actually see the ads or else they will reject it also. Did you show it on every scene or maybe in a scene they did not get to? Either way, could you maybe copy paste the reason they gave? I'd be very curious to learn what their problem is... :(
     
  2. manny003

    manny003

    Joined:
    Mar 18, 2014
    Posts:
    69
    They gave the same reason I imagine most people on this thread has gotten:

    PLA 3.3.12

    We still found that your app uses the iOS Advertising Identifier but does not include ad functionality. This does not comply with the terms of the iOS Developer Program License Agreement, as required by the App Store Review Guidelines.
    Same reason as my first rejection. I've tried everything and performed all the checks and double checks as instructed. Now, if the reason I was rejected was they could not see my iAd Banner, I wish the reject reason would state so. Communication of this kind needs to be as precise and accurate as possible.

    Reading the reject reason I was given literally, I was rejected for using IDFA.

    My iAd banner is on the title screen, level select, power-up upgrades, game over, level end, and pause menu screen. In essence, it's on every screen except during game play. In testing, the banners appear almost all the time they're supposed to. Now, is there something I need to do, with respect to the iAd program, when I submit my app? What is this "fill rate" setting I keep reading about? I can't find it anywhere. Did I miss something there?

    At this point, I am seriously frustrated beyond belief.

    Manny

    PS: The rejection letter states I can use the "nm" tool to help locate the Advertising Identifier but the man pages doesn't provide examples. Does anyone have info on how to do this for our specific case? How to run it and what exactly am I looking for?
     
    Last edited: Oct 9, 2014
  3. manny003

    manny003

    Joined:
    Mar 18, 2014
    Posts:
    69
    In my Player Settings, I have "Submit HW Statistics" checked. Could that be bringing in a library that uses IDFA?

    Manny
     
  4. ErwanB

    ErwanB

    Joined:
    Nov 14, 2012
    Posts:
    25
    @manny003 As Mantas said : iAd is not considered as an "ad functionality" by the Apple Review Team.
    The review team is actually seeing your iAd ads, no problem with that.
    However they do not see any third-party ads (AdMob for instance) and that is the problem.

    To check if your app uses the advertising identifier using nm and otool :
    1. Open Terminal
    2. Navigate to <yourAppArchiveName>.xcarchive/Products/Applications/<yourAppName>.app
    3. nm <yourAppName> | grep advertisingIdentifier
    4. otool -L <yourAppName> | grep AdSupport
    if both nm and otool commands return nothing you're good to go.

    When submitting your app in iTunes Connect, you were asked whether your app uses the Advertising Identifier to serve ads. What was your answer ?

    "Submit HW Statistics" has nothing to do with your problem.
     
    thinkerton5 and MrDude like this.
  5. samuelhuynh

    samuelhuynh

    Joined:
    Oct 21, 2014
    Posts:
    2
    uhm.... hix..... I got reject because of the same reason
    //---------------------------------------------------------------------------
    If your app does not serve ads, please check your code - including any third-party libraries - to remove any instances of:

    class: ASIdentifierManager
    selector: advertisingIdentifier
    framework: AdSupport.framework

    If you are planning to incorporate ads in a future version, please remove the Advertising Identifier from your app until you have included ad functionality.
    //-------------------------------------------------------------------------
    I am using 4.6 Unity

    By the way, when I export my project to Xcode, I keep getting warning about the iAD.mm although I don't use any AD for my project!?!?
     
  6. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    Are you using 3rd party plugins?
     
  7. samuelhuynh

    samuelhuynh

    Joined:
    Oct 21, 2014
    Posts:
    2
    I am not really a developer :) (working full-time as a welder atm) so I don't know much about the 3rd party plugins.

    But I am using Unity with some assets I bought from the asset store
    - Energy Bar Tool Kit
    - Hedgehog Team / Easy Touch

    I don't know if those are the 3rd party plug-in or not

    I tried to get rid of the iAD framework but I will get error when compile. I am not a programmer so I don't know anything about Xcode :)
     
  8. CyberTurboPlays

    CyberTurboPlays

    Joined:
    Nov 7, 2014
    Posts:
    65
    these pages of discussion really sore my eyes, can i sum these up like this?

    if we are using (non-iads) ads plugin(admob, chartboost , etc) to show ads in IOS game, as long as they show up to the reviewer, the Advertising Identifier problem that discuss so heavily here, would not really matter and got people rejected right?

    if we are not serving any ads or using iAds only in our IOS games, we should check if there is any "Advertising Identifier" stuff used in our project prior to submit for review, right?

    please say that i am right

    hangon, what about FB or twitter SDK? anyone got rejected becoz of integrating those social SDK?
     
    Last edited: Nov 28, 2014
  9. StarHunter32

    StarHunter32

    Joined:
    Feb 10, 2013
    Posts:
    99
    I'm using Everyplay. Does it uses the identifier even I don't have any ads. What should I put in the question?
    If "yes",which check boxes from the next three to check or leave all of them blank?
     
    Last edited: Dec 10, 2014
  10. thinkerton5

    thinkerton5

    Joined:
    Apr 16, 2014
    Posts:
    5
    Wow nearly a year later and you guys still haven't fixed this. Can we at least expect some love in Unity 5?
     
  11. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    It was fixed long time ago. Top reasons why people still get IDFA rejections are:
    - they are checking "yes" next to IDFA usage question in App Store submission form. (Resubmitting with "No" solves the problem).
    - they are using 3rd party SDKs or plugins, that use IDFA (Upgrading to newer SDK / plugin version or just removing that plugin helps solving the issue)
    - they are actually serving ads, but reviewers didn't notice them (Responding to reviewer with clear instructions how to get advertisement shown usually resolves issue)
     
    davidguaita likes this.
  12. thinkerton5

    thinkerton5

    Joined:
    Apr 16, 2014
    Posts:
    5
    Thanks for letting me know this has definitely been fixed. To clarify:
    1. iAD Framework doesn't need to be completely removed from the Xcode project?
    2. Without 3rd party plugins Apple won't complain about IDFA usage?

    Thanks Mantas!
     
  13. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    iAD is not anyhow related to this issue (except that you can't use it to justify IDFA use in your scripts), so you don't need to remove it.
    Yes, you should be fine. Unless any of your scripts poke iPhone.advertisingIdentifier
     
  14. Deleted User

    Deleted User

    Guest

    To show iads in my game, all I have to do is create a empty game object and attach the script found here to it: http://docs.unity3d.com/ScriptReference/ADBannerView.html ? Is there anything I need to set up on my iAds dashboard or in iTunes connect?

    Also with Unity 4.6.1f1, is there still anything I should know about/do to ensure my game doesn't get rejected for iads complications?
     
  15. Deleted User

    Deleted User

    Guest

    Because right now, I'm not seeing any ads when I run on my iPad Air.
     
  16. AppBite

    AppBite

    Joined:
    Jul 5, 2012
    Posts:
    79
    We just had a PLA 3.3.12 rejection of an app update, built on Unity v4.5.5p5, with no change in the code relating to ads from the previous versions.

    What is the best/fastest approach ? Respond to the reviewer showing the strings output ? or start a new submission and tick nothing in the IDFA usage question(s) ? as we are only using iAds.

    Thanks,
    Scott
     
  17. AppBite

    AppBite

    Joined:
    Jul 5, 2012
    Posts:
    79
    So what should we be seeing building with Unity v4.5.5p5 ? We are only severing iAds, using the Prime31 Plugin (bought before Unity had iAd support) and also have the Facebook Prime31 plugin, both updated to the latest versions.

    We seem to have the AdSupport.framework in there and the appears to be related to DeviceSettings.mm

    I have checked our old approved apps and they are the same.
    We do use SystemInfo.deviceUniqueIdentifier and need it for our project to match returning users to their credits within the game (stored on our server).

    Above was a suggestion to check if the framework was statically linked. Is that the best option here ?

    What should we be answering for the Does this app use the Advertising Identifier (IDFA)? question ?
    and the 3 sub-question checkboxes ?

    Using Erwan Bézier's tests suggested above

    Scotts-Mac-mini:bingo.app sgolby$ pwd
    /Users/sgolby/Library/Developer/Xcode/Archives/2015-01-03/Unity-iPhone 1-3-15, 12.34 AM.xcarchive/Products/Applications/bingo.app
    Scotts-Mac-mini:bingo.app sgolby$ nm bingo | grep -i advertisingIdentifier
    Scotts-Mac-mini:bingo.app sgolby$ otool -L bingo | grep AdSupport
    /System/Library/Frameworks/AdSupport.framework/AdSupport (compatibility version 1.0.0, current version 1.0.0)

    Some people have suggested grep'ing the xcode project looking for a 3rd party plugin, I think this is saying it's within Unity itself.

    Scotts-Mac-mini:ipad122-Apple-Upload sgolby$ pwd
    /Users/sgolby/Documents/Xcode/BingoDev-Xcode/ipad122-Apple-Upload

    Scotts-Mac-mini:ipad122-Apple-Upload sgolby$ grep -r advertisingIdentifier .
    ./Classes/Unity/DeviceSettings.mm: && [retClass instancesRespondToSelector:mad:selector(advertisingIdentifier)]
    ./Classes/Unity/DeviceSettings.mm: _ADID = (NSString*)[[[manager performSelector:mad:selector(advertisingIdentifier)] UUIDString] retain];
    Binary file ./Data/Managed/UnityEngine.dll matches
    Binary file ./Libraries/libiPhone-lib.a matches
    ./Libraries/RegisterMonoModules.cpp: void Register_UnityEngine_iPhone_get_advertisingIdentifier ();
    ./Libraries/RegisterMonoModules.cpp: Register_UnityEngine_iPhone_get_advertisingIdentifier ();
    ./Libraries/UnityEngine.dll.s:m_wrapper_managed_to_native_UnityEngine_iPhone_get_advertisingIdentifier:
    ./Libraries/UnityEngine.dll.s:plt__icall_native_UnityEngine_iPhone_get_advertisingIdentifier:
     
  18. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    You should answer "No"

    This one is NOT good. You should remove static link to AdSupport.framework.

    These are OK.
     
  19. Deleted User

    Deleted User

    Guest

    To show iads in my game, all I have to do is create a empty game object and attach the script found here to it:http://docs.unity3d.com/ScriptReference/ADBannerView.html ? Is there anything I need to set up on my iAds dashboard or in iTunes connect?

    Also with Unity 4.6.1f1, is there still anything I should know about/do to ensure my game doesn't get rejected for iads complications? Because right now no ads are showing on my iPad.

    @Mantas Puida
     
  20. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    According to Apple guideline you need "your team agent request and agree to an iAd App Network contract and set up relevant tax and banking information". Previously you had also explicitly tick a checkbox for your app to enable iAd, but I don't see this option in iTunes Connect anymore. Maybe you don't need to that these days, but Apple support might be better source of such information.

    In general not all requests for iAd service are served, but in general you should see some placeholder ad appearing on your screen. You should make sure that script includes following part:
    Code (csharp):
    1.  
    2. void OnBannerLoaded()
    3. {
    4. Debug.Log("Loaded!\n");
    5. banner.visible = true;
    6. }
    7.  
    Additionally you could check if Xcode debugger console actually contains "Loaded!" log message.


    It never was iAd problem, it was AdSupport + IDFA, which different framework from iAd.
     
  21. Satoshi Ueda

    Satoshi Ueda

    Joined:
    Feb 10, 2015
    Posts:
    14
    So we won't have any problems with Unity 4.6.3 regarding this issue?
     
  22. Catacomber

    Catacomber

    Joined:
    Sep 22, 2009
    Posts:
    682
    Can you post what the good code should be in 4.6.3 if you aren't using ads? I have the old code but notice in Xcode a lot of new code has been added to DeviceSettings.mm.

    What's the current good code to copy there so submitting to Apple we have no problem if we have no ads.

    I might consider ads in the future but right now don't have them.

    Thanks very much.

    Or please let me know if I copy the old code in there you originally posted -- will it work?
     
  23. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    You should use DeviceSettings.mm version that ships with 4.6.3. No modifications are needed.
     
  24. Catacomber

    Catacomber

    Joined:
    Sep 22, 2009
    Posts:
    682
    Thanks so much. Wasn't sure.
     
  25. plasticYoda

    plasticYoda

    Joined:
    Aug 20, 2013
    Posts:
    62
    For those of you with multiple apps, you can modify the base iOS code used by Unity by right clicking on your Unity.app icon in Applications/Unity - selecting 'Show Package Contents', then navigating to Contents/PlaybackEngines/iossupport/Trampoline -- you can then modify any .mm/.h files and when you build an app these modified .mm/.h will be used in your new XCode project.
     
  26. Tinotano89

    Tinotano89

    Joined:
    Jan 11, 2015
    Posts:
    7
    I'm using version 4.6.3 and using iAD. Should i change something from DeviceSettings.mm? Or simply saying "Not using IDFA" when submiting is enough?
     
  27. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    Saying "Not using IDFA" is enough.
     
  28. Tinotano89

    Tinotano89

    Joined:
    Jan 11, 2015
    Posts:
    7
  29. pollyox16

    pollyox16

    Joined:
    Feb 7, 2014
    Posts:
    13
    Im using Ultimate Mobile plugin in my project, using unity ads (that came from the ultimate mobile plugin) and im also using Unity ads. Should I click "Not using IDFA"?

    Im getting this with nm:

    Joses-Mac-Pro:saltapatria.app Bytepolar$ nm saltapatria.app | grep AdSupport

    2015-04-04 14:45:54.448 xcodebuild[6887:219310] [MT] PluginLoading: Required plug-in compatibility UUID A16FF353-8441-459E-A50C-B071F53F51B7 for plug-in at path '~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Unity4XC.xcplugin' not present in DVTPlugInCompatibilityUUIDs

    error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm: can't open file: saltapatria.app (No such file or directory)
    And this with otool:

    Joses-Mac-Pro:saltapatria.app Bytepolar$ otool -L saltapatria.app | grep AdSupport

    error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/otool: can't open file: saltapatria.app (No such file or directory)​
     
    Last edited: Apr 4, 2015
  30. SyedUmair

    SyedUmair

    Joined:
    Sep 2, 2013
    Posts:
    43
    Hi, I am using Unity3D 4.6.4f1 and there is not external or 3rd party plugin in my project. But when I use
    I got this:
    and after following process defined in first comment of this thread, I succesffuly removed references from DeviceSettings.mm class but there is still
    remaining. How to remove this? Plz help.. :(
     
  31. SyedUmair

    SyedUmair

    Joined:
    Sep 2, 2013
    Posts:
    43
    No reply yet.
    Need help... :(
     
  32. SyedUmair

    SyedUmair

    Joined:
    Sep 2, 2013
    Posts:
    43
    I guess, there is no one to answer on this forum.
     
  33. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    I believe Unity Ads are using IDFA for some types of advertisement tracking. In such case you should mark use of IDFA and should provide instructions to the reviewer how to get Ads being displayed in your game.
     
  34. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    You don't need to do anything about it. Just say "not using IDFA" when submitting game.
     
    SyedUmair likes this.
  35. SyedUmair

    SyedUmair

    Joined:
    Sep 2, 2013
    Posts:
    43
    (phewww) Thanks bro. :)
     
  36. mkg2w

    mkg2w

    Joined:
    Aug 19, 2013
    Posts:
    54
    Hi, our recent app (with no Advertising in it), was rejected by Apple.

    We've followed all instructions in this post (Regarding editing DeviceSettings.mm, etc.), are using Unity 4.6.2, yet on submitting the iPA to the appstore, we still get a warning that the Ad Identifier is used by the app.

    Running a grep on the project, points to the Unity DLLs and RegisterMonoModules.cpp. We can try deleting the references in RegisterMonoModules.cpp, but what is the work around to the UnityEngine.dll references?

    grep -r advertisingIdentifier .

    Binary file ./pfxcode_4.6_8/Data/Managed/UnityEngine.dll matches

    Binary file ./pfxcode_4.6_8/Libraries/libiPhone-lib.a matches

    ./pfxcode_4.6_8/Libraries/RegisterMonoModules.cpp:void Register_UnityEngine_iPhone_get_advertisingIdentifier ();

    ./pfxcode_4.6_8/Libraries/RegisterMonoModules.cpp:Register_UnityEngine_iPhone_get_advertisingIdentifier ();

    ./pfxcode_4.6_8/Libraries/UnityEngine.dll.s:m_wrapper_managed_to_native_UnityEngine_iPhone_get_advertisingIdentifier:

    ./pfxcode_4.6_8/Libraries/UnityEngine.dll.s:plt__icall_native_UnityEngine_iPhone_get_advertisingIdentifier:
     
  37. akenaton

    akenaton

    Joined:
    Oct 11, 2013
    Posts:
    9
    @mantas
    I just get rejected by apple due to OS Advertising Identifier
    I'm using unity 4.6.4f1 and Xcode 6.3 and UnityAds package 1.1 4
    Should be enough to:
    Remove everything in DeviceSettings.mm as you have stated to your 1st post

    Should I need to remove reference to AdSupport.framework in Xcode

    Should I Answer "No" to the question on IDFA usage on the submit form.
     
  38. murielahick

    murielahick

    Joined:
    Apr 13, 2015
    Posts:
    6
    I'm using the Unity's ADBannerView to serve the iAd. Xcode reports some depreciation of some ADBannerContentSizeIdentifier, but I feel that it's not related to this issue.
     
  39. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    I believe UnityAds are using IDFA, so you should do no modifications in the project and you should be answering Yes. Just add comment to the reviewer where Ads can be seen in your game.
     
  40. Sabbiamobile

    Sabbiamobile

    Joined:
    Aug 16, 2014
    Posts:
    2
    Hi !
    I am using Unity3D 5.0.1f1 and there is not external plugin in my project... i have to change something in order to avoid the submission problem ? I don't use iAD or other Adv.
    Thanks !
     
  41. Mantas-Puida

    Mantas-Puida

    Joined:
    Nov 13, 2008
    Posts:
    1,864
    You don't need to change anything.
    Just when submitting to the App Store answer NOT using IDFA.
     
  42. Catacomber

    Catacomber

    Joined:
    Sep 22, 2009
    Posts:
    682
    Our new RPG game Omber was just approved for sale in the App Store. We used Unity 4.6.5f1 out of the box. Didn't make any changes to Device Settings.mm. This is the first time I didn't tweak Device Settings.mm because you said it wasn't necessary any more.

    We answered "NO" to whether the app was using the IDFA and in comments in iTunes we put a small explanation that "We do not use ads although there are some scripts in Unity for those who do use ads."

    That was all we had to do.
     
    Last edited: Jun 17, 2015
  43. tremendo

    tremendo

    Joined:
    Feb 16, 2015
    Posts:
    9
    Hello, how are you?

    Is this issue fixed? I wanted to do the workaround and I can't find these functions:

    static void QueryAdID()
    static void QueryAdTracking()

    Did they change?

    Thanks!
     
  44. Emre_U

    Emre_U

    Joined:
    Jan 27, 2015
    Posts:
    49
    In my case I have UnityAds sdk in my build but I disables initilize part in script. And got rejected ofc :)

    So can I solve my problem just by erasing UnityAds in editor and then recompiling without related scripts?
     
  45. Abmandu3d

    Abmandu3d

    Joined:
    Oct 16, 2015
    Posts:
    2
    Hi,

    We faced the same issue and now it has been fixed. But should I click on "Submit for Review" or Reply to the resolution center and wait for their update?
     
  46. Madarco

    Madarco

    Joined:
    Feb 2, 2016
    Posts:
    1
    I had this problem recentily with Unity 5.X and I found this post rather confusing, so I'll try to explain here what I found:

    If you get this problem, and you don't serve CUSTOM ads, just be sure to not link AdSupport.framwork in your Xcode project, and check NO to the IDFA question.

    ---

    **Explained:**

    Now (Unity 5.3.x) the problem for Advertising Identifier is solved, if you get rejected is because you clicked **YES** on the question about the Identifier during the submitting process on Itunesconnect, **while not having custom ads displayed in your app**.

    Also, If you are using iAd this isn't needed: iAd and AdSupport.framework are a different thing. IAds doesn't use the AdSupport.framework.

    To be sure that your code or a plugin isn't accessing the AdvertisingIdentifier, just check that your code doesn't link the AdSupport.framework.

    If you check the `DeviceSettings.nm` file from unity, you can see in the `QueryAsIdentifierManager` and `UnityAdvertisingIdentifier` methods, from Unity 5.x, the Identifier is accessed only if the AdSupport.framework is present, otherwise null is returned.
     
    duanpeijian and Abaobao like this.
  47. pokeking

    pokeking

    Joined:
    May 13, 2015
    Posts:
    42
    Edit: sorry, wrong topic
     
    Last edited: Mar 9, 2016
  48. Rcocuzzo8

    Rcocuzzo8

    Joined:
    Apr 23, 2016
    Posts:
    3
    @Mantas Puida Some of the methods you wrote in there do not exist in my DeviceSettings.mm. I do not know if this has been "fixed" but the same problem is still occurring for me.
     
  49. Catacomber

    Catacomber

    Joined:
    Sep 22, 2009
    Posts:
    682
    You don't need to change anything in DeviceSettings.mm anymore.

    Are you getting rejected? What's the reason. You can always write a comment to the reviewers that you don't use ads. Look at Madarco's post --the second before yours.
     
  50. planetfactory

    planetfactory

    Joined:
    May 18, 2016
    Posts:
    56
    Apple has changed kids apps' Policy, and apps are being rejected for using the IDFA. So it's necessary again to manually edit the DeviceSettings.mm.