Categories & Tags
Archive

Overcoming issues with iOS App Store submissions

February 11, 2014 in Technology by

Recently, we have received a number of reports indicating that Apple have tightened their review process, and have started rejecting apps that use iOS Advertising Identifier but do not show advertisements. This blog post will help you determine whether your app might be affected, and provide advice on how to overcome any issues you might face.

  1. Q: My application uses the Advertising Identifier API and it displays advertisements in a prominent place. Will it be accepted to the App Store?
    A: You should be fine.
  2. Q: My application uses the Advertising Identifier API, and it displays advertisements, but not continuously. Will it be accepted to the App Store?
    A: Ensure that advertisements are served during the Apple review. You might also need to pass on extra instructions to the reviewer providing information as to how to reach the part of your application that displays advertisements.
  3. Q: My application does not displays ads. What should I do?
    A: We are working on a fix to be released with the next release of Unity. If you are in a hurry, follow these instructions to remove the Advertising Identifier API from your Unity application:
    a) Locate DeviceSettings.mm file in your Xcode project (you should find it under Classes/Unity/) and open it for editing;
    b) Remove the following functions from the file:

        static id QueryASIdentifierManager()
        {
            //...
        }
        static void QueryAdID()
        {
            //...
        }
        static void QueryAdTracking()
        {
            //...
        }

    c) Remove the following declarations of variables:

        static NSString*    _ADID               = nil;
        static bool         _AdTrackingEnabled  = false;

    d) Modify implementations of the following the functions (replace with those provided below):

        extern "C" const char*  UnityAdvertisingIdentifier()
        {
        return NULL;
        }
    
        extern "C" bool         UnityAdvertisingTrackingEnabled()
        {
        return false;
        }
    
        static void QueryDeviceID()
        {
            if(_DeviceID == nil)
            {
            #if UNITY_PRE_IOS7_TARGET
                if(!_ios70orNewer)
                    _InitDeviceIDPreIOS7();
            #endif
    
                // first check vendor id
                if(_DeviceID == nil)
                {
                    QueryVendorID();
                    _DeviceID = _VendorID;
                }
            }
        }

    These modifications only affect the current build of your Xcode project. If you rebuild an Xcode project from Unity and choose to replace it or build it to a new location, you need to reapply these changes. If you do not intend to show any advertisements anywhere in your project, consider updating the master template of this file located at: /Applications/Unity/Unity.app/Contents/PlaybackEngines/iPhonePlayer/iPhone-Trampoline/Classes/Unity

  4. Q: I applied the suggested changes to my application and still got rejected from the App Store. Why might this be?
    A: Many 3rd party plugins, including social and analytics plugins, use the Advertising Identifier API directly. In such cases, you should contact the provider of your plugins for further instructions as to how to resolve this issue.

Share this post

Comments (13)

Comments are closed.

Andy Martin
12 Feb 2014, 2:50 am

The part that interests me the most is how to change the template that is generated from Unity. Is this possible to do for any Unity ios .mm file?

dleight
12 Feb 2014, 3:25 am

Thanks for posting this. My app was rejected due to “crash on launch” which I cannot recreate on any of several devices including what Apple tested on (iPad Air). According to the crash logs, the crash is being caused by verifyiphonesplashscreen.cpp which seems to be a file that Unity is producing. I have a major deadline and am desperate for any help. Here is the what I posted to answers: http://answers.unity3d.com/questions/636918/verifyiphonesplashscreen-causing-crash-on-launch-o.html?sort=oldest Causing Crash on Launch on iOS?

Mantas Puida
12 Feb 2014, 9:04 am

@Andy, yes, you can do it for any Unity iOS .mm file. But be careful with, if you break something, it will affect all the project.

Mantas Puida
12 Feb 2014, 9:13 am

@DLEIGHT, I posted answer on UnityAnswers

Lior Tal
16 Feb 2014, 2:36 pm

@Andry you can build a custom PostBuildProcessor that will patch those files for you with the required changes. That might work.

Colter Haycock
19 Feb 2014, 6:53 pm

We contacted Fiksu, Chartboost and Tapjoy regarding this issue and I wrote about what they said here: http://forum.unity3d.com/threads/226187-iOS-Advertising-Identifier-rejection-FAQ/page2

Andrew
22 Feb 2014, 4:54 am

Note.. you’ll get REJECTED also if you use iAd and don’t remove the advertising identifier as per above

Here’s the note we got:

Note: iAd does not use the AdSupport framework, ASIdentifierManager, or the Advertising Identifier. Therefore they are not required for iAd implementations and should not be included in your app for iAd support.

7 Mar 2014, 11:20 am

When is it expected to be fixed? I mean, I have a game that fits the #3 situation – no ads, and I hate messing with the xcode files, since I sometimes need to do a fresh build, and redo all the changes (assuming I remember them) – a big waste of time.

10 Mar 2014, 3:37 pm

Will this also work on jailbroken iOS? Or it needs to be genuine version?

Thanks in advance and for sharing!

Regards,
Ronald

BT
19 Mar 2014, 7:34 pm

I am facing a serious issue in all my Unity generated games. If I launch the app with WiFi and then turn the WiFi off, then every time, I try loading a new scene, the app crashes. Is this issue discussed elsewhere?

Mantas Puida
19 Mar 2014, 10:37 pm

@BT, we are not aware about such issues, please bug report it! You can find our bug reporter in Unity Editor Help menu.
Thanks!

3 Apr 2014, 10:12 am

Ӏ’m a reader of this unique blog for awhile now and it is always worth a reaԀ.
I hope to read more posts in the ѕtyle of yoսr previous one.

Visit my homepɑge; Must see badoink mobile porn app

21 Apr 2014, 1:35 am

A code that I recently purchased had the same problem. Apple rejected it due to the Ad identifier issue. I wasn’t aware that the guy who wrote the code was using shady techniques. Got duped for five hundred bucks. Never again.

P.S: I’m myself a Freelance App Developer – Check out my apps on App Store Download

Leave a Reply

Comments are closed.