iOS 蓝牙开发中数据收发的坑
1.iOS藍牙開發中,遇到藍牙連接正常,但是數據怎么都發不出去時,查看代理方法,查看數據是否發送成功,如下:
-(void)peripheral:(CBPeripheral *)peripheral didWriteValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{
? ? if (error) {
? ? ? ? NSLog(@"寫入數據失敗:(%@)\n error:%@",characteristic,error.userInfo);
? ? ? ? // 這里用withResponse如果報錯:"Writing is not permitted."說明設備不允許寫入,這個時候要用 WithoutResponse
? ? ? ? // 使用 WithoutResponse的時候,不走這個代理。
? ? ? ? return;
? ? }
? ? NSLog(@"寫入數據成功:%@",characteristic);
? ? [peripheral readValueForCharacteristic:characteristic];
}
a.當提示 “Writing is not permitted.”可以查看發送數據方法
- (void)writeValue:(NSData *)data forCharacteristic:(CBCharacteristic *)characteristic type:(CBCharacteristicWriteType)type
中的CBCharacteristicWriteType用的是CBCharacteristicWriteWithResponse或者CBCharacteristicWriteWithoutResponse,如果硬件定義寫入的特征允許寫入,則用CBCharacteristicWriteWithResponse,如果硬件定義寫入的特征不允許寫入,此時用CBCharacteristicWriteWithResponse將會有上面的錯誤提示,且寫入數據也會失敗;此時應該用CBCharacteristicWriteWithoutResponse,而如果是使用CBCharacteristicWriteWithoutResponse寫入的,不走以上代理;
b.當沒有任何提示,數據就是不能發送出去,可以查看peripheral和對應的characteristic和服務是不是一一對應的;
后臺通信
IOS BLE開發過程中發現程序進入后臺后,BLE無法發送和接收信息。
解決方法如下:
1.在info.Plist里添加Required background modes選項
2.在并Required background modes選項下添加關于藍牙數據傳輸a、b兩項
a.App shares data using CoreBluetooth
b.App communicates using CoreBluetooth
————————————————
版權聲明:本文為CSDN博主「豪哥爬坑記」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_39848087/article/details/103403348
總結
以上是生活随笔為你收集整理的iOS 蓝牙开发中数据收发的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法竞赛入门经典(第二版) 答案汇总(持
- 下一篇: Doc2Bow简介与实践Demo