iOS 应用被拒绝:指南 2.5.4,CoreBluetooth 后台处理

iOS App Rejected: Guideline 2.5.4, CoreBluetooth Background Processing

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

“指南 2.5.4 - 性能 - 软件要求

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

如果您的应用要与外部硬件一起使用,则支持的协议必须包含在您应用的 Info.plist 文件中的 UISupportedExternalAccessoryProtocols 键中 - 并且硬件的 PPID # 应该在您的评论注释字段中提供App Store Connect 中的应用程序。

此外,您的应用必须经过 MFi 授权才能使用所需的硬件。如果您还没有参加 MFi 计划,您可以注册 MFi 计划。"


我阅读了类似的问题,但 none 回答或解决了我的问题。

在 Xcode 项目设置中,我选中了后台模式下的“使用蓝牙 LE 配件”。

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

如果我在后台模式下取消选中“使用蓝牙 LE 配件”,我认为我的应用程序将获得批准,但它遗漏了以下应用程序的重要用户集,如下所示:

该应用程序面向辅助功能领域的功能切换用户,这已经是一小部分用户。需要在应用程序(中央)和交换机(外围)之间进行后台通信的功能适用于具有视觉障碍和严重认知延迟的特定交换机用户子集。这是一个更小的用户群,世界上可能不到 100 个,但对于这些用户来说,这是一个极其重要的用例。当他们使用应用程序使用音频说 1 或 2 个词(通常是“是”/“否”或“我需要帮助!”)时,让应用程序始终位于前台是不切实际的,即使没有WiFi 或手机信号。例如,我的测试用户(直接从我的 Xcode 开发环境下载到她的应用程序)患有 Fox G1 综合症,专门使用此模式,并且在对生活中的事物进行一些最小控制方面取得了很大的进步(例如,当她感到癫痫发作或需要换尿布时说“我需要帮助”)。

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

有没有人成功获得应用程序批准,将配件作为外围设备进行后台通信,但未获得 MFi 或 HomeKit 批准?当我阅读 MFi FAQ 时,这个外设配件似乎并没有落入 MFi 保护伞,而使用 HomeKit 我已经遇到了它在设备休眠时不起作用的限制(后一种情况是我必须挑选的另一个骨头,因为非触摸用户无法打开灯、打开自动门、打开加热器……除非设备打开,而他们无法实际操作,而且 Siri 不是一个选项,因为它们是非语言的!)。

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

// 蓝牙串口 API

让 receiveSwitch1On: NSString = "SWITCH1_ON"

让 receiveSwitch1Off: NSString = "SWITCH1_OFF"

让 receiveSwitch2On: NSString = "SWITCH2_ON"

让 receiveSwitch2Off: NSString = "SWITCH2_OFF"

让 sendSwitchboxOn: NSString = "ON"

让 sendSwitchboxOff: NSString = "OFF"

让 updateDebouncePrefix: NSString = "DEBOUNCE="

让 updateGraceOffPrefix: NSString = "GRACE_OFF="

有没有人对我可以在技术上进行哪些更改提出建议,或者对导航应用程序批准流程的建议,以了解我的最低成本选项是在应用程序和外围设备之间保持后台通信的这个用例?我已经花费了大量时间和金钱来创建此功能。我这样做不是为了赚钱,而是为了为一小部分基本上被排除在技术之外的用户提供一些好处。我愿意花更多的时间和金钱来达到终点,但我真的负担不起像我期望的 MFi 或 HomeKit 那样的大量持续程序成本。

感谢阅读!

检查您的信息列表。

Apple 的消息说您选择了外部附件后台功能。这不是您在问题中讨论的蓝牙 LE 背景模式。

您不需要外部配件功能即可在后台使用 Core Bluetooth。