Tag: 蓝牙低功耗

从iBeacon实时切换到BLE?

我们的信标硬件被编程为iBeacon +可写BLE。 所以我可以用iBeacon发现它,并通过BLE连接到它。 我想扫描iBeacon,当我进入区域(应用程序在后台),并且正在调用代理时,他将切换到BLE并使用BLE连接到设备: – (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region { // here connect as usual via bluetooth } 所以,正如我所说,我可以单独编写/发现硬件,但是当我试图连接到模块,从委托通过BLE(当应用程序在背景中,我进入该地区,委托是在后台尝试与BLE连接,它不工作,虽然我可以在后台做一些区域内的其他事情,例如,连接到服务器。) 有什么我可以做到这一点吗? 我也试图停止灯塔区域监视,但即使如此,他也无法从背景连接到BLE。

似乎无法得到核心蓝牙的工作

我似乎无法获得核心蓝牙在我的iPad上工作。 ViewController.h @interface ViewController : UIViewController <CBCentralManagerDelegate, CBPeripheralDelegate> { CBCentralManager *manager; } @end ViewController.m #import "ViewController.h" @interface ViewController () @property (strong, nonatomic) IBOutlet UITextView *textField; @end @implementation ViewController @synthesize textField; – (void)viewDidLoad { [super viewDidLoad]; manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil]; } – (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be […]

核心蓝牙LE和古典在iOS

我正在研究核心蓝牙。 我有任何问题,请帮我解释一下这个问题: 酷睿蓝牙LE和古典有什么区别? 我可以实现核心蓝牙LE连接其他iOS设备? UUID用于? 如何获得设备的UUID? 现在,我需要实现应用程序允许连接计数步设备,并从中获取数据。 我怎样才能做到这一点? 该设备使用蓝牙LE。 如果可以的话,你可以给我看教程或示例代码? 非常感谢。

只有广告数据与连接BLE设备的优势

假设我有一个外设正在将数据编码到其UUID中。 中央扫描看到这个UUID,知道把hex的UUID变成十进制,从那里取出一些数字,如前4个,后6个,后4个。它有一定的function把这些数字。 这是否有任何优势,而不是连接到中央设备,然后只是交易信息。 会更快吗? 当你考虑多个中心时呢?

如何解决CBPeripheralManager的传输队列已满?

CBPeripheralManager的方法有问题。 – (BOOL)updateValue:(NSData *)value forCharacteristic:(CBMutableCharacteristic *)characteristic onSubscribedCentrals:(NSArray *)centrals 根据Apple documentation ,如果可以发送更新,则返回YES如果底层发送队列已满,则返回NO 。 我得到了NO 。 我应该如何解决这个问题?

BLE:使用Android / iOS阅读长篇特征值

具有正常特性只读取MTU大小(20字节)的数据将被读取。 我的客户将提供更大尺寸(大约100字节)的特性。 我看到BLE提供了一个“长读”function,直到达到特征的大小。 ( https://bluegiga.zendesk.com/entries/25053373–REFERENCE-BLE-master-slave-GATT-client-server-and-data-RX-TX-basics ) attclient_read_long命令 – 启动客户端首次向服务器发送正常读取请求的过程,如果服务器返回长度等于BLE MTU(22个字节)的属性值,则客户端继续发送“读取长”请求直到读取其余的属性。 这仅适用于读取长度超过22个字节的属性。 为简单起见,构build您的GATT服务器通常比较简单,因此不存在长属性。 请注意,BLE协议仍然要求数据打包到最大。 22字节的块,所以使用“读取长”不会节省传输时间。 但是我怎样才能在Android中使用这个function呢? BluetoothGatt类只提供一个简单的“Read()” – 与iOS相同。 增加MTU是不可能的,因为我们需要支持AP Level <21的设备(在API 21增加了MTU)

BLE在后台

我正在使用iBeacon开展一个项目,要求应用程序在后台不断运行。 没关系这个的实用性,请。 iBeacon API不允许应用程序在不同的背景范围内,或者接收除了进入/退出事件以外的任何其他通信(在设置needsDisplay标志的情况下接受,但这不是我所需要的被动方式)。 一旦进入特定区域,似乎无法检测到应用程序完全背景的情况下您最接近哪个信标。 为了破解这个工作,我build立了一些iOS设备作为CoreBluetooth外围设备,插入,并始终保持应用程序可以不断“发现”。 由于用于外围设备的BLEconfiguration文件是“可连接的”,因此应用程序可以在后台无限期地保持,而iBeacon范围可能全天都在。 为了启动,我已经看到了非常短的电池寿命减less。 现在的问题是,隔天左右,应用程序退出并没有被进入/退出事件唤醒,也没有被其他BLE设备在范围内唤醒。 我明白,用这样的解决办法,肯定会有无数的问题,但是对于我来说,我无法缩小可能造成这种情况的因素。 思考?

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

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

如何在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 }; […]

Swift获取decimal.value的特性

我尝试使用Swift 3在Xcode中创build一个小型的iOS应用程序。我尝试连接到一个BLE设备,然后读取电池电量。 我得到这个回应: … UUID =电池电量,属性= 0x12,值= <30​​> … 然后我尝试将HEX 30转换为十进制数字48.但是我不知道如何。 我试过这个: print(String(bytes: characteristic.value!, encoding: String.Encoding.utf8)) print(Int(strtoul(str, nil, 16))) let dataBLE = String(data: characteristic.value!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) print(dataBLE) 但是这些工作都没有。 我怎样才能从hex转换为十进制的值来自characteristic.value ?