2012-06-05 29 views
0

我想在不使用GKPeerPickerController的情況下實現GameKit連接。我需要的是建立WiFi連接,而不是藍牙。爲什麼GKSession在設備上運行時總是試圖使用藍牙,而不是在模擬器上?

這是我如何做到這一點

self.gameSession = [[GKSession alloc] initWithSessionID:@"test" displayName:nil sessionMode:GKSessionModePeer]; 
self.gameSession.available = YES; 
self.gameSession.delegate = self; 
self.gameSession.disconnectTimeout = 0; 
[self.gameSession setDataReceiveHandler:self withContext:nil]; 

我的問題是,設備總是試圖通過藍牙連接。至少我認爲如此會導致以下總是出現在控制檯

BTM:連接到BTServer

即使我關閉藍牙它總是試圖對付藍牙,wifi的不是。此外 - 如果藍牙開啓 - 如果我不使用GKPeerPickerController,則設備永遠不會看到對方。 另外,模擬器從不嘗試尋找藍牙,並且總是能夠建立wifi連接並輕鬆找到任何設備。我如何讓GKSession選擇WiFi連接?

回答

0

可能是您與越獄設備出現問題,

GKSession和GKSessionDelegate實現同時適用於藍牙和WiFi。

這兩個類檢查WiFi和藍牙,並選擇適合的傳輸介質。

如果你的iPhone是越獄,則可能是用藍牙或WiFi的一些問題,同時連接在這些傳輸介質,並且還可能是防止妥善的GameKit工作。

而且還嘗試在委託方法使用

picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline 

檢查與條件

if (type == GKPeerPickerConnectionTypeOnline) { 
} 

更新:

請參考蘋果的這個示例代碼.. https://developer.apple.com/library/ios/#samplecode/GKTapper/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010283

+0

謝謝非常多的答案。我使用的不是越獄設備。我的目標是建立連接而不使用GKPeerPickerController。我已經嘗試過GKPeerPickerController,特別是你提供的代碼段,但不幸的是它不起作用。你有沒有嘗試過使用沒有GKPeerPickerController的GKSession? –

+0

沒有隊友,我沒有使用它沒有GKPeerPickerController ..而你爲什麼不喜歡GKPeerPickerController? –

+0

因爲我需要建立WiFi連接 –

相關問題