Tag: cbcentralmanager

BLE以编程方式发送密码

当我将设备连接到外设时,他问我一个密码(设备上显示popup窗口)。 我想在连接期间以编程方式发送此密码。 我正在使用CBCentralManager,但是我找不到发送它的方法。 有什么build议么?

iOs CoreBluetooth中央服务器和外设客户端

目前,iOS不支持组合GAP中心angular色和ATT服务器angular色,以及组合GAP外围angular色和ATT客户端angular色。 苹果是在这个工作吗? 有人知道什么时候可以这样做吗?

iOS停止从外设传入的BLE连接唤醒应用程序

我们有一个BLE外围设备,每小时连接到手机并传递一些数据。 这是过程如何工作: 启动时使用密钥UIApplicationLaunchOptionsBluetoothCentralsKey中 application(didFinishLaunchingWithOptions launchOptions)应用程序使用传递给它的ID重新初始化CBCentralManager。 然后经过正常的恢复周期,从BLE外设读取数据。 对云中的服务执行REST请求。 假设应用程序已经启动至less一次手机重启后,一切运作良好几天(如果应用程序没有运行或被迫内存不足,iOS正常启动它,假设用户没有强制closures手动)。 然而,每隔几天,当有来自BLE设备的传入请求时,iOS停止唤醒应用程序。 如果用户重新启动应用程序,一切正常工作几天,然后再次停止。 鉴于我们产品的性质,以尽可能最可靠的方式使我们的应用程序/外设一起工作至关重要。 关于为什么可能发生的理论: (经仔细检查,他们全部被解雇) 用户重新启动手机,忘记重新启动应用程序。 我们添加了正常运行时间的日志logging,并显示手机在启动应用程序之间没有重新启动。 内存警告导致应用程序被启动。 再次,添加日志logging,他们表明,没有applicationDidReceiveMemoryWarning 上传结果导致应用程序运行时间超过10秒,iOS终止结果并不高兴 我们人为地将服务器响应延迟了15秒,以testing这一点,并且在testing过程中,所有事情都能正常运行。 任何想法正在发生的事情,为什么iOS停止通知应用程序关于传入的BLE连接? 其中一个问题是,我们无法弄清楚如何可靠地重现问题,所以任何build议都会非常感谢! 谢谢! 更新1:这是我们如何初始化CBCentralManager : self.centralManager = CBCentralManager(delegate: self, queue: nil, options: [ CBCentralManagerOptionRestoreIdentifierKey : MyCentralManagerID, CBCentralManagerOptionShowPowerAlertKey : 0]) 我看到一些build议队列参数不应该是零。 鉴于我无法可靠地重现问题,我犹豫不决,直到我可以自信地观察它的影响。

如何从具有相同服务UUID的两个设备中find特定的BLE 4.0外设

对于BLE 4.0,它提供API来发现具有服务UUID数组的外设。 我只想find具体的一个。 如何做到这一点? 如果需要将标识符分配给特定设备,该怎么做? (我想我的问题需要iOS的核心蓝牙的一些背景。)

如何使用iPhone应用程序发送RGB信号到BLE设备?

我们正在开发iOS应用程序,并且需要将RGB信号传递给BLE设备,并根据RGB代码设备LED发光。 我们在iOS应用程序中使用CBCentralManager为蓝牙框架的CBPeripheral对象进行连接。 我们正在设置特征和描述符UUID,但是我们仍然无法在BLE设备上发送信号。 这里是我们用来传递hex字节格式的RGB数据的代码。 – (void)centralManager:(CBCentralManager )central didConnectPeripheral:(CBPeripheral )peripheral { NSLog(@"connect peripheral"); unsigned char bytes[] = { 0x5, 0x1, 0x70, 0x70, 0x70, 0x70, 0x48, 0x49,0x48, 0x49, 0x48, 0x65, 0x48, 0x49, 0x48, 0x48}; NSData *nsData = [[NSData alloc] initWithBytes:bytes length:sizeof(bytes)]; CBMutableCharacteristic *myCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"00002a46-0000-1000-8000-00805f9b34fb"] properties:CBCharacteristicPropertyWriteWithoutResponse value:nil permissions:CBAttributePermissionsReadable]; CBMutableDescriptor *yourDescriptor = [[CBMutableDescriptor alloc]initWithType:userDescriptionUUID value:@"00002902-0000-1000-8000-00805f9b34fb"]; […]

一种唯一标识BTLE设备的方法

有没有办法唯一标识BTLE设备(如硬件ID)? 我有2个硬件BTLE设备和2个软BTLE设备(使用CBCentralManager)。 所有这些设备都发送相同的UUID。 当所有的设备都躺在我身边的时候,我想识别确切的BTLE设备。 任何线索?

BLE背景重新连接

在用户或系统移出/终止设备后,我想重新连接到BLE设备/在后台模式下重新绑定。 我知道这是可能的: – 看到这个问题的描述 问题 – 如何设置centralManager自动重新连接到外设在后台模式,如果应用程序被终止? 有人可以一步一步描述如何做到这一点? 关于当前实施的几句话: 我使用以下选项创buildcentralManager: self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{ CBCentralManagerOptionRestoreIdentifierKey: @"myCentralManagerIdentifier", CBCentralManagerRestoredStatePeripheralsKey : @YES, CBCentralManagerRestoredStateScanServicesKey : @YES, CBCentralManagerRestoredStateScanOptionsKey : @YES }]; 之后,我开始扫描BLE设备 [self.centralManager scanForPeripheralsWithServices:[self discoverableCharacteristics] options:nil]; 在- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI我连接到外设: NSString *localName = [advertisementData objectForKey:CBAdvertisementDataLocalNameKey]; [self.centralManager stopScan]; peripheral.delegate = self; [self.centralManager connectPeripheral:peripheral […]

中心写入特性到外设(iOS Core蓝牙)

好吧,我已经浏览了一千个教程和其他堆栈溢出线程(所以请不要列出重复没有回答的问题),我不能解决如何使用这个function。 我按照这个教程: http : //code.tutsplus.com/tutorials/ios-7-sdk-core-bluetooth-practical-lesson–mobile-20741 我有一个系统,中央可以连接到一个外设,并从中读取一个特性。 我现在试图让我的核心重写特性内的数据,但我发现我所称的写行被忽略。 我已经在我的外围课堂上宣布了我的特点: self.transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:TRANSFER_CHARACTERISTIC_UUID] properties:CBCharacteristicPropertyNotify|CBCharacteristicPropertyWriteWithoutResponse|CBCharacteristicPropertyRead value:nil permissions:CBAttributePermissionsReadable|CBAttributePermissionsWriteable]; 并在我的中央pipe理器,我已经打电话 [peripheral writeValue:[@"rewritten!" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse]; 但是这条线被忽略了。 任何人都可以通过什么可能是错的? 我需要添加一个方法到我的外设类吗? 另外,我尝试过使用WithResponse,但它甚至不会从外设调用这个方法。

在iOS 10+中,有没有办法可靠地唤醒应用程序

我已经在这3个多月了,把头发拉出来了。 所以请不要回答初学者的答案。 我想知道是否在2017年与iOS 10+,有任何方式可以唤醒终止状态的应用程序…最好通过蓝牙外设…但我会把我能得到的! 我认为终止是当用户在任务pipe理器中刷新应用程序或当外设打开/closures,应用程序已经死亡 我需要在应用程序中维护的重要的与健康有关的BT外围数据(由BT设备logging),所以我需要一致的连接或唤醒应用程序并处理数据的能力。 我知道这是很多的问题,所以我想find最新的理解或解决这个问题。 我已阅读sooo许多文章和SOpost,所以我知道核心蓝牙是不可靠的充其量。 我知道总的概念是片面的,人们自2010年以来一直说不可能。 然而,在iOS中很多地方都在变化,所以我希望事情会发生改变。 要清楚: BT醒来会很好,但它真的不是可靠的,所以…我会采取任何一种可靠的唤醒(位置,audio,BT等…不是iBeacon,但因为我连接/配对BT设备) 。 如果我必须“破解”在位置或audio上发生的唤醒事件,然后以某种方式快速从外设获取数据,我会接受! 我努力了: (跳过这个,如果你不关心或不适用) 在info.plist中打开背景中央模式 使用完整状态恢复,也就是说,这个代码… self.centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{CBCentralManagerOptionShowPowerAlertKey: @(YES), CBCentralManagerOptionRestoreIdentifierKey:@"MyDevice"}]; 要注册标识符键和此代码… – (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSLog(@"launch options found: %@", launchOptions); NSArray *centralManagerIdentifiers = launchOptions[UIApplicationLaunchOptionsBluetoothCentralsKey]; NSLog(@"central managers found in launch options: %@", centralManagerIdentifiers); [self triggerLocalNotification:[NSString stringWithFormat:@"central managers […]

无法使用iBecon Signal的服务ID扫描CBCentral Manager

使用核心蓝牙处理iBecon信号,我可以使用CBCentralManager扫描选项nil进行search: – Shared.sharedInstance.centralManager?.scanForPeripherals(withServices: nil, options:[CBCentralManagerScanOptionAllowDuplicatesKey:true]) 但是当我提供我想要的服务ID即: Shared.sharedInstance.centralManager?.scanForPeripherals(withServices: [serviceID], options:[CBCentralManagerScanOptionAllowDuplicatesKey:true]) 它永远不会调用didDiscoverPeripheral Delegate方法,我也需要在后台模式下扫描外围设备,根据苹果文档,您需要明确提供服务ID,无论何时需要在后台模式下扫描。 任何人都可以帮助我在这里做错了什么。