iOS应用提交审查被拒理由-2.16Details
2016-1-6更新,呵了个呵,又被拒了。
而且,原因挺扯的,说应用crash,一启动就crash,看了Bugly跟踪到的信息是定位部分出的问题,但也看不出是什么意思,跑了一下,发现在调用到我封装的高德定位模块的地方crash,给了个Assertion failure,原来是高德定位说要在iOS 9及以上版本使用后台定位功能, 需要保证”Background Modes”中的”Location updates”处于选中状态。呵了个呵(不知道为什么我呵呵的原因,请看后文)搜到了一些信息,是说iOS 9在定位隐私上是有了点变化,为了保证不坑,明早给开发者中心打了电话再修改代码吧。今天先去复习数据库。
很不幸,第一次提交就被拒了,明天开始苹果的工作人员就放假了,这次审核就等了十一天,看来新年之前是上不了架了T_T
官方给出的原因是2.16 Details Your app declares support for location in the UIBackgroundModes key in your Info.plist file but does not declare any features.
我的应用需要后台数据刷新,所以开启了UIBackgroundModes,开启了从网络下载数据的后台功能,并且由于需要根据地理位置获取数据,所以也开启了后台位置变化的支持,并且在Info.plist
里注明了NSLocationAlwaysUsageDescription
,在首次调用定位模块的时候询问用户是否同意跟踪位置。
根据以上信息,到Google搜索了一下,发现Stack Overflow上居然有跟我一模一样的问题。不过这个问题还没有选出最佳答案。不过三个回答都比较具有参考性。
UIBackgroundModes (Array - iOS) specifies that the app provides specific background services and must be allowed to continue running while in the background.
These keys should be used sparingly and only by apps providing the indicated services. Where alternatives for running in the background exist, those alternatives should be used instead.
For example, apps can use the significant location change interface to receive location events instead of registering as a background location app.
这是来自Apple’s documentation的说明。
这就是说UIBackgroundModes
里面的键应该尽量少用,并且仅用于提示功能上,如果有后台的替代方案了,那么就是替代方案来办这件事,而不是用UIBackgroundModes。然后人家举了个栗子,就是关于定位的,说应用可以用地标位置改变接口(其实就是- startMonitoringSignificantLocationChanges)来替代在UIBackgroundModes
开启后台定位。
那么这么一说就明白了,我在Info.plist
里开启了NSLocationAlwaysUsageDescription
,并且有位置监听,那么我就不需要在UIBackgroundModes
里开启后台定位了。删除UIBackgroundModes
里的后台定位,再次提交审核。
赶快让我通过了上架了,好吗ಥ_ಥ
如果这样修改审核通过了,这篇日志就不更了~