iOS 7-iBeacon:当应用程序关闭时,如何从 iBeacon 获取比其 UUID 更多的数据?
Posted
技术标签:
【中文标题】iOS 7-iBeacon:当应用程序关闭时,如何从 iBeacon 获取比其 UUID 更多的数据?【英文标题】:iOS 7-iBeacon : How to get more data from an iBeacon than its UUID, while the app is closed? 【发布时间】:2015-10-23 09:42:30 【问题描述】:情况如下:
我有一个自制的信标,它宣传比其 UUID、主要值、次要值更多的数据(温度数据)。当我的应用程序处于前台并扫描时,我可以获得更新的温度值(无需连接)。此外,当有 "didEnterRegion"
事件时(仅当应用程序关闭时),我会收到一个简单的本地通知(说“进入信标范围!”)。
我想在此通知中设置更新后的温度值,但我正在为此苦苦挣扎。有没有人已经做过这样的事情? 我只找到了这个:ibeacon-get-major-and-minor-only-looking-for-uuid 但它没有帮助,因为值仍然是固定的。
有什么建议吗?
【问题讨论】:
你看下层核心蓝牙 API 了吗?我认为你可以在那里做任何你需要的事情,即使是在广告阶段。 您如何检索附加数据?通过 CoreBluetooth 特性?您可以在后台使用核心蓝牙 【参考方案1】:您可以使用CoreBluetooth
阅读前台和后台的广告。但是对于不同的广告类型,规则是不同的。
制造商广告类型只能在应用程序处于前台时读取。应用不会在后台获取 ios 上的回调。
服务广告可以在前台和后台读取。这些必须具有服务 UUID,并且可以包含其他服务数据。
iBeacon 广告,这是一种特定的制造商广告模式,在前台和后台都有 blocked from being read 和 CoreBluetooth
的数据。标识符可以通过CoreLocation
在前台和后台读取。但他们不能有额外的数据。
如果您想在后台从广告中读取临时数据(无需连接),您有两种选择:
使您的信标发送自定义服务广告,服务广告数据中包含温度。
使用 iBeacon 并对主要或次要字段中的温度数据进行编码。
【讨论】:
我已经找到了所有这些信息,但很困惑。 Ty 说清楚:) 所以,因为我无法在应用程序未运行时获取更新的数据,并且次要/主要字段对于数据来说是不够的(太短了,温度不是唯一的事情),我能想到的唯一方法就是在后台重新启动应用程序,开始扫描(使用CoreBluetooth),获取我的数据然后停止应用程序。这甚至可能吗?据我所知,一个应用程序只有在它之前处于前台时才能进入后台...... 是的,通过检测 iBeacon,应用程序可以在后台启动,即使它自启动以来尚未启动。发生这种情况后,此时您在后台读取 BLE 数据的唯一方法是服务广告。因此,您需要一个自定义信标来发送 iBeacon 广告以在后台唤醒,并需要一个服务广告来发送数据。以上是关于iOS 7-iBeacon:当应用程序关闭时,如何从 iBeacon 获取比其 UUID 更多的数据?的主要内容,如果未能解决你的问题,请参考以下文章
当用户手动关闭 react-native-ios 应用程序时如何运行一些代码?
当应用程序在iOS中使用后台定位服务时如何隐藏状态栏消息[关闭]