iOS 藍芽使用小結

2021-06-22 04:49:23 字數 4427 閱讀 4535

ios 藍芽使用小結 bluetooth

2014-03-05      收藏

首先推薦去看官方文件哦

最近做一專案,本來藍芽通訊這塊不是我負責的,但是負責這塊的同事要走,只好咬咬牙學習了。嗚嗚嗚。。。。。

現將建立藍芽工程的要點總結一下,由於工程主要涉及中心模式,所以只總結中心模式的用法

1,引入corebluetooth.framework

2,實現藍芽協議,如:

.h檔案如下

@protocol cbcentralmanagerdelegate;

@protocol cbperipheraldelegate;

@inte***ce viewcontroller : uiviewcontroller

.m檔案如下

#import "corebluetooth/corebluetooth.h"

另外還有**部分請自行新增

3,下面是使藍芽動起來的過程

3.1建立cbcentralmanager例項

self.cbcentralmgr = [[cbcentralmanager alloc] initwithdelegate:self queue:nil];

設定**,比如:

self.cbcentralmgr.delegate = self;

建立陣列管理外設

self.peripheralarray = [nsmutablearray array];

3.2掃瞄周圍的藍芽

實際上周圍的藍芽如果可被發現,則會一直往外傳送廣告訊息,中心裝置就是通過接收這些訊息來發現周圍的藍芽的

nsdictionary * dic = [nsdictionary dictionarywithobjectsandkeys:[nsnumber numberwithbool:false],cbcentralmanagerscanoptionallowduplicateskey, nil];

[self.cbcentralmgr scanforperipheralswithservices:nil options:dic];

3.3發現乙個藍芽裝置

也就是收到了乙個周圍的藍芽發來的廣告資訊,這是cbcentralmanager會通知**來處理

- (void)centralmanager:(cbcentralmanager *)central diddiscoverperipheral:(cbperipheral *)peripheral advertisementdata:(nsdictionary *)advertisementdata rssi:(nsnumber *)rssi

如果周圍的藍芽有多個,則這個方法會被呼叫多次,你可以通過tableview或其他的控制項把這些周圍的藍芽的資訊列印出來

3.4連線乙個藍芽

[self.cbcentralmgr connectperipheral:peripheral options:[nsdictionary dictionarywithobject:[nsnumber numberwithbool:yes] forkey:cbconnectperipheraloptionnotifyondisconnectionkey]];

乙個中心裝置可以同時連線多個周圍的藍芽裝置

當連線上某個藍芽之後,cbcentralmanager會通知**處理

- (void)centralmanager:(cbcentralmanager *)central didconnectperipheral:(cbperipheral *)peripheral

因為在後面我們要從外設藍芽那邊再獲取一些資訊,並與之通訊,這些過程會有一些事件可能要處理,所以要給這個外設設定**,比如:

peripheral.delegate = self;

3.5查詢藍芽服務

[peripheral discoverservices:nil];

返回的藍芽服務通知通過**實現

- (void)peripheral:(cbperipheral *)peripheral diddiscoverservices:(nserror *)error

for (cbservice* service in peripheral.services){

3.6查詢服務所帶的特徵值

[peripheral discovercharacteristics:nil forservice:service];

返回的藍芽特徵值通知通過**實現

- (void)peripheral:(cbperipheral *)peripheral diddiscovercharacteristicsforservice:(cbservice *)service error:(nserror *)error

for (cbcharacteristic * characteristic in service.characteristics) {

3.7給藍芽發資料

[peripheral writevalue:data forcharacteristic:characteristic type:cbcharacteristicwritewithresponse];

這時還會觸發乙個**事件

- (void)peripheral:(cbperipheral *)peripheral didwritevalueforcharacteristic:(cbcharacteristic *)characteristic error:(nserror *)error

3.8處理藍芽發過來的資料

- (void)peripheral:(cbperipheral *)peripheral didupdatevalueforcharacteristic:(cbcharacteristic *)characteristic error:(nserror *)error

3.9 retrieveperipheralswithidentifiers 使用例子

-(ibaction) retrieve:(id)sender

[self.tvlog settext:@""];

nsmutablearray * identifiers = [nsmutablearray array];

for (cbperipheral * peripheral in self.peripheralarray) {

[identifiers addobject:peripheral.identifier];

[self addlog:@"[self.cbcentralmgr retrieveperipheralswithidentifiers:self.peripheralidentifiers]"];

self.retrieveperipherals = [self.cbcentralmgr retrieveperipheralswithidentifiers:identifiers];

for (cbperipheral* peripheral in self.retrieveperipherals) {

[self addlog:[nsstring stringwithformat: @"%@ name:%@",peripheral,peripheral.name]];

[self.tableviewperipheral reloaddata];

3.10 retrieveconnectedperipheralswithservices 使用例子

-(ibaction) retrieve:(id)sender

[self.tvlog settext:@""];

nsmutablearray * services = [nsmutablearray array];

for (cbperipheral * peripheral in self.peripheralarray) {

if (peripheral.isconnected) {

for (cbservice *service in peripheral.services) {

[services addobject:service.uuid];

[self addlog:@"[self.cbcentralmgr retrieveconnectedperipheralswithservices:peripheral.services]"];

self.retrieveperipherals = [self.cbcentralmgr retrieveconnectedperipheralswithservices:services];

for (cbperipheral* peripheral in self.retrieveperipherals) {

[self addlog:[nsstring stringwithformat: @"%@ name:%@",peripheral,peripheral.name]];

[self.tableviewperipheral reloaddata];

大概就這個個流程,例子中的引數設定,及其其他的一些**請自己研究,因為我也是剛入門

iOS 藍芽使用小結 bluetooth

ios 藍芽使用小結 bluetooth 首先推薦去看官方文件哦 最近做一專案,本來藍芽通訊這塊不是我負責的,但是負責這塊的同事要走,只好咬咬牙學習了。嗚嗚嗚。現將建立藍芽工程的要點總結一下,由於工程主要涉及中心模式,所以只總結中心模式的用法 1,引入corebluetooth.framework ...

iOS藍芽學習

在ios中提供4個框架用於藍芽的連線 gamekit.framework 只能用於ios裝置之間連線,且是同乙個應用。ios7之前一般使用這個 multipeerconnectivity.framework 只能用於ios裝置之間連線,且是同乙個應用。ios7之後使用這個來代替gamekit.fra...

ios 藍芽簡介

這裡主要做個記錄。ios中其實提供了四個框架可以讓我們去實現藍芽連線 其中gamekit框架是在ios7的時候過期了,之前常用於遊戲的連線,gamekit框架可以使用藍芽在玩家之間建立乙個對等連線,然後彼此之間可以對戰,蘋果取而代之的是multipeerconnectivity,這兩個框架都只能用於...