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 更多的数据?的主要内容,如果未能解决你的问题,请参考以下文章

iOS10应用关闭时如何响应本地通知?

当用户手动关闭 react-native-ios 应用程序时如何运行一些代码?

当应用程序在iOS中使用后台定位服务时如何隐藏状态栏消息[关闭]

当应用程序已经上传时,ios更改标签itunesconnect [关闭]

应用完全关闭时获取 FCM 远程通知 iOS

屏幕关闭时如何在 iOS 应用程序中检测 iBeacon?