gpt4 book ai didi

ios - iOS 的 Eddystone 信标背景跟踪

转载 作者:行者123 更新时间:2023-11-28 15:18:41 26 4
gpt4 key购买 nike

我想知道在 iOS 上使用 Eddystone 信标跟踪是否真的可以实现这样的事情。

我目前正在开发应该扫描 Eddystone 信标的应用程序。该应用程序的基本思想是:- 用户打开应用程序;- 用户在特定时间( future )注册 session ;- session 开始前5分钟开始BT扫描;- 当找到信标时,会发出网络请求并向用户显示通知。

如果应用程序在前台,则没有问题。打电话

func startScan() {
if centralManager.state == .poweredOn {
let services = [CBUUID(string: "FEAA")]
let options = [CBCentralManagerScanOptionAllowDuplicatesKey: true]
centralManager.scanForPeripherals(withServices: services, options: options)
}
}

它将开始扫描。然后,当找到信标并且我从服务器获得正确的数据时,我将停止扫描。

所以问题是,即使应用程序处于后台,是否有可能以某种方式安排扫描的开始?当然,如果它被杀死了,那么我们就无能为力了。

一个想法是创建一些“无声的本地通知”,但在阅读了 Apple 文档之后,它似乎是

func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
}

仅当应用程序处于前台时才被调用?

如有任何帮助或建议,我们将不胜感激。

最佳答案

如果应用程序未在前台运行,您无法安排蓝牙扫描在特定时间开始。并且没有可靠的方法可以在非常特定的时间通过通知(远程或本地)启动您的应用程序。静默远程通知是可能的,但它们可能需要很长时间才能传递。

您可以做的是设置扫描 Eddystone 服务 UUID,这样当您的应用程序在后台并第一次看到信标时,CoreBluetooth 会收到一个发现回调。主要问题是这也不是 super 快。检测可能会在几秒钟内完成,更有可能是在信标位于附近后的一两分钟内。

关于ios - iOS 的 Eddystone 信标背景跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46398383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com