- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 AppDelegate 的 didFinishLaunchingWithOptions 回调中调用 scanForPeripheralsWithServices。代码如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSLog(@"didFinishLaunchingWithOptions");
// Override point for customization after application launch.
cm = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
[cm scanForPeripheralsWithServices:nil
options:nil];
}
- (void) centralManager:(CBCentralManager*)central didDiscoverPeripheral:(CBPeripheral*)peripheral advertisementData:(NSDictionary*)advertisementData RSSI:(NSNumber*)RSSI{
NSLog(@"Did discover peripheral %@", peripheral.name);
[cm stopScan];
}
在升级到 iOS 8 之前,一切都运行良好,但是在升级之后(完全相同的代码,没有一行被更改)我没有收到任何错误,而且 didDiscoverPeripheral 也没有被调用。
最佳答案
我认为 iOS 8 中 Core Bluetooth 发生的主要变化是 BLE 堆栈在您尝试连接(或可能发出其他命令)之前不会启动。
CBCentralManager *cbCentralManager;
[cbCentralManager scanForPeripheralsWithServices:...];
此调用用于发出在 Xcode 调试日志中可见的警告,指出中央管理器需要先启动才能使用。然而,这个警告始终是一个陷阱 - 启动中央管理器的唯一方法是向它发送一条消息,而它处理消息的唯一方法是启动它。
Apple 似乎通过稍微不同地处理开机来解决了这个问题。现在,在发出上述命令后,中央管理器通过 centralManagerDidUpdateState:
告诉它的委托(delegate)它的状态发生了变化。
我们通过重新发出 scanForPeripherals...
消息响应 centralManagerDidUpdateState:
解决了您描述的问题。
关于core-bluetooth - 从 iOS 7 升级到 iOS 8 后不调用 didDiscoverPeripheral,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25965357/
我需要通过蓝牙向第三方设备发送 ASCII 码。希望可以与 spp 一起使用。我的术语可能是错误的。我对这个编程领域了解不够。 在 centralManagerDidUpdateState 中,我正在
iOS CoreBluetooth 中是否有一种机制,以便在发现(但未连接)外围设备“丢失”时触发事件,即正在广播的外围设备不再广播。 最佳答案 您可以在 CBCentralManager 的 sca
我正在从事 BLE 项目,当应用程序在前台时一切正常。它可以发现并连接到外围设备,所有回调方法都可以正常工作。 但问题是,当应用程序处于后台模式时(我按下主页按钮)。仅调用 centralManage
我实际上正在使用低功耗蓝牙制作一个应用程序。 到目前为止,我的应用程序获得了 3 个 View ,每个 View 都显示一些 BLE 信息。 当我的蓝牙协议(protocol)代码在第一个 View
我正在使用 BTLE 对某些 BTLE 设备使用react,我只需要知道 BTLE 设备何时在某个范围内,不需要配对,只要知道RSSI值即可, 我遇到的问题是 didDiscoverPeriphera
我在 Xcode 6 中制作了一个非常简单的 iOS 应用程序来试用 CoreBluetooth 并与我的 Polar H6 心率监测器通信。由于某种原因,没有调用 didDiscoverPeriph
发生在 iOS 12 和 iOS 13 上。 我已将 Bluetooth-central 正确添加到我的 Info.plist 我正在指定服务 UUID 列表 我所看到的: 如果我在前台与我们的 BL
我不确定为什么这段代码无法构建并且错误消息看起来很神秘。 代码: var centralManager: CBCentralManager!; var nrf8001Peripheral: CBPer
我这样扫描我的外围设备: NSDictionary *scanOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool
我 99% 确定我按照说明正确设置了 CoreBluetooth。无论我做什么,当我在我的 iPad mini 上运行这个应用程序时,蓝牙都会显示它已打开。它说它正在扫描设备,但绝对找不到任何设备。如
我正在尝试在后台扫描 BLE 设备,但我的 didDiscoverPeripheral 方法没有被调用。我已经等了 5 分钟,什么也没发生,但是当我打开其他蓝牙应用程序(例如“LightBlue”)时
我正在扫描蓝牙设备。为此,我正在使用 CBCentralManager,就像这样 - (void)startScanning { [self.centralManager scanForPer
我正在使用 CoreBluetooth 并且当应用程序处于前台或后台或设备锁定且设备屏幕仍处于打开状态时,回调方法 didDiscoverPeripheral 被频繁调用。 但是一旦屏幕关闭/变黑(
我正在使用专有的信标。我可以完全访问信标的代码,并且可以根据需要设置制造商 ID。如果我将 ID 设置为 Apple 的(即使其成为 iBeacon),那么位置管理器就能够检测到信标的区域并能够确定信
我正在从 AppDelegate 的 didFinishLaunchingWithOptions 回调中调用 scanForPeripheralsWithServices。代码如下所示: - (BOO
如何发送28个字节的外设name-key广告数据并被central接收? 通常情况下,使用UUID,外设名称 key 广告数据中只有8个字符的空间。 但是有一个技巧: 我发现如果我的名字键有 28 个
我在 iOS 8 中使用 Xcode 6。当应用程序在后台运行时,我正在尝试搜索和连接蓝牙设备。我正在使用核心蓝牙框架。我使用 Xcode 功能选项添加了蓝牙中心和蓝牙外围设备。 代码: Appdel
我是一名优秀的程序员,十分优秀!