ios app store_克服iOS App Store提交问题

ios app store_克服iOS App Store提交问题

ios app store

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.

最近,我们收到了许多报告,表明苹果已经加强了审核流程,并开始拒绝使用iOS广告标识符但不显示广告的应用。 这篇博客文章将帮助您确定您的应用是否可能受到影响,并提供有关如何克服可能遇到的任何问题的建议。

  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?

    问:我的应用程序使用Advertising Identifier API,并在醒目位置显示广告。 它会被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?

    问:我的应用程序使用Advertising Identifier API,并且显示广告,但是不连续显示。 它会被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.

    答:请确保在Apple审核期间投放广告。 您可能还需要将额外的指示传递给审阅者,以提供有关如何到达应用程序中显示广告的部分的信息。

  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:

    答:我们正在研究将在Unity的下一版本中发布的修复程序。 如果您赶时间,请按照以下说明从Unity应用程序中删除广告标识符API:

    a) Locate DeviceSettings.mm file in your Xcode project (you should find it under Classes/Unity/) and open it for editing;

    a)在Xcode项目中找到DeviceSettings.mm文件(应该在Classs / Unity /下找到它)并打开以进行编辑;

    b) Remove the following functions from the file:

    b)从文件中删除以下功能:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        static id QueryASIdentifierManager()
        {
            //...
        }
        static void QueryAdID()
        {
            //...
        }
        static void QueryAdTracking()
        {
            //...
        }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
         static id QueryASIdentifierManager ( )
         {
             //...
         }
         static void QueryAdID ( )
         {
             //...
         }
         static void QueryAdTracking ( )
         {
             //...
         }

    c) Remove the following declarations of variables:

    c)删除以下变量声明:

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

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

    d)修改以下功能的实现(用下面提供的功能代替):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
        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;
                }
            }
        }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
         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

    这些修改仅影响Xcode项目的当前版本。 如果您从Unity重建Xcode项目并选择替换它或将其构建到新位置,则需要重新应用这些更改。 如果您不想在项目的任何地方展示任何广告,请考虑更新位于以下位置的此文件的主模板:/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?

    问:我将建议的更改应用于我的应用程序,但仍然被App Store拒绝。 为什么会这样呢?

    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.

    答:许多第三方插件,包括社交和分析插件,都直接使用Advertising Identifier API。 在这种情况下,您应该与插件提供商联系,以获取有关如何解决此问题的进一步说明。

翻译自: https://blogs.unity3d.com/2014/02/11/overcoming-issues-with-ios-app-store-submissions/

ios app store