iOS应用程序被拒绝:指南2.5.4,核心蓝牙后台处理



我的应用程序在TestFlight Beta中被拒绝,如下所示:

"准则2.5.4-性能-软件需求

您的应用程序在Info.plist文件的UIBackgroundModes键中声明支持外部附件,但没有声明应用程序支持的任何外部附件协议。外部附件后台模式适用于通过外部附件框架与硬件附件进行通信的应用程序。

如果您的应用程序要使用外部硬件,则支持的协议必须包含在应用程序的Info.plist文件中的UISupportedExternalAccessoryProtocols密钥中,并且硬件的PPID#应在app Store Connect中的应用程序的Review Notes字段中提供。

此外,您的应用程序必须获得MFi的授权才能使用所需的硬件。如果您还没有参加MFi计划,您可以参加MFi项目">


我读过类似的问题,但没有人回答或解决我的问题。

在Xcode项目设置中;使用蓝牙LE配件";在背景模式下。

在info.plist中,我有NSBluetoothPeriperalUsageDescription=";将蓝牙用于开关和自适应玩具";。

如果我取消选中";使用蓝牙LE配件";在后台模式下,我认为我的应用程序会被批准,但它忽略了以下应用程序的重要用户:

该应用程序适用于辅助功能领域的功能切换用户,该领域已经是一小部分用户。需要在应用程序(中央)和交换机(外围)之间进行后台通信的功能是针对有视觉障碍和严重认知延迟的交换机用户的特定子集。这是一组更小的用户,可能<100,但对于这些用户来说,这是一个极其重要的用例。当他们使用应用程序使用音频说出1或2个单词(通常为"1")时,使应用程序始终处于前台是不实际的;是"/"否";,或";我需要帮助!",即使在没有WiFi或蜂窝信号的情况下也需要。例如,我的Fox G1综合征测试用户(直接从我的Xcode dev env下载到她的应用程序)只使用这种模式,并且在对生活中的事情进行最低限度的控制方面有了很大的改进(例如,当她感觉癫痫发作或需要尿布时说"我需要帮助")。

目前市场上的功能开关使用蓝牙HID配置文件,该配置文件不允许后台使用或中央(我的应用程序)和附件(开关盒)之间的双向通信,以进行重要反馈,如为有运动障碍和震颤的用户调整开关激活的延迟时间,我的测试用户也是如此。

是否有人成功获得应用程序批准,可以使用未经MFi或HomeKit批准的外设进行后台通信?当我阅读MFi常见问题解答时,这个外围配件似乎没有落入MFi保护伞中,使用HomeKit,我已经遇到了设备在睡眠时无法工作的限制(后一种情况是我必须选择的另一个问题,因为非触摸用户不能开灯、打开自动门、打开加热器……除非设备打开,而他们无法用身体打开,Siri也不是一个选项,因为他们不会说话!)。

关于该应用程序的其他技术背景:我只使用核心蓝牙(UART),该应用程序是核心。我的API是如此简单,我有点不好意思列出它,但这里是:

//BLE UART API

让receiveSwitch1On:NSString=";SWITCH1_ON";

让receiveSwitch1Off:NSString=";SWITCH1_OFF";

让receiveSwitch2On:NSString=";SWITCH 2_ ON";

让receiveSwitch2Off:NSString=";SWITCH2_OFF";

让sendSwitchboxOn:NSString=";ON";

让sendSwitchboxOff:NSString=";OFF";

让updateDebouncePrefix:NSString=";DEBOUNCE=";

let updateGraceOffPrefix:NSString=";GRACE_OFF=">

有人对我在技术上可以更改的内容有什么建议吗?或者有人对在应用程序审批过程中导航的建议吗?我的最低成本选择是什么,以保持应用程序和外围设备之间的后台通信?我已经花了大量的时间和金钱来创造这种能力。我这样做不是为了赚钱,而是为了给一小部分基本上被排除在技术之外的用户提供一些好处。我愿意花更多的时间和金钱到达终点线,但我真的负担不起MFi或HomeKit可能带来的大量持续项目成本。

感谢阅读!

检查您的信息plist。

苹果公司的消息说,你已经选择了外部附件背景功能。这不是您在问题中讨论的蓝牙LE背景模式。

在后台使用核心蓝牙不需要外部附件功能。

最新更新