swift 检测iBeacon信号在iOS在终止状态

wn9m85ua  于 2023-04-19  发布在  Swift
关注(0)|答案(1)|浏览(109)

应用程序有三种状态
1.前景
1.背景资料
1.终止
iBeacons在前台和后台都能很好地工作,并向用户发送通知。如果是终止状态,我如何检测用户进入iBeacon的范围并向用户发送通知?我正在用Swift编写代码。

0wi1tuuw

0wi1tuuw1#

您可以使用iBeacon传输从iOS上的终止状态自动启动应用程序(无论是在杀死应用程序或一分钟左右后重新启动,一旦一切都完全初始化。)这适用于两个“区域条目”(在没有检测到信标的时段之后检测到至少一个信标)或“区域退出”在理想条件下,信标检测的自动启动在一秒内发生。
为了使其工作,您必须确保完成以下 * 所有 *:
1.使用与您的信标匹配的CLBeaconRegion对象在LocationManager上调用startMonitoring(region: Region)
1.**在AppDelegate的didFinishLaunching**方法中启动监控,如果在该方法返回前没有触发启动监控,则无法自动启动。
1.获取用户的“始终”定位权限。如果应用没有获取用户的“始终”定位权限,只获取“使用时”或“仅一次”定位权限,则自动启动将无法正常工作。
1.位置和蓝牙必须在设置中打开
1.**等待定位服务准备就绪。**如果您已经重新启动手机,则必须等待一分钟左右才能完全初始化定位服务。如果在定位服务完全初始化之前信标出现或消失,则自动启动将无法立即工作。
1.**确保区域状态发生变化。**为了在检测到信标时自动启动,iOS必须先前检测到与CLBeaconRegion匹配的所有信标都已消失。在测试中,这意味着您需要让应用运行(在前台最容易做到这一点)至少30秒,附近没有匹配的信标,以确保iOS知道它是“外部”在测试区域进入时的自动启动之前,请检查区域。在测试过程中不这样做通常会导致错误的结论,即检测时的自动启动不起作用。
为了在没有检测到信标时自动启动,您必须同样确保iOS在所有信标消失之前至少看到一个信标。要知道,iOS需要时间来确定所有信标已经消失。在理想情况下,这只有30秒,但如果iOS处于低功耗状态并且没有进行任何蓝牙扫描,则可能会更长。

相关问题