ios - 为什么我的应用程序因内存压力而终止后不再收到信标通知?

标签 ios objective-c ios7 ibeacon

我的公司开发了一个 iBeacon 实用程序,可以用作信标发射器或接收器(不是同时,纯粹为了简单起见。)

它注册蓝牙中心和蓝牙外设后台模式,当它处于信标接收器模式时,它同时使用 startMonitoringForRegion 和 startRangingBeaconsInRegion。

当应用程序处于后台时,即使设备已锁定,我也会在后台被唤醒并能够触发本地通知或播放声音。

我之前测试过它并强制低内存终止(只需从 Xcode 运行我的应用程序,然后一个接一个地启动应用程序,直到我在控制台中看到一条消息,表明该应用程序因内存压力而被终止。)

然而,今天我又试了一次,尽管等待了一个多小时,如果我的应用程序在监听新的信标区域时由于内存压力而终止,当信标再次开始传输时,我将不再重新启动。当应用程序处于前台和后台时,我确保信标触发 didEnterRegion。

我还通过从跳板(而非 Xcode)启动应用程序并启动数十个重量级应用程序来测试它,直到我非常确信我的应用程序已终止,并且在这种情况下我不会通过信标通知重新启动要么。

我不记得自从我第一次开始测试 iOS 后就获得了更新,但系统行为似乎在过去几周发生了变化。我没有关于我何时测试它以及我使用的操作系统版本的具体说明,但它肯定看起来以前工作的东西不再工作了。

我已经对应用程序进行了各种更改以准备好分发,但不会影响此行为。当系统检测到我因内存压力而终止(不是用户终止)时我正在积极监视的信标时,其他人是否有任何想法为什么我的应用程序可能会停止重新启动。

最佳答案

你在 iOS 7.1 上测试过吗?在 iOS 7.0.x 中,您的应用程序必须至少在后台运行才能监听信标。强制退出应用程序会终止连接。在 7.1 中,您应该会发现您的问题已解决。即使重新启动您的设备也不会终止 7.1 中的连接。

如果您想继续支持 7.0.x,您将必须找到创造性的方法来让用户在您的应用程序在后台被杀死时继续打开它。例如,您可以定期轮询服务器并在连接失败时发送推送通知。

关于ios - 为什么我的应用程序因内存压力而终止后不再收到信标通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713383/

相关文章:

ios - swift : Calling an init from another init

ios - 读取自定义框架中的 info.plist

ios - 多任务处理时工具栏是动画的

iOS 7 : different navigation items for tab bar controller

ios - 为什么我在没有互联网的情况下通过 Game Center 发送数据时没有收到错误消息?

ios - 使用 Django 和 ASIHttpRequest 的用户身份验证/ session

ios - XCode:以编程方式添加具有特定名称和动画的多个按钮

iphone - tabBar 应用程序在 iPhone 设备上启动非常缓慢

objective-c - 将 .xib 文件添加到 UIViewController 子类?

ios - 禁用/隐藏一个 View Controller 的 Root View Controller