iOS開發 GameKit藍芽開發

2021-07-06 04:11:10 字數 4049 閱讀 1440

藍芽4.0是2023年最新藍芽版本,是3.0的公升級版本;較3.0版本更省電、成本低、3毫秒低延遲、超長有效連線距離、aes-128加密等;通常用在藍芽耳機、藍芽音箱等裝置上。

藍芽技術聯盟(bluetooth sig)2023年7月7日宣布,正式採納藍芽4.0核心規範(bluetooth core specification version 4.0 ),並啟動對應的認證計畫。會員廠商可以提交其產品進行測試,通過後將獲得藍芽4.0標準認證。 該技術擁有極低的執行和待機功耗,使用一粒鈕扣電池甚至可連續工作數年之久。

ios中提供了4個框架用於實現藍芽連線

gamekit.framework(用法簡單)

只能用於ios裝置之間的連線,多用於遊戲(比如五子棋對戰),從ios7開始過期

multipeerconnectivity.framework

只能用於ios裝置之間的連線,從ios7開始引入,主要用於檔案共享(僅限於沙盒的檔案)

externalaccessory.framework

可用於第三方藍芽裝置互動,但是藍芽裝置必須經過蘋果mfi認證(國內較少)

corebluetooth.framework(時下熱門)

可用於第三方藍芽裝置互動,必須要支援藍芽4.0

硬體至少是4s,系統至少是ios6

藍芽4.0以低功耗著稱,一般也叫ble(bluetooth low energy)

目前應用比較多的案例:運動手壞、嵌入式裝置、智慧型家居

使用gamekit框架,可以在遊戲中增加對等連線,又稱對端連線或點對點連線,peer to peer。

使用gamekit框架中的對等網路連線api,可以在遊戲玩家之間建立乙個對等網路,並在遊戲/應用例項之間交換資料。

gamekit框架可以使用藍芽在玩家之間建立網路,玩家甚至不需要連線到網際網路,就可以彼此對戰。

為玩家雙方呈現乙個gkpeerpickercontroller,提供了乙個標準的使用者介面連線兩台裝置

viewcontrooler遵循gkpeerpickercontrollerdelegate協議,處理來自gkpeerpickercontroller(對端選擇器)的資訊

建立連線後,使用gksession類可以向對端裝置傳送資料

在receivedata:frompeer:insession:context**方法中編寫**來處理接收到的資料

//傳送資料方法

[_peersession senddatatoallpeers:data withdatamode:gksenddatareliable error:&error];

//接收資料方法

- (void)receivedata:(nsdata *)data frompeer:(nsstring *)peer insession: (gksession *)session context:(void *)context;

如果要通過網路傳送自定義物件,需要使用nskeyedarchiver方法歸檔自定義物件,然後再傳送歸檔後的nsdata

自定義物件需要遵從nscoding協議,並實現相應的歸檔和恢復方法

接收端接收到資料之後,使用nskeyedunarchiver方法恢復資料

//顯示可以連線的藍芽裝置列表

gkpeerpickercontroller *ppc = [[gkpeerpickercontroller alloc] init];

ppc.delegate = self;

[ppc show];

//在**方法中監控藍芽的連線

- (void)peerpickercontroller:(gkpeerpickercontroller *)picker didconnectpeer:(nsstring *)peerid tosession:(gksession *)session

//處理接收到的藍芽資料

- (void) receivedata:(nsdata *)data frompeer:(nsstring *)peer insession: (gksession *)session context:(void *)context

利用gksession給其他裝置傳送資料

//給指定的連線裝置傳送資料

- (bool)senddata:(nsdata *) data topeers:(nsarray *)peers withdatamode:(gksenddatamode)mode error:(nserror **)error;

//給所有連線的裝置傳送資料

- (bool)senddatatoallpeers:(nsdata *) data withdatamode:(gksenddatamode)mode error:(nserror **)error;

只能用於ios裝置之間的連線

只能用於同乙個應用程式之間的連線

最好別利用藍芽傳送比較大的資料

#import

"viewcontroller.h"

#include @inte***ce viewcontroller ()/**

* 連線

*/- (ibaction)connect;

/** * 選擇

*/- (ibaction)selectedphoto;

/** * 傳送

*/- (ibaction)send;

@property (weak, nonatomic) iboutlet uiimageview *customiv;

/** * 會話

*/@property (nonatomic, strong) gksession *session;

@end

@implementation viewcontroller

- (void)viewdidload

- (ibaction)connect

#pragma mark - gkpeerpickercontrollerdelegate

// 4.實現dialing方法

/** * 當藍芽裝置連線成功就會呼叫

* * @param picker 觸發時間的控制器

* @param peerid 連線藍芽裝置的id

* @param session 連線藍芽的會話(可用通訊), 以後只要拿到session就可以傳輸資料

*/- (void)peerpickercontroller:(gkpeerpickercontroller *)picker didconnectpeer:(nsstring *)peerid tosession:(gksession *)session

/** * 接收到其它裝置傳遞過來的資料就會呼叫

* * @param data 傳遞過來的資料

* @param peer 傳遞資料裝置的id

* @param session 會話

* @param context 註冊監聽時傳遞的資料

iOS 藍芽的GameKit用法

ibaction buildconnect id sender pragma mark gkpeerpickercontrollerdelegate 連線成功就會呼叫 void peerpickercontroller gkpeerpickercontroller picker 彈窗 didconn...

iOS開發拓展篇 藍芽之GameKit使用

初始化鏈結藍芽控制器 gkpeerpickercontroller peerctr gkpeerpickercontroller alloc init 顯示匹配到的藍芽裝置 peerctr show 鏈結成功 param picker 藍芽控制器 param peerid 連線藍芽的裝置id par...

iOS藍芽開發

直接看 首先推薦去看官方文件哦 現將建立藍芽工程的要點總結一下,由於工程主要涉及中心模式,所以只總結中心模式的用法 1,引入corebluetooth.framework 2,實現藍芽協議,如 h檔案如下 protocol cbcentralmanagerdelegate protocol cbpe...