iOS 信标在需要时测距
iOS Beacon ranging whenever needed
正如 Apple 文档中明确指出的那样,信标测距只能在后台短时间完成,默认情况下最多 10 秒,或者在后台任务到期处理程序的帮助下最多 3 分钟。根据我的应用程序的用例,应用程序需要每 15 分钟进行一次信标测距,直到用户离开该区域。我正在考虑为此目的使用后台推送通知(静默推送通知)(假设数据连接在设备上始终可用)。所以流程是这样的,当用户进入该区域时,应用程序使用设备令牌调用服务器,服务器每 15 分钟发送一次静默推送通知。一旦应用程序收到推送通知,它会在允许的时间段内根据需要进行信标测距。我在这里的问题是在后台模式下使用推送通知进行测距是否合法,我在应用商店提交期间会遇到任何问题。
注意:我还需要为应用程序启用 BLE 后台模式,以读取某些 BLE 设备的一些特征。
如果您误用其中一种后台模式,该应用可能会被拒绝,也就是说,我认为静默推送通知不是为了:在 "Background" 中保留 iOS 应用通过每隔几分钟向它发送静默推送通知来状态。
另一件事是静默推送通知有速率限制,如所述http://asciiwwdc.com/search?q=push+notification,所以我不确定它们是否会每隔几分钟发送一次。
Apple 这么说;
Silent notifications are not meant as a way to keep your app awake in
the background, nor are they meant for high priority updates. APNs
treats silent notifications as low priority and may throttle their
delivery altogether if the total number becomes excessive. The actual
limits are dynamic and can change based on conditions, but try not to
send more than a few notifications per hour.
从技术上讲你可以做到,但 Apple 大多拒绝此类应用程序。您必须考虑的一件重要事情是,如果应用程序被用户手动终止而不是在后台 运行,则该应用程序将不会通过静默推送通知唤醒。如果您有 VoIP 推送通知,则有一个解决方法,它甚至会从终止状态唤醒应用程序。但是在推送到 AppStore 时,你可能需要充分的理由。
我正在处理的 iOS 应用程序做 完全相同的事情 除了我使用的是 录音 而不是信标。按 iOS 标准录制在将应用程序推送到应用程序商店时会出现更多问题。
但是苹果没有拒绝这个应用。虽然我们仍然面临一些问题,但它们与您的问题无关。
除了您正在寻找的答案之外,您可以按照这样的教程获得进一步的帮助:iOS Push Notification Demysitfied
另外,当应用程序在后台运行时,我已经完成了本地通知的触发。 BLE 甚至可以工作 如果应用 被系统杀死,当 OS 从您的外设或中央接收到一些通信时,iOS 唤醒您的应用程序 并执行所需的功能,然后让您的 应用程序重新进入睡眠状态。
您可能想看 this 篇文章。用户谈论使用静默通知触发位置跟踪的应用程序。但最终它是一个 hack,Apple 可能会在未来的某个时间拒绝 ,所以最好有一个应急计划。 FWIW 到目前为止我还没有听到任何人报告拒绝。
所以官方的回答是不要做,至于为什么可以参考的回答。非官方的答案是,如果你不能改变你的业务逻辑,那么风险自负。
正如 Apple 文档中明确指出的那样,信标测距只能在后台短时间完成,默认情况下最多 10 秒,或者在后台任务到期处理程序的帮助下最多 3 分钟。根据我的应用程序的用例,应用程序需要每 15 分钟进行一次信标测距,直到用户离开该区域。我正在考虑为此目的使用后台推送通知(静默推送通知)(假设数据连接在设备上始终可用)。所以流程是这样的,当用户进入该区域时,应用程序使用设备令牌调用服务器,服务器每 15 分钟发送一次静默推送通知。一旦应用程序收到推送通知,它会在允许的时间段内根据需要进行信标测距。我在这里的问题是在后台模式下使用推送通知进行测距是否合法,我在应用商店提交期间会遇到任何问题。
注意:我还需要为应用程序启用 BLE 后台模式,以读取某些 BLE 设备的一些特征。
如果您误用其中一种后台模式,该应用可能会被拒绝,也就是说,我认为静默推送通知不是为了:在 "Background" 中保留 iOS 应用通过每隔几分钟向它发送静默推送通知来状态。
另一件事是静默推送通知有速率限制,如所述http://asciiwwdc.com/search?q=push+notification,所以我不确定它们是否会每隔几分钟发送一次。
Apple 这么说;
Silent notifications are not meant as a way to keep your app awake in the background, nor are they meant for high priority updates. APNs treats silent notifications as low priority and may throttle their delivery altogether if the total number becomes excessive. The actual limits are dynamic and can change based on conditions, but try not to send more than a few notifications per hour.
从技术上讲你可以做到,但 Apple 大多拒绝此类应用程序。您必须考虑的一件重要事情是,如果应用程序被用户手动终止而不是在后台 运行,则该应用程序将不会通过静默推送通知唤醒。如果您有 VoIP 推送通知,则有一个解决方法,它甚至会从终止状态唤醒应用程序。但是在推送到 AppStore 时,你可能需要充分的理由。
我正在处理的 iOS 应用程序做 完全相同的事情 除了我使用的是 录音 而不是信标。按 iOS 标准录制在将应用程序推送到应用程序商店时会出现更多问题。
但是苹果没有拒绝这个应用。虽然我们仍然面临一些问题,但它们与您的问题无关。 除了您正在寻找的答案之外,您可以按照这样的教程获得进一步的帮助:iOS Push Notification Demysitfied
另外,当应用程序在后台运行时,我已经完成了本地通知的触发。 BLE 甚至可以工作 如果应用 被系统杀死,当 OS 从您的外设或中央接收到一些通信时,iOS 唤醒您的应用程序 并执行所需的功能,然后让您的 应用程序重新进入睡眠状态。
您可能想看 this 篇文章。用户谈论使用静默通知触发位置跟踪的应用程序。但最终它是一个 hack,Apple 可能会在未来的某个时间拒绝 ,所以最好有一个应急计划。 FWIW 到目前为止我还没有听到任何人报告拒绝。
所以官方的回答是不要做,至于为什么可以参考