ios - BLE和ANCS自动连接场景

标签 ios iphone bluetooth-lowenergy core-bluetooth ancs

我开发了一款可穿戴设备,它使用 BLE 技术连接顶级其他 BLE 设备。我还从可穿戴设备方面成功实现了 ANCS。

这里的问题陈述是:
我没有使用 Apple 的 MFI 程序。 当我第一次扫描设备时,它会根据服务 ID 被发现。连接成功后,ANCS 建立并请求配对请求,该请求在应用程序中可见。

如果可穿戴设备以某种方式断开连接并且用户手动将其打开。设备从外部蓝牙设置屏幕自动连接。这导致了一个问题,我无法从应用程序本身扫描设备,因为它是从外部连接的,因此广告数据包停止传播。由于我无法扫描 watch ,因此无法连接它。

我必须手动取消配对,然后设备才会进入扫描列表。

有什么方法可以让我知道设备是从我的应用程序内部从外部连接的吗?

如果是,请告诉我,如果不是,请为整个场景提出一些替代解决方案,因为我必须一次又一次地取消配对才能从应用程序扫描它。

过去 10 天以来,我一直被这个问题困扰。

请提供解决方案。感谢您的帮助。

谢谢

最佳答案

当您尝试在您的应用程序中扫描外围设备时,您应该在扫描之前先使用retrieveConnectedPeripheralsWithServices:

例子如下:

NSArray *peripherals = [central retrieveConnectedPeripheralsWithServices:@[serviceUUId]];
if (peripherals.count > 0) {
    CBPeripheral *peripheral = [peripherals firstObject];
    peripheral.delegate = self;
    [central connectPeripheral:peripheral options:nil];
} else {
    [central scanForPeripheralsWithServices:@[serviceUUId] options:nil];
}

The best practice for connect a peripheral苹果 BLE 文档中描述:

best practice for connect a peripheral

关于ios - BLE和ANCS自动连接场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28538687/

相关文章:

iphone - 当 UITextField 位于 UIScrollView 内时,使用点击手势关闭键盘时出现问题。

iphone - 需要将UIView捕获成UIImage,包括所有 subview

android - 如何隐藏配对对话框以在 Android 上以编程方式配对 BLE 设备?

ios - Swift 5 iOS13 - 继续到另一个 Storyboard或未连接的 View Controller 而不创建卡 View

ios - 从 VC1 传递 UITextField(密码)并与 VC2 上的 UITextField(确认密码)进行比较(是/不相同)

ios - 找到一周中依赖于语言环境的第一天

ios - 限制 iOS 5 中的同时 NSURLConnection 请求数?

iphone - 如何在 didFinishLaunchingWithOptions 中获取 Device Token

android - 即使蓝牙已关闭,也能检测附近的信标

UWP BluetoothLEAdvertisementWatcherTrigger 未使用服务 uuid 筛选器触发