首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当仍然连接到蓝牙时,iBeacon唤醒iBeacon应用程序

当仍然连接到蓝牙时,iBeacon唤醒iBeacon应用程序
EN

Stack Overflow用户
提问于 2017-08-08 13:34:58
回答 1查看 836关注 0票数 0

我已经问过几次这个问题(herehere),但没有任何可用的回答,所以我现在要以另一种方式来问这个问题。

我需要什么

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

问题

我试过所有建议的背景“应用程序可唤醒”的info.plist项目..。网络电话,背景音频,iBeacon和蓝牙didConnectPeripheral/didDisconnect委托方法,没有真正的工作非常可靠。有几天,我让iBeacon、didEnterRegiondidExitRegion方法在插入/拔掉我的设备时启动,所以至少有一些可靠的东西。

如果我使用iBeacon唤醒应用程序并连接到蓝牙,那么真正的问题就开始了(因为在iOS系统级别连接/配对之前,我无法与该框交换信息)。因为这个应用程序还没有与之配对,所以后台的命令中没有一条能到达方框。当这个进程在后台启动时,不会出现任何消息询问您是否愿意与此设备配对(当应用程序正在运行并且您可以配对时,这一切都工作得很好)。

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

我的问题

其他应用程序是如何这么容易做到这一点的,从后台/终止中永久唤醒应用程序的合适流程是什么?我在努力找出这里的流量。

我真的希望只在不需要连接或配对的用例中使用iBeacon吗?我应该以某种方式切断用户与外围设备的连接吗?

求和

因此,总之,使用iBeacon唤醒应用程序,如果需要将/对连接到外围设备,则无法工作,因为直到不再配对/连接时,这些方法才会再次启动。如果我能找到一些神奇的方法,在应用程序死后断开一个人的连接,然后恢复到iBeacon,它就不能工作了,因为我似乎无法从后台配对,这样命令就不能到达外围设备。最后,如果我使用纯连接的蓝牙方法,当我插入/拔掉设备时,didConnectdidDisconnect方法永远不会触发。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-08 14:41:57

几点想法:

  1. 是的,BLE外围设备通常在连接时停止广告。在这种状态下,如果BLE外围设备不再为信标做广告,您就无法获得iBeacon应用程序的唤醒。
代码语言:javascript
复制
- While this behavior is typical, it is not an absolute rule.  It is possible to build peripherals that keep advertising when connected, although there may be limitations with the chipset you are using.
- A common approach to prevent ever-lasting connections is to build peripheral code that will automatically disconnect if there has not been any communication with the mobile phone in X seconds or minutes.  This will allow beaconing to begin again.

  1. 蓝牙配对和BLE连接的工作方式不同。您可以在后台建立无用户交互的BLE连接。这种连接(而不是配对)通常是用来使其自动化的。到GATT服务的连接可以在plist中以以下后台模式(不需要特殊的App理由)在后台和数据中悄然建立:UIBack基mode蓝牙中心
  2. 如果您确实希望与用户交互配对,则需要执行以下步骤:
代码语言:javascript
复制
- When the beacon is detected in the background, send a local notification to the user telling them to launch the app to pair. (Adjust the language to match your use case.)
- When the user taps on the notification, the app will come to he foreground.  Detect this and start the pairing process.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45569846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档