2013-02-21 27 views
0

使用GKPeerPickerController我可以通過bluetogether一起輕鬆連接兩個ios設備,但它只能在GKSessionModePeer模式下使用。如何在GKSessionModeServer/GKSessionModeClient模型中找到並連接設備

我使用的代碼GKSessionModeServer模式

GKSession *session=[[GKSession alloc] initWithSessionID:nil displayName:nil sessionMode:GKSessionModeServer]; 
session.delegate = self; 
session.available = YES; 
// Set data handler. 
[session setDataReceiveHandler:self withContext:nil]; 

而這種代碼GKSessionModeClient模式在其他設備

GKSession *session=[[GKSession alloc] initWithSessionID:nil displayName:nil sessionMode:GKSessionModeClient]; 
session.delegate = self; 
session.available = YES; 
// Set data handler. 
[session setDataReceiveHandler:self withContext:nil]; 

創建會話當我設置session.available =YES創建會議上,一些delegate方法應該是叫。但沒有發生。爲什麼?

如何找到其他使用api的設備並將它們連接在一起? 或者任何其他方法可以通過藍牙傳輸數據?

+0

您可能想嘗試使用'GKSessionModePeer',而且您確定兩個應用程序具有相同的包ID?他們運行着不同的代碼,這看起來有點奇怪。 – 2013-02-22 22:20:40

回答

0

最後我解決它。當我設置session.available = YES,它會尋找其他會話,方法:

- (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKPeerConnectionState)state 

將被調用。

您在搜索時不能釋放會話!