麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

CoreBluetooth-外圍模式

2019-11-11 07:46:28
字體:
供稿:網(wǎng)友

這里只能介紹下外圍模式開發(fā)的一般流程了,沒經(jīng)歷過具體項目的洗禮,具體的坑點沒接觸到,以后如果有機(jī)會再加以補(bǔ)充。

一般流程模式

1.打開peripheralManager,設(shè)置peripheralManager的代理

2.創(chuàng)建characteristics,characteristics的PRoperties 創(chuàng)建service,把characteristics添加到service中,再把service添加到peripheralManager中

3.開啟廣播advertising

4.對central的操作進(jìn)行響應(yīng)

4.1 讀characteristics請求4.2 寫characteristics請求4.3 訂閱和取消訂閱characteristics

代碼流程

1.準(zhǔn)備工作,引入頭文件和代理

#import <CoreBluetooth/CoreBluetooth.h>@interface ViewController ()<CBPeripheralManagerDelegate>@property (nonatomic,strong) CBPeripheralManager * perManager;@end

2.打開peripheralManager,設(shè)置peripheralManager的代理

_perManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];/* 會自動回調(diào)方法 - (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral;只有在peripheral.state == CBManagerStatePoweredOn的狀態(tài)下創(chuàng)建characteristics 和 service才有用*/

3.創(chuàng)建characteristics,characteristics的description 創(chuàng)建service,把characteristics添加到service中,再把service添加到peripheralManager中

- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral{ if (peripheral.state == CBManagerStatePoweredOn) { //服務(wù) uuid換成自己的 CBUUID * serviceUUID = [CBUUID UUIDWithString:@"1111"]; CBMutableService * service = [[CBMutableService alloc] initWithType:serviceUUID primary:YES]; /*特征值 uuid換成自己的 properties也換成自己的,這里設(shè)置成可讀、可寫、廣播*/ CBUUID * characteristicUUID = [CBUUID UUIDWithString:@"2222"]; CBCharacteristic * characteristic = [[CBMutableCharacteristic alloc] initWithType:characteristicUUID properties:(CBCharacteristicPropertyRead|CBCharacteristicPropertyWrite|CBCharacteristicPropertyNotify) value:nil permissions:CBAttributePermissionsReadable]; //特征值加入到服務(wù) service.characteristics = @[characteristic]; /*注冊服務(wù) 注冊成功后的服務(wù)才能廣播 注冊后會自動回調(diào)方法 - (void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(nullable NSError *)error; */ [_perManager addService:service]; }}

4.開啟廣播advertising 。 調(diào)用方法- (void)startAdvertising:(nullable NSDictionary < NSString *, id > *)advertisementData;來開啟廣播, 參數(shù)可選: CBAdvertisementDataLocalNameKey CBAdvertisementDataTxPowerLevelKey CBAdvertisementDataServiceUUIDsKey CBAdvertisementDataServiceDataKey CBAdvertisementDataManufacturerDataKey CBAdvertisementDataOverflowServiceUUIDsKey CBAdvertisementDataIsConnectable CBAdvertisementDataSolicitedServiceUUIDsKey

- (void)peripheralManager:(CBPeripheralManager *)peripheral didAddService:(CBService *)service error:(NSError *)error{ //開啟廣播服務(wù) [_perManager startAdvertising:@{CBAdvertisementDataServiceUUIDsKey:[CBUUID UUIDWithString:@"1111"]}];}//開啟廣播的回調(diào)- (void)peripheralManagerDidStartAdvertising:(CBPeripheralManager *)peripheral error:(NSError *)error {}

5.1 讀characteristics請求

// 讀數(shù)據(jù)請求- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveReadRequest:(CBATTRequest *)request { //請求的響應(yīng) NSData *data = request.characteristic.value; //center想讀取的數(shù)據(jù) [request setValue:data]; [_perManager respondToRequest:request withResult:CBATTErrorSuccess];}

5.2 寫characteristics請求

//寫數(shù)據(jù)請求- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray<CBATTRequest *> *)requests { //請求的響應(yīng) //需要轉(zhuǎn)換成CBMutableCharacteristic對象才能進(jìn)行寫值 CBMutableCharacteristic *c =(CBMutableCharacteristic *)request.characteristic; c.value = request.value; [_perManager respondToRequest:[requests firstObject] withResult:CBATTErrorSuccess];}

5.3 訂閱和取消訂閱characteristics

//訂閱characteristics-(void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didSubscribeToCharacteristic:(CBCharacteristic *)characteristic{ NSLog(@"訂閱了 %@的數(shù)據(jù)",characteristic.UUID); //每秒執(zhí)行一次給主設(shè)備發(fā)送一個當(dāng)前時間的秒數(shù) timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(sendData:) userInfo:characteristic repeats:YES];}//取消訂閱characteristics-(void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didUnsubscribeFromCharacteristic:(CBCharacteristic *)characteristic{ NSLog(@"取消訂閱 %@的數(shù)據(jù)",characteristic.UUID); //取消回應(yīng) [timer invalidate];}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久草热久 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 欧美日韩大片在线观看 | 中文字幕极速在线观看 | 欧美一区二区黄色 | 国产精品区一区二区三区 | 亚洲福利在线视频 | 欧美成年人在线视频 | 孕妇体内谢精满日本电影 | 九九热免费视频在线观看 | 国产精品一区久久久久 | 成人一级黄色片 | 午夜视频亚洲 | 欧美一级黄色片在线观看 | 国产二区三区在线播放 | 国产精品成人免费一区久久羞羞 | 欧美精品一二三区 | 欧美日韩一区,二区,三区,久久精品 | 黄色影院在线看 | 蜜桃视频在线免费观看 | 精品国产久| 韩国精品久久久 | 欧美在线中文字幕 | 中文字幕在线观看网址 | 女人裸体让男人桶全过程 | 欧美顶级毛片在线播放小说 | 成人毛片网 | 欧美日韩一区,二区,三区,久久精品 | 在线播放亚洲精品 | 亚洲欧美日韩久久精品第一区 | 亚洲va久久久噜噜噜久久男同 | 久草成人在线观看 | 最新久久免费视频 | 爽爽视频免费看 | 销魂美女一区二区 | 男女无套免费视频 | 精国产品一区二区三区 | 久草最新网址 | 国产99久久久久久免费看农村 | 717影院理论午夜伦八戒秦先生 | videos高潮 |