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