问题标签 [cbperipheral]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
core-bluetooth - CoreBluetooth 状态保存与恢复
我有以下场景:iOS 应用程序(外围)X OSX 应用程序(中央)
- 我用 CBPeripheralManagerOptionRestoreIdentifierKey 实例化我的外设管理器。
- 在我的外围设备的 didFinishLaunchingWithOptions 中,我在使用 UIApplicationLaunchOptionsBluetoothPeripheralsKey 获取外围设备后发送本地通知(不要对它做任何事情)
- 在我的外围设备的 willRestoreState 中,我还触发了一个通知(除此之外不要做任何事情)
如果我的外围应用程序在由于内存压力而被杀死之前仍在后台运行,我会从 OSX 中心收到消息。
在 iOS 应用程序被杀死后,当 OSX 中心发送消息时,上面提到的两个通知都会在 iOS 上通过,但我实际上期待的消息并没有。
我在任何时候都没有对我的 peripheralManager 进行 rentantiated,我应该在哪里以及如何做呢?我的应用程序的整个周期只有一个 peripheralManager。
欢迎任何建议。
更新:
如果这样做
在 willRestoreState 中,我的应用程序只是失去了连接
ios - CoreBluetooth:无法发现已发现外围设备的特征
我已经编写了一些 CoreBluetooth 代码,我可以发现这些设备,但我似乎无法发现我发现的外围设备的特征。有没有人有一个很好的示例代码可以用来验证我的代码?
这是我写的:
ios - LGBluetooth 后台扫描或 CBCentralManager 后台扫描
我正在开发 BLE 应用程序,我需要在后台模式下扫描设备。在调试时,我发现它扫描了设备,但没有调用并返回设备的发现。在前台模式下一切正常。
为什么我的应用在后台运行时无法扫描设备?
注意:我确实输入了所需的后台模式 1.App 使用 CoreBluetooth 进行通信 2.App 使用 CoreBluetooth 共享数据。下面是我在前台调用扫描设备的代码
输出广告数据:
ios - 使用 Peripheral 对象作为另一个函数的参数
我对 Swift 很陌生,所以也许我的问题的答案对你来说似乎很容易。我想创建一个接口来扫描 BLE 设备,在 TableView 中列出它们,并连接到此列表中的选定设备。到目前为止,我实现了扫描和列出,但我想知道如何才能连接到您刚刚在 tableview 中单击的所需设备。我假设我必须将外围对象发送到 tableview DidSelectRowAtIndexPath 函数,但我真的不知道该怎么做。或者肯定有更聪明的方法来做到这一点?感谢您的回答和时间
这是我到目前为止所做的:
顺便说一句,我到处都读到 CoreBluetooth 正在处理 BLE。那么我用什么来连接没有BLE设备?
ios - Corebluetooth:如何强制 iPhone 与未配对的外围设备配对
当外围设备具有配对信息时,如何强制 iPhone 与未配对的外围设备配对。
ios - 信标没有发现 iOS
我正在尝试发现 ibeacon。我在 iPhone 4s 上运行应用程序。设备蓝牙已打开。信标也在其他 iOS 应用程序中发现。当我在调用委托“centralManagerDidUpdateState”之后搜索服务并且状态为“On”之后没有任何反应。预计应该调用“didDiscoverPeripheral”,但没有任何反应。我在这里做错了什么?
ios - CBCentralManager:如何确定管理器正在扫描哪个外围设备
我想知道如何在不使用其他变量的情况下确定 CBCentralManager 正在扫描哪些外围设备,换句话说,仅来自 CBCentralManager 对象。
ios - iOS CBPeripheral 服务未更新
我在使用更新了服务的 CBPeripheral 时遇到了一些问题:我的物理设备有一个更新广告服务的按钮,但我的应用程序仍然在委托方法中读取旧服务didDiscoverServices
。
虽然当我在 中发现外围设备时didDiscoverPeripheral
,我可以看到那里的服务是最新的。
如果我再次运行该应用程序,旧服务仍然存在!似乎让我的应用程序发现新服务的唯一方法是关闭蓝牙然后再打开。即使卸载/重新安装我的应用程序也是不够的。
iOS会永远缓存服务吗?有没有办法重置/擦除缓存?
ios - 如何将 <1100> 或 <2200> 写入 CBPeripheral 上的特征值?
当我NSLog characteristic.value
显示为<1100>
or时<2200>
。我知道这是一个十六进制。当我改变值时,我对写什么感到困惑。
任何帮助将非常感激。
目前我正在执行以下操作,但是当我更改值时会变为 null。
ios - 集成 iBeacon 和 coreBluetooth 外设
我想知道是否有可能通过 coreBluetooth 使用充当外围设备的设备以及 iBeacons 的范围来宣传服务,是否也可以在后台完成两者?本质上,目的是确定信标的范围,然后如果信标在 .Near 或 .Immediate 范围内,则更新设备所宣传的服务的特征。我可以愉快地完成测距任务,虽然我找到了有关充当外围设备的设备的信息,但我认为我可以做到这一点,但是由于后台功能限制而反复停止我想知道这种情况之前是否可能我花了很多时间试图完成一些人人都知道是不可能的事情。总的来说,我是 Swift 和 iOS 的新手,所以我需要时间来完成很多工作。任何建议将不胜感激。谢谢