前言
最近项目要上线了,可是因为用到了后台模式,一直被拒,(其中还包含了其他原因的被拒),所以打算纪录一下,希望能帮到有同样问题的朋友,也对常见被AppStore拒绝的原因做一个小结(会持续更新)。
问题简述
是这样的,我使用的打印机的Dome中用到了后台模式。
打印机的SDK中使用到了 后台模式,没办法,我的工程配置中也勾选了这项(和红色区域的)。
这两项后台模式是做什么的呢?
Core Bluetooth 后台执行模式
如果你的应用需要在后台运行,执行某些蓝牙相关任务,它必须在 (Info.plist) 文件中声明它支持一种 Core Bluetooth 后台执行模式。当你的应用声明了这个,系统会将它从挂起状态唤醒使它能够处理蓝牙相关事件。这项支持对于需要定期和提供数据的蓝牙设备进行交互的应用很重要,例如心率监测。
上传上去了,备注区域也没有写下什么
提示,元素问题被拒了
Please revise your app to add support for Bluetooth Low Energy communication through Core Bluetooth in your app or remove the bluetooth- values from the UIBackgroundModes key.-----这是部分苹果发来的邮件
于是我就开始研究如何提供 ** Bluetooth Low Energy **,查到了
This is because you are not using core Bluetooth functions in your app你在项目中没应用蓝牙核心库吧?
CBCentralManager
蓝牙的这个类你用到了吗?
我们先来了解下:
BLE---bluetooth low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE。
iOS开发使用CoreBluetooth 框架。CBCentralManager 就是 CoreBluetooth 框架中的。
可是,我查看了可运行的Dome中完全没有 CoreBluetooth 这个框架,可是我把后台模式取消,这个SDK就会崩溃,并且报错,报错内容如下:
在上图中我们可以看到,SDK中确实有 CBCentralManager 这个类的使用,**可是,为什么工程中没有找到 CoreBluetooth 这个框架呢,我猜测是因为,SDK把CoreBluetooth 这个框架封装在了内部。不然无法解释这一切了。 **Bluetooth Core Specification Version 4.0 就是蓝牙低功耗
所以问题不是低电量蓝牙支持的问题了。于是
- 勾选了 **Acts as a Bluetooth LE accessory **这个后台模式
- 在备注区备注了:项目中使用到了 蓝牙打印机
- 工程中再次 添加了 CoreBluetooth 这个框架。
又被拒了
从图中我们知道:需要我提供一个演示App操作打印机的 演示视频的地址。这是因为 苹果在审核中对于后台的操作是要求很严格的,在没有确保是正常使用之前是不会同意后台模式的使用申请的。
最终解决方法
我录制了一段操作我的App链接打印机,并打印小票的视屏,传到了 Youtube 上,之所以选择 Youtube 是因为,这个网站审核上传的视频特别快,分分钟就可以让别人观看了。并在App的备注区域,描述下这个App使用到了蓝牙打印机,并附上 演示操作的视频地址(Youtube 上的地址)。第二天就审核通过上线了。
其他常见被拒原因 (持续更新中......)
- (1)不让审核人员进入某一个模块,弹框提示:没有相关权限查看,或者主页面上放了一个还没开发完成的功能,点击不进去。
这些都是被拒绝的,苹果审核中,只要走不下去了,就会直接拒绝你,这是心得:不要阻挡他查看任何地方。你可以让他点击进入,在进入的页面上提示 “暂无数据” 就好了。
- (2)页面上有更新按钮(或者只是提示当前的版本号)。
这样的情况是会直接被拒的,不能添加要去掉,开发设计的时候就要规避掉。
PS
当你的iTunes应用程序状态显示为元数据的拒绝,不需要一个新的二进制文件,只需要说明下问题(比如,提供一个视频链接 )再次提交即可,不需要再次打包上传。
小结
不亲身经历这一个坑,我也不会这样眼中常含泪水了。本文会持续更新,更新我在审核路上出现的问题。当然希望这样的总结越少越好。[笑哭]