- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我实际上正在使用低功耗蓝牙制作一个应用程序。
到目前为止,我的应用程序获得了 3 个 View ,每个 View 都显示一些 BLE 信息。
当我的蓝牙协议(protocol)代码在第一个 View 中时,没有问题。但我决定创建一个类并将我的蓝牙代码放入其中,这样我就可以为我的另外 2 个 View 创建一个全局类。我用过:
self.bluetoothManager = [BluetoothManager getInstance];
BluetoothManager,是我的全局类。
问题是这样的:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
该方法不再循环,仅在开始时调用一次。我担心其他服务(例如discoverCharacteristics 或Notifications)也不会循环。
编辑:这就是我创建类(class)的方式
+(BluetoothManager *)getInstance {
@synchronized(self)
{
if(instance==nil)
{
instance= [[BluetoothManager alloc] init];
}
}
return instance;
}
- (id) init {
self.CentralManager = [[CBCentralManager alloc]initWithDelegate:self queue:dispatch_get_main_queue()];
self.activePeripheral = [CBPeripheral alloc];
self.discoveredPeripherals = [NSMutableArray new];
self.resultValue = [[NSString alloc] init];
return self;
}
- (void)centralManagerDidUpdateState:(CBCentralManager *)central
{
if (central.state != CBCentralManagerStatePoweredOn) {
return;
}
if (central.state == CBCentralManagerStatePoweredOn) {
// Scan for devices
[self.CentralManager scanForPeripheralsWithServices:nil options:nil];
NSLog(@"Scanning started");
}
}
编辑 2:到目前为止,我没有发布所有类方法来获得正确的问题,但是 CBCentralManager
委托(delegate)中的每个方法都已在我的类中实现。
到目前为止,我认为我的问题与线程有关,因为唯一的区别是我的类不再在主队列中?我确实尝试了一些方法,但我对线程不满意,如果有人有解决方案或想法来解决这个问题,请提前致谢。
最佳答案
如果成功调用了 didDiscoverPeripheral:...
回调,这意味着您已正确执行所有操作。当您调用 scanForPeripheralsWithServices:options:
时,iOS 开始扫描周围环境以搜索 BLE 设备。它会这样做,直到您显式调用 stopScan
或禁用 BT 或终止您的 CBCentralManager
实例。有些外围设备会立即找到,有些则需要更多时间。每次发现设备时,都会调用 didDiscoverPeripheral:
回调。发生这种情况时,您有责任决定是否对它感兴趣、连接它并发现它的服务。
关于iOS - CoreBluetooth didDiscoverPeripheral 仅调用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35177372/
我需要通过蓝牙向第三方设备发送 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
我是一名优秀的程序员,十分优秀!