【问题标题】:Eddystone beacon background tracking for ios用于 ios 的 Eddystone 信标背景跟踪
【发布时间】:2017-09-25 14:20:12
【问题描述】:

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

我目前正在开发应该扫描 Eddystone 信标的应用程序。 该应用程序的基本思想是: - 用户打开应用程序; - 用户在特定时间(将来)注册会议; - 会议开始前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) {
}

仅在应用程序处于前台时调用?

任何帮助或建议将不胜感激。

【问题讨论】:

    标签: ios swift beacon eddystone


    【解决方案1】:

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

    您可以设置扫描 Eddystone 服务 UUID,以便在您的应用处于后台并第一次看到信标时通过 CoreBluetooth 获得单个发现回调。主要问题是这也不是超级快。检测可能会在几秒钟内发生,更有可能在信标出现后的一两分钟内完成。

    【讨论】:

    • 好的,感谢您的澄清。我担心当应用程序处于后台时无法将其安排在某个特定时间。
    • 但是静默推送通知呢? developer.apple.com/library/content/documentation/… 有示例如何配置静默推送通知。只是想这样的案例是否会被应用商店批准:1.发送静默推送通知2.启动后台任务以开始监控信标
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多