2017-08-08 168 views
0

我问这个问题了几次(herehere)没有可用的反应,所以我会问这个现在在用不同的方式...唤醒的iOS应用程序时仍然连接到蓝牙

什么我需要

我需要能够唤醒我的应用程序从终止,发送和接收一些数据从我编程自己的蓝牙外设。这是出于安全原因的重要数据,所以我绝对需要该应用程序来唤醒。但是,该设备并不总是处于关机状态,因此我需要在外设打开/关闭时处理该用例。要做到这一点,我需要使用iBeacon唤醒应用程序,发送命令到盒子,获得响应,然后进入连续交换模式。如果外围设备关闭,我不在乎,只是当它在我需要重新启动连续数据交换的过程中重新开启时。

的问题

我已经尝试了所有建议的背景“应用wakable”的info.plist项目... VOIP,后台音频,iBeacon显示和蓝牙didConnectPeripheral/didDisconnect委托方法并没有什么真正的作品非常可靠。几天后,我将iBeacon didEnterRegiondidExitRegion方法触发,当我插入/拔出设备时,至少可以使用某种可靠的设备。

如果我使用iBeacon唤醒应用程序并连接到蓝牙(因为我无法与该盒交换信息,直到我在iOS系统级连接/配对),真正的问题才会开始。由于该应用程序尚未配对,因此后台中的任何命令都无法将其添加到框中。当这个过程在后台启动时,不会有消息询问您是否希望与此设备配对(在应用程序运行并且可以配对时,这一切都可以正常工作)。

此外,即使我有机会配对,我现在将永久连接/配对(我不希望用户每次插入设备和应用程序时都必须按“配对”关闭了)。除非用户进入蓝牙设置并“忘记设备”,否则我无法断开它们。因此,我刚刚失去了使用iBeacon唤醒应用程序的能力,因为现在只要应用程序通过蓝牙连接,iBeacon就不会启动。

我的问题(一个或多个)

其他应用是如何做那么容易的,什么是永久醒来从后台您的应用程序的正常流动/终止?我正在努力弄清楚这里的流程。

我真的希望只在不需要连接或配对的情况下使用iBeacon吗?我应该从外设断开用户连接吗?

求和

因此,在总结,利用iBeacon显示用于唤醒应用程序,如果你需要对连接/到外围,因为那时这些方法将永远不会再直到不再配对火不起作用/连接的。如果我找到某种神奇的方式在应用程序死亡并将其还原到iBeacon时断开某个人的连接,它将无法工作,因为我似乎无法从背景进行配对,因此命令无法将其传送到外围设备。最后,如果我使用纯粹连接的蓝牙方法,则在插拔设备时,方法不会触发。

回答

1

的一点想法:

  1. 是,当连接BLE外围设备通常停止广告。在这种状态下,如果BLE外设不再通知信标,则无法启动iBeacon应用程序。

    • 虽然这种行为是典型的,但它不是绝对的规则。虽然可能会对使用的芯片组有限制,但可以构建在连接时保持广告的外围设备。

    • 防止持续连接的常用方法是构建外围代码,如果在X秒或几分钟内没有与手机进行任何通信,外围代码将自动断开连接。这将允许信标再次开始。

  2. 蓝牙配对和BLE连接的工作方式不同。您可以在后台建立BLE连接,无需用户交互。 BLE连接(不配对)是通常如何实现自动化。到GATT服务的连接,可以默默在后台建立在plist中以下背景模式(这并不需要特别的App Store的理由)数据交换:

    <key>UIBackgroundModes</key> 
    <array> 
        <string>bluetooth-central</string> 
    </array> 
    
  3. 如果你确实要配对用户交互,则需要采取以下步骤:

    • 时在后台检测到信标,发送本地通知给用户,告诉他们推出的应用程序进行配对。 (调整语言以符合您的使用情况。)
    • 当用户点击通知时,应用程序将前往他的前台。检测此并开始配对过程。
+0

感谢@davidgyoung,但不幸的是,我不能让配对/连接,仅落入用户交互的手中。这需要非常被动,而不是用户的方式。我绝对宁愿不配对,只是连接(因为我已经可以做到这一点),但我使用的BLE GATT设备(Bluefruit羽毛nrf52)我认为要求配对能够通过特性发送数据。它是否正确?如果不是,那么我需要一些帮助来找出如何更改草图文件以不需要配对。 – GoreDefex

+0

这是一个产品特有的问题,我不能回答。但我同意,使用此设备或其他设备无需配对就很有用。 – davidgyoung

+0

仅当特征指示需要加密时才需要配对(实际上是绑定,但在对话框中称为配对)。如果您从特性中删除了加密要求,那么iOS应用程序只需连接到外设即可,无需用户干预。如果您实现与外设的待定连接并实现核心蓝牙状态恢复,则应该没有理由使用iBeacon。如果你“绝对需要应用程序醒来”,那么你可能会运气不好。根据我的经验,背景蓝牙没有100%的保证 – Paulw11