我知道此问题已经发布过,但这是我的理由:
我正在使用iBeacons在用户进入某个区域时触发本地推送通知(当应用程序不在内存中时),本地通知会触发成功显示我想要的信息。
我想要的是,我想调用一个Web服务,并在应用程序不在内存中时显示结果,这也已成功完成。
问题是我希望通知被触发一次,如果用户进入并退出该区域并且他再次进入他没有收到另一个通知,我创建了一个标记来跟踪它并且它工作正常在运行时(当应用程序运行时),但我不知道应用程序没有运行时是如何工作的(不在内存中),我尝试过,有时通知触发,有时不会。
答案 0 :(得分:0)
CoreLocation在应用未运行时管理状态。对于应用程序注册的每个CLBeaconRegion,框架在内部跟踪它是否在“区域内”(在扫描的最后30秒内检测到信标)。
当此状态发生变化时,iOS将启动将该区域注册到后台的应用程序,并且将触发监视回调。
在自定义编码中可以进一步应用特定于状态的保存。应用程序可以存储关于它是否在NSUserDefaults中发送通知的标记,如@Paulw建议的那样。
通过信标检测测试和调试应用程序启动可能会非常棘手。我建议在didFinishLaunchingWithOptions和CoreLocation回调方法中添加NSLog语句。您可以在XCode Organizer中查找这些日志语句 - > iOS设备可以让您的应用程序充满活力。