Ios 应用程序处于后台时接收来自信标的信号
我有一个iOS应用程序,可以与信标进行交互。 还具有检测信标信号的功能,如果信号超出范围,我想在数据库中存储一些信息(在本例中为核心数据) 因此,只要应用程序在前台运行,应用程序就可以正常工作。 我的理解是,当用户不积极使用应用程序,但仍然从信标接收信号时,我也可以将应用程序置于后台。 如果是,我如何完成这项任务Ios 应用程序处于后台时接收来自信标的信号,ios,swift,ibeacon,Ios,Swift,Ibeacon,我有一个iOS应用程序,可以与信标进行交互。 还具有检测信标信号的功能,如果信号超出范围,我想在数据库中存储一些信息(在本例中为核心数据) 因此,只要应用程序在前台运行,应用程序就可以正常工作。 我的理解是,当用户不积极使用应用程序,但仍然从信标接收信号时,我也可以将应用程序置于后台。 如果是,我如何完成这项任务我在info.plist中添加了以下内容,但仍然不起作用。还可以更新数据库吗?当应用程序运行时,您只能对信标进行测距(这是访问距离近似值的功能)。一旦你离开应用程序(按下主页按钮,导航到
我在info.plist中添加了以下内容,但仍然不起作用。
还可以更新数据库吗?当应用程序运行时,您只能对信标进行测距(这是访问距离近似值的功能)。一旦你离开应用程序(按下主页按钮,导航到其他应用程序等),iOS将暂停应用程序,测距将停止工作。在后台持续使用蓝牙收音机会很快耗尽智能手机的电池电量 然而,当智能手机进入和退出一个信标(或一组信标)的范围时,你可以让你的应用订阅被唤醒到后台。这被称为区域监控,这与地理围栏使用的机制相同 现在,“输入”和“退出”事件本身将无法访问距离近似值。但是,由于iOS会将你的应用程序唤醒到后台几秒钟来处理这些事件,因此在iOS将应用程序重新置于睡眠状态之前,范围实际上会在这段时间内恢复(假设你在应用程序挂起之前没有停止) 你甚至可以用鼠标将“几秒钟”延长到几分钟 所有这些都不需要使用后台模式,只需要“始终”授权即可使用位置服务 通常情况下,你不能用信标在后台无限期地运行应用程序。后台支持由苹果严格监管,只允许用于导航应用程序或音乐应用程序。人们有时会尝试使用“位置”背景模式来保持应用程序在背景中的活动性(从而能够对信标进行测距),有些人甚至报告说能够通过审查过程,但这似乎更多的是一个例外而不是一条规则 如果您决定尝试一下,您需要:
- 启用“位置”背景模式
- 在
实例上设置为CLLocationManager
true
- 开始定期位置更新:
这将使应用程序在后台运行,即使您离开它。这是一个很好的选项总结@borna,如果你决定简单地将背景扩展到最多3分钟,我会在这里写一篇博文,展示如何做到这一点:请看更新2下的完整源代码,因此我添加了didEnterRegion和didExitRegion。现在,如果我的应用程序最小化,并且我不在信标范围内,我是否应该看到消息“退出区域”,如果我在范围内,我是否应该看到消息“进入范围”?我没有看到最后两个函数被调用
func updateDistance(distance: CLProximity) {
UIView.animateWithDuration(1.0) { [unowned self] in
switch distance {
case .Unknown:
self.view.backgroundColor = UIColor.grayColor()
self.distanceReading.text = "No Beacon Signal Detected"
updateDatabaseWithLocation()
}
}
}