2019年最新App Store 加急审核全解析

版权声明:转载本文请注明作者QQ2205357007 https://blog.csdn.net/weixin_41734043/article/details/85334344

本文包括加急审核的介绍、如何使用教学,以及最重要的……加急审核必过黄金方案。

什么是加急审核

首先,提交二进制文件到 App Store,是要交给 App Store Review 团队去审核的。下面这句话是我从他们那边拿到的官方数据:

On average, 50 percent of apps are reviewed in 24 hours and over 90 percent are reviewed in 48 hours.
50% 的应用在 24h 以内得到了审核,超过 90% 的应用在 48h 以内得到了审核。

跟我我个人的经验,如果你在中国,那么一般来说,第一天早上提交的应用,有可能在第二天的凌晨过审。第一天中午之后提交的应用,过审基本要等到第三天凌晨、或者第二天深夜了。

而多数都是第二种情况,也就意味着,从提交到审核这中间,可能会经历整整一个白天,如果是周末(美国时间周末),时间可能更长。于是,如果你有特殊情况,比如 App 有严重 bug,一启动就崩溃什么的,那么你可以申请加急审核。当然,加急审核也是要排队的,但是排队的人数就少多啦。

很多人的误解

很多人对加急审核有一些含糊不清的地方,这里详解一下:

  1. 认为加急审核的次数非常有限,用完了就不能用了。但是其实官方并没有对次数做限制,只是说希望大家不要滥用加急审核,免得你真正需要的时候不让你用了,但是并没有一个可量化的机制来限制你。(当然了,方便自己也方便同行,大家还是不要滥用啦)
  2. 有人认为加急审核被同意了之后,会迅速开始审核。但是其实判定是否给你加急审核的团队,和给你审核的团队,是两个团队。 所以同意给你加急审核之后,你还需要几十分钟到几小时不等的加急排队时间。
  3. 加急审核状态下,如果你的 App 被拒了,是不需要再次申请加急审核的,你已经在加急通道里面了,直到你最终过审。这点你每次申请的时候,官方都会重复告知。

附上我今年截止到 8 月,申请加急审核全部通过的记录:加急审核邮件

加急审核邮件

如何申请加急审核

官方唯一加急审核地址:https://developer.apple.com/contact/app-store/?topic=expedite
Contact the App Review Team

Contact the App Review Team

申请起来倒是非常简单,进链接填表就行了,关键是最后一部分,你有三种选择来申请加急审核。分别是:致命 bug、敏感时间问题、以及其他特殊情况。

第二种情况我从来没用过,网上倒是有很多案例,比如某个官方大会的 App 还没过审,但是会议马上就要开了,云云。。。

第三种情况用过一次,是Hälsa Online – Livs Helper这个应用,当时我声泪俱下地跟他们说,百度怎么怎么坑人,这个应用再不过审,又会有更多的人被坑,于是审核全程开绿灯……这个时间比较早了,当时审核一次还需要 7 天时间,而我做 App 花了一天,加急审核花了一天,总共两天就上线。所以这个应用就变成了 App Store 上的第一款针对莆田医院的 App,上线当天没有任何推广,下载量过万。


加急审核必过攻略

我在专栏的之前的文章也提到过,建议大家使用类似 Fabric 这样的崩溃收集工具。这里连带加急审核,还有一个附带的好处。

那就是,在你以 “Critical Bug Fix” 为理由申请加急审核的时候,以下面这个范例申请,几乎可以说是必过:

  1. 如果 bug 可以复现,讲清楚怎么复现,复现路径。如果是偶发性 bug,也告知对方,bug 是偶发的。
  2. 清楚地写出来,现有 App Store 上的 App 是有问题的,而新版本解决了这一问题,并且这一问题严重地影响了你的用户体验,比如你可以说这是你的应用的核心功能。
  3. 这一点是在你希望申请加急,又不能保证他们给过的时候,最能蒙混过关的一点。因为你可能说不清 bug 复现路径,甚至不确定你真的 100% 解决了问题。那么,你可以直接附上,使用类似 Fabric 或者 Bugly 等等这样的崩溃收集工具,收集下的 Crash Log,举例:
 
  • Fatal Exception: NSInternalInconsistencyException

  • 0 CoreFoundation 0x182382d8c __exceptionPreprocess

  • 1 libobjc.A.dylib 0x18153c5ec objc_exception_throw

  • 2 CoreFoundation 0x182382bf8 +[NSException raise:format:]

  • 3 Foundation 0x182d72fa0 -[NSAssertionHandlerhandleFailureInMethod:object:file:lineNumber:description:]

  • 4 UIKit 0x18bf5ea80 -[UIApplication_runWithMainScene:transitionContext:completion:]

  • 5 UIKit 0x18c58eb1c __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke

  • 6 UIKit 0x18bf5ddd0 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:]

  • 7 UIKit 0x18bf5dc6c -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]

  • 8 UIKit 0x18bf5cafc -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:]

  • 9 UIKit 0x18cbf284c __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke

  • 10 UIKit 0x18bf5c1ec -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]

  • 11 UIKit 0x18c9d7ac8 __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke

  • 12 UIKit 0x18cb25bf8 _performActionsWithDelayForTransitionContext

  • 13 UIKit 0x18bf5bc0c -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]

  • 14 UIKit 0x18bf5b5a8 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:]

  • 15 UIKit 0x18bf585e0 -[UIApplicationworkspace:didCreateScene:withTransitionContext:completion:]

  • 16 UIKit 0x18bf58330 -[UIApplicationSceneClientAgentscene:didInitializeWithEvent:completion:]

  • 17 FrontBoardServices 0x184b84470 -[FBSSceneImpl _didCreateWithTransitionContext:completion:]

  • 18 FrontBoardServices 0x184b8cd6c __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2

  • 19 libdispatch.dylib 0x181c74a60 _dispatch_client_callout

  • 20 libdispatch.dylib 0x181c7c170 _dispatch_block_invoke_direct$VARIANT$mp

  • 21 FrontBoardServices 0x184bb8878 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__

  • 22 FrontBoardServices 0x184bb851c -[FBSSerialQueue _performNext]

  • 23 FrontBoardServices 0x184bb8ab8 -[FBSSerialQueue _performNextFromRunLoopSource]

  • 24 CoreFoundation 0x18232b404__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__

  • 25 CoreFoundation 0x18232ac2c __CFRunLoopDoSources0

  • 26 CoreFoundation 0x18232879c __CFRunLoopRun

  • 27 CoreFoundation 0x182248da8 CFRunLoopRunSpecific

  • 28 GraphicsServices 0x18422e020 GSEventRunModal

  • 29 UIKit 0x18c268758 UIApplicationMain

  • 30 FastRecord 0x1040443f8 main (AppDelegate.swift:17)

  • 31 libdyld.dylib 0x181cd9fc0 start

 

给一个完整案例示范:

Reason: Critical Bug Fix

Explanation:

The current version of my app on App Store, has a critical bug, which could crash when user \(这个地方写上你的应用的相关操作,比如滑动网页、保存图片……) touching the webview. The new version fixed this bug.

Here is full crash log:

  •       Fatal Exception: NSInternalInconsistencyException
  • 0 CoreFoundation 0x182382d8c __exceptionPreprocess

  • ……………………

  • ……………………

  • ……………………

 

最后加一句:即便有这样的极高成功率的攻略,还是希望大家不要滥用,为了自己也为了同行。

猜你喜欢

转载自blog.csdn.net/weixin_41734043/article/details/85334344