使用 didEnterRegion 唤醒一个被杀死的应用程序,然后扫描 iBeacon

Posted

技术标签:

【中文标题】使用 didEnterRegion 唤醒一个被杀死的应用程序,然后扫描 iBeacon【英文标题】:Waking up a killed app using didEnterRegion and then scanning for iBeacon 【发布时间】:2016-05-04 15:01:10 【问题描述】:

我的项目包括为房子的每个房间安装一个 iBeacon。 当用户进入房子时,我的应用程序执行扫描过程以检测实时看到的 iBeacon(UUID、Major 和 Minor)以及 iBeacon 的 RSSI 信号最强。如果最强信号持续 10 秒,那么我的应用就会知道用户在哪个房间,并将其显示为通知。

即使 iPhone 被锁定或应用程序被终止,我也需要在后台模式下执行此过程。

使用 didEnterRegion,我可以唤醒我的应用几秒钟以执行操作。 但是,我的扫描过程(我上面描述的)必须保持超过几秒但少于

这是一种使用 CoreBluetooth Scan 执行我想做的事情的方法吗? CoreLocation 不能给我 RSSI 信号来做过滤过程,对吗?

谢谢你,

格雷格

【问题讨论】:

【参考方案1】:

通过在监控的同时打开测距,您可以使用 CoreBluetooth 做您想做的事。这将为您提供每秒一次的每个可见信标的 RSSI 读数,在第一次检测后最长持续 3 分钟。详情请看这里:

http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html

CoreBluetooth 不会帮助您,因为它不允许您检测 iBeacons - Apple 会阻止这种使用。

【讨论】:

“CoreBluetooth 帮不了你” 你说的是 CoreLocatlion 吗? 3分钟监控结束后,是否可以再转3分钟? 不,我的意思是 CoreBluetooth 无法检测到 iBeacon 广告。在 iOS 上只有 CoreLocation 可以。在后台测距三分钟后,您无法再次打开它,直到发生以下情况之一:(1)您的应用程序被带到前台,(2)您获得 CLBeaconRegion 的监控条目回调(3)您获取 CLBeaconRegion 的监控退出回调。 @davidyoung 当您谈论 CLBeaconRegion 的入口回调时。信标由 UUID、Major 和 Minor 定义。这是否意味着 iOS 我可以再次监视 3 分钟,因为发现了其他主要或次要?或者它必须是一个新的 UUID ? 可以是任何CLBeaconRegion。如果你设置了一个带有 UUID/major/minor 的区域,然后进出它,3 分钟时钟又开始了。

以上是关于使用 didEnterRegion 唤醒一个被杀死的应用程序,然后扫描 iBeacon的主要内容,如果未能解决你的问题,请参考以下文章

如果应用程序被杀死,则使用 firebase 发送静默推送通知以唤醒应用程序

android app被杀死 alarmmanager能不能唤醒

使用firebase发送静默推送通知,以便在应用程序被杀死时唤醒它

如果持有它的应用程序或服务被杀死,Android 操作系统是不是会释放唤醒锁?

由 iBeacon 触发的 iOS 8 后台位置更新

应用程序在后台被杀死