GameKit主要是完成聯網的相關功能,包括藍牙和Internet兩種方式。使用方法是:選擇你的工程,TARGETS 裡面有Build Phases ,再選擇Link Binary With Libraries 加號後可以選擇要添加的框架。遊戲聯網模塊選擇GameKit framework.
在頭文件中包含必要的庫頭文件:#import <GameKit/GameKit.h>
另外需要兩個協議: <GKPeerPickerControllerDelegate, GKSessionDelegate>,前者是用來觸發網絡查找模塊的標準控件(窗口),後者是處理鏈接會話session的。
GKPeerPickerControllerDelegate 一般有三個方法需要實現:
-(GKSession *) peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type;
-(void) peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session;
-(void) peerPickerControllerDidCancel:(GKPeerPickerController *)picker;
觸發產生網絡查找窗口的方法:
GKPeerPickerController *picker = [[GKPeerPickerController alloc] init];
picker.delegate = self;
picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
[picker show];
執行時,應該會有如下窗口:
發現設備後,應該時如下的樣子:
聯接成功後,會有新的session的產生。對於session的引用,主要是這兩個方法。
- (void) receiveData:(NSData *)data fromPeer:(NSString *) peerID inSession: (GKSession *)session context: (void *)context
-(void) session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state
根據函數名字可以看出來,一個是用來控制收數據的,一個使用來處理聯接狀態發生變化的。發送數據的時候,是使用:
[mySession sendDataToAllPeers: message withDataMode:GKSendDataReliable error:&sendErr];
由於當前還沒有完成調試和功能驗證,所以在此先就一些理論性的東西做一點介紹。
沒有留言:
張貼留言