Pankia wiki ~Match~
Pankiaにはオフライン対戦とオンライン対戦があります。
//データの送信 + (void)sendData:(NSData *)data toUser:(NSString *)user reliable:(BOOL)reliable; + (void)sendDataToAllUsers:(NSData *)data reliable:(BOOL)reliable; //対戦開始からの経過時間 + (double)timeElapsedOnCurrentMatch; + (double)timeElasped __deprecated; //対戦終了 2種類の説明は後述 + (void)finishMatchWithResult:(PNMatchResult *)result onSuccess:(void (^)(void))onSuccess onFailure:(void (^)(NSError *error))onFailure; + (void)endMatch; //再戦 + (void)waitForRematch:(int)timeout; //対戦人数設定 + (void)setInternetMatchMinRoomMember:(int)minMember; + (void)setInternetMatchMaxRoomMember:(int)maxMember; + (void)setLocalMatchMinRoomMember:(int)minMember; + (void)setLocalMatchMaxRoomMember:(int)maxMember;
対戦のときはさまざまな場合で呼ばれるメソッドが多くあります。
//対戦開始時 - (void)matchDidBegin:(PNMatchSession *)session; //データ受信時 - (void)matchDidReceiveData:(NSData *)data fromUser:(NSString *)user; //対戦相手の切断検知時 - (void)matchDidDisconnectWithUser:(NSString *)user; //対戦終了時 - (void)matchDidFinish; - (void)matchDidEnd;
データ送信時NSData *にNSArray *型やNSString *型を変換して送信するのがよいかと思います。また, reliableをYESにするとデータの送信に失敗しても再送するため信頼度はあがります。リアルタイムを重視するならNOがいいと思います。
対戦終了はにfinish系とend系がありますが,finish系は対戦は終了し,結果も送信するが通信は終了されず,その後再戦もできる。end系は通信を終了するものなので普通に終了したい場合はfinishしたあとendする。
対戦開始時に受け取るPNMatchSession *から対戦情報を得る事が出来ます
@interface PNMatchSession : NSObject @property (nonatomic, readonly) NSArray *members; @property (nonatomic, readonly) int selfIndex; @property (nonatomic, readonly) int lobbyId; @property (nonatomic, readonly) BOOL isInternetMatch;