Tag: cbperipheral

iOS外围设备服务发现后仍为空

我想使用蓝牙我有这样的事情: func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) { Connected = true TableView.reloadData() Activityview.stopAnimating() TabBar.topItem!.rightBarButtonItem = UIBarButtonItem(title: "Suivant", style: UIBarButtonItemStyle.Done, target: nil, action: #selector(Connexion.next)) CM.stopScan() Scanning = false Refresh_Button.setTitle("Deconnecté", forState: UIControlState.Normal) let AlertMessage = UIAlertController(title: "Connecté", message: "Le module est bien connecté", preferredStyle: .Alert) let ActionAlert = UIAlertAction(title: "Ok", style: .Default) { (action) in } AlertMessage.addAction(ActionAlert) […]

集成iBeacon和coreBluetooth外设

我想知道是否有可能做广告服务通过coreBluetooth与设备充当外设,也范围为iBeacons,也在后台完成? 本质上,其目的是为信标的范围,然后如果信标是在附近。近或远的范围更新设备通告的服务的特征。 我可以很高兴地完成测距任务,尽pipe我已经发现设备作为一个外设苗条的信息,我想我可以pipe理,但是已经被后台function限制重复停止,我想知道如果这种情况是可能的我花了很多时间去完成一些事情,大家都知道这是不可能的。 我新来Swift和iOS一般,所以我花了很多时间来完成。 任何build议将不胜感激。 谢谢

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

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

如何从具有相同服务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"]; […]

CoreBluetooth:刷新已经发现的外设的本地名称

我成功地发现了一个外围设备,并检索其本地名称: [advertisementData objectForKey:CBAdvertisementDataLocalNameKey] 但是,如果外围设备停止并以不同的本地名称重新开始广告,则客户端不会识别该更改。 我猜 – (void)peripheralDidUpdateName:(CBPeripheral *)peripheral 只有在两个设备配对的情况下才有效。 有没有办法在没有配对的情况下获得更新?

C ++中swift3的特性值

我是快速发展的初学者。 我正在研究基于BLE的应用程序。 今天我更新了Xcode 8,iOS 10并将我的代码转换为swift3。 然后我的一些语法都需要转换。 解决这个问题之后,我发现了一个关于CBC特性的问题。 问题 在didUpdateValueforCharacteristic里面,我可以得到更新的CBCharacteristic对象。 如果我打印出整个对象,则显示正确。 – > value = <3a02>当我从CBCharacteristic中检索到值时,特征值 – > 2字节(这个值的大小) func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { if (characteristic.uuid.description == LED_WAVELENGTH_CHARACTERISTIC_UUID) { print("Characteristic – \(characteristic)") print("Data for characteristic Wavelength – \ (characteristic.value)") } } 日志结果: Characteristic – <CBCharacteristic: 0x1742a50a0, UUID = 2C14, properties = […]

中心写入特性到外设(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,无论何时需要在后台模式下扫描。 任何人都可以帮助我在这里做错了什么。