Tag: 核心蓝牙

如何在Xamarin iOS中使用蓝牙低功耗协议发布制造商特定的数据?

我需要在Xamarin iOS中使用蓝牙低能量协议广播包含特定制造商特定数据的广告数据包。 我能够广播广告数据包,但收到时不包含制造商特定的数据。 它们包含我设置的本地名称和数据服务UUID键。 我应该提到在Xamarin中这样做Android不是问题。 你能告诉我为什么制造商的具体数据不在Xamarin iOS中播放? 我正在使用下面的代码: using CoreBluetooth; namespace XamarinBt { public class BluetoothOperations { CBPeripheralManager cbPeriphMang = new CBPeripheralManager(); public void AdvertiseData() { var uui = new CBUUID[] { CBUUID.FromString("E20A39F4-73F5-4BC4-A12F-17D1AD07A961") }; var nsArray = NSArray.FromObjects(uui); var nsObject = NSObject.FromObject(nsArray); var manufacturerDataBytes = new byte[6] { 5, 255, 76, 0, 25, 35 }; […]

我怎样才能通过蓝牙接收简单的整数值在ios中

我试图学习如何让一些传感器插入到Arduino板上,通过蓝牙与红熊实验室迷你板交谈,但却碰到了砖墙。 传感器读取数据,并通过BLE发送到手机。 到目前为止,我已经连接到设备,我回来似乎是数据,但我无法理解它。 我写了一个看起来像这样的小图,来模拟传感器数据。 #include <SoftwareSerial.h> SoftwareSerial bluetooth(5, 6); void setup() { bluetooth.begin(57600); } void loop() { //int reading = analogRead(2); int reading = 123; // fake reading byte lowerByte = (byte) reading & 0xFF; byte upperByte = (byte) (reading >> 8) & 0xFF; bluetooth.write(reading); bluetooth.write(upperByte); bluetooth.write(lowerByte); delay(1000); } 在iOS中,我发送一个调用来读取数据,然后通过一段代码来接收数据: – (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic […]

设备locking时扫描外围设备

我的中央pipe理者可以在前景和背景中检测到新的外围设备 – 我知道这一点,因为我发现一个新的外围设备时触发UNNotification。 但是,当设备被locking时,似乎不会继续扫描新的外围设备。 在我的function中,我启用了使用LE配件的背景模式以及远程通知。 我是否错过了一些可以让我在设备locking时检测新外设的BLE? 更新w /更多信息: 以下是我如何实例化我的中央pipe理器并开始扫描: central = CBCentralManager(delegate: self, queue: nil, options: [CBCentralManagerOptionRestoreIdentifierKey : kRestoreIdKey]) central!.scanForPeripherals(withServices: [kMyService, kMyOtherService], options: [CBCentralManagerScanOptionAllowDuplicatesKey : true]) 这是启用的背景模式: 此外,背景模式的plist键: 任何想法为什么我的本地通知将触发时,它在前景或背景扫描,但不是当屏幕locking?

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

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

核心蓝牙 – 在后台执行长期操作

这是来自官方文档中的iOS应用程序核心蓝牙后台处理部分: 在后台执行长期行动 某些应用程序可能需要使用Core Bluetooth框架在后台执行长期操作。 例如,假设您正在开发一款iOS设备的家庭安全应用程序,该应用程序与门锁(配备蓝牙低功耗技术)进行通信。 应用程序和锁相互作用,当用户离开家时自动锁住门,当用户返回时将其解锁 – 当应用程序在后台时。 当用户离开家时,iOS设备可能最终超出锁的范围,导致与锁的连接丢失。 此时,应用程序可以简单地调用CBCentralManager类的connectPeripheral:options:方法,并且因为连接请求不超时,所以iOS设备将在用户返回时重新连接。 好的,我们有一个应用程序,适当locking/解锁门…所以正如指出的,这是适用于应用程序在后台(最有可能在暂停模式)。 现在,让我们继续(引用文档): 现在想象一下用户离家几天。 如果应用程序在用户离开时被系统终止,则当用户返回家时应用程序将不能重新连接到锁,并且用户可能无法解锁门。 对于像这样的应用程序,能够继续使用核心蓝牙执行长期操作(例如监视活动连接和挂起连接)是至关重要的。 所以,如果用户离家几天,并且iOS终止了应用程序,我们将不得不实施状态保存和恢复,以便iOS在检测到连接请求时重新启动应用程序,并让应用程序打开门。 相关报价: 在上述家庭安全应用的情况下,系统将监控连接请求,并且当用户返回家庭并且连接请求完成时,重新启动应用以处理centralManager:didConnectPeripheral:委托callback。 这一切都是有道理的,但请注意这一部分: 现在想象一下用户离家几天。 如果应用程序在用户离开时被系统终止,则当用户返回家时应用程序将不能重新连接到锁,并且用户可能无法解锁门。 对于像这样的应用程序,能够继续使用Core蓝牙执行长期操作是至关重要的。 这是否意味着,如果应用程序在用户离开家的某个时刻被用户强行杀死,那么这也会起作用吗? 意思是当用户回家时,门会解锁,或者他必须手动重新启动应用程序来解锁门? 我在问这个问题,因为终止应用的重新启动是如何工作的。 当用户杀死应用程序,并且当iOS杀死支持后台执行的应用程序时,情况就不一样了: 支持后台执行的应用程序可能会被系统重新启动以处理传入的事件。 如果某个应用程序由于用户强制退出而被终止,系统将在下列事件之一发生时启动应用程序… 资源 所以再一次,如果用户离开了几天,他已经closures了应用程序的双击主页button,并拖动,他将能够进入他的家,而无需手动重新启动应用程序?

TI Sensortag,如何使用button?

我正在与新的TI Sensortag合作 。 我试图做一个简单的iOS应用程序,读取这些button的状态。 我发现了很多关于使用Sensortag的传感器(湿度,红外温度,…)的指导,教程等,但没有人谈论他的顶部的button。 有没有人有关于他们的想法? 坦克你非常 REDA PS我正在使用iPhone 5

从iOS应用程序中检测附近的移动设备

是否有可能创build一个iOS应用程序,可以扫描附近的移动设备(例如iPhone,Android,iPad等),而无需在附近的移动设备上运行任何定制应用程序? 我已经尝试使用CoreBluetooth,就像在我的iPhone 6+上运行一样: [self.centralManager scanForPeripheralsWithServices:nil options:nil]; 但唯一附近的设备,它检测到我的iMac,它不会检测到我的iPad Air 2,或我的蓝牙耳机。 难道我做错了什么?

当BLE断开时,IOS CoreBluetooth:应用程序在后台运行

我试图在BLE断开连接的时候在后台运行我的应用程序,但是系统会在一段时间后终止应用程序。所以我读了苹果的文档 – “核心蓝牙编程指南”。最后我在“核心蓝牙后台处理的iOS应用程序“。 “在后台执行长期行动 某些应用程序可能需要使用Core Bluetooth框架在后台执行长期操作。 例如,假设您正在开发一款iOS设备的家庭安全应用程序,该应用程序与门锁(配备蓝牙低功耗技术)进行通信。 应用程序和锁相互作用,当用户离开家时自动锁住门,当用户返回时将其解锁 – 当应用程序在后台时。 当用户离开家时,iOS设备可能最终超出锁的范围,导致与锁的连接丢失。 此时,应用程序可以简单地调用CBCentralManager类的connectPeripheral:options:方法,并且因为连接请求不超时,所以iOS设备将在用户返回时重新连接。 现在想象一下用户离家几天。 如果应用程序在用户离开时被系统终止,则当用户返回家时应用程序将不能重新连接到锁,并且用户可能无法解锁门。 对于像这样的应用程序,能够继续使用Core蓝牙执行长期操作(例如监控活动和挂起的连接)至关重要。 从这一段我们知道,“监控活动和挂起的连接can solve the problem但我找不到任何方式来实现monitoring active and pending connections在 核心蓝牙框架参考 如何实现在BLE断开连接时让我的应用程序在后台运行? 有人有什么主意吗 ?

外围writeValue:forCharacteristic:types:返回空错误和值

我正在使用苹果公司编写的下面的代码。 https://developer.apple.com/library/mac/samplecode/HeartRateMonitor/Listings/HeartRateMonitor_HeartRateMonitorAppDelegate_m.html#//apple_ref/doc/uid/DTS40011322-HeartRateMonitor_HeartRateMonitorAppDelegate_m-DontLinkElementID_4 这是Apple写的writeValue部分 if ([aChar.UUID isEqual:[CBUUID UUIDWithString:@"2A39"]]) { uint8_t val = 1; NSData* valData = [NSData dataWithBytes:(void*)&val length:sizeof(val)]; [aPeripheral writeValue:valData forCharacteristic:aChar type:CBCharacteristicWriteWithResponse]; } 我加了didWriteValueForCharacteristic – (void) peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error { NSLog(@"Did write characteristic value : %@ with ID %@", characteristic.value, characteristic.UUID); NSLog(@"With error: %@", [error localizedDescription]); } 从didWriteValueForCharacteristic打印输出如下: Did write characteristic value […]

CoreBluetooth找不到设备,但iOS可以

我有一个蓝牙条形码扫描仪,其规格说它是蓝牙2.0,2级。这很奇怪,因为我的iPhone 5(iOS7)可以find并连接它。 我以为iOS只连接BLE设备。 但在我的应用程序,我无法扫描此设备。 我不知道这是否是因为它的蓝牙规格。 我希望有人可以给我一些关于如何使用CoreBluetooth或其他有效的库在我的应用程序连接这个设备的build议。 顺便说一下,我的代码是正确的,因为我可以在另一个iPhone上findLightBlue应用程序。 我的代码如下: // state is PowerOn [_centeralManager scanForPeripheralsWithServices:nil options:nil];