2012-09-26 60 views

回答

2

你必須自己寫,遊戲中心沒有方法允許聊天。

+0

發送到遊戲中心的數據中發送的數據中包含的小文本信息是不可能的,該數據代表玩家轉向? – Phil

+0

沒錯,沒有內置任何東西,大多數情況下您都是自己爲自己推出自己的代碼。有用的鏈接:https://developer.apple.com/library/ios/#DOCUMENTATION/GameKit/Reference/GameKit_Collection/_index.html – nycynik

1

您可以在遊戲過程中以普通數據的形式發送文本。爲了做到這一點

方法準備要發送的數據

-(void)sendText:(NSString *) text { 

    NSString * text2Send = [NSString stringWithFormat:@"%@", text]; 
    [self sendData:[text2Send dataUsingEncoding:NSUTF8StringEncoding]]; 
} 

的發送數據的方法將是正常的數據發送遊戲中心的方法

- (BOOL)sendDataToAllPlayers:(NSData *)data withDataMode:(GKMatchSendDataMode)mode error:(NSError **)error; 

,爲了解決收到的數據

NSString * rawText = [[NSString alloc] initWithBytes:[data bytes] length:[data length] encoding:NSUTF8StringEncoding]; 

if(rawText.length > 0) 
{ 
    //Do what ever you want with the text 
} 
0

就像已經提出的,你可以使用GKTurnBasedMatchmatchData。如果您的遊戲是基於回合的,則可以有兩種遊戲數據消息類型:一種用於在每位玩家輪到末端發送遊戲數據,另一種用於發送聊天消息。或者您可以將它們組合起來,以便在每位玩家輪到她時發送消息。但是,如果您只使用matchData發送聊天消息,請確保它不會結束玩家的遊戲,否則您將遇到遊戲同步問題。用於發送消息的方法saveCurrentTurnWithMatchData:completionHandler:;另一方面,GameKit會在你接收到消息時調用你的回調 - 你應該閱讀更新的matchData,看看它是一個消息還是遊戲狀態更新 - 如果你使用JSON或XML或NSDictionary序列化來發送數據,這是相對容易的來回 - 你可以在那裏引入dataType屬性,這會讓你區分短信和遊戲狀態更新。

還有一個選項可以改變match.message的內容,但是如果你在那裏輸入你的短消息,那麼只有當他們收到來自GameCenter的'輪到'通知時,對手纔會看到它。