2013-03-02 26 views
1

出於某種原因,當iOS的通知方式通知的實時匹配(消息,報警等)過程中彈出,比賽停止接收來自對手的數據。該應用程序本身的功能,但玩家之間沒有數據傳輸。警報風格iOS的通知(如消息)使實時的Game Center比賽停止接收消息

的委託不從match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)stateauthenticationChanged接收回調,所以看來,球員都仍然連接到比賽。

出現此問題的用戶是否退出了警報風格通知,或將其打開。

爲什麼/這是怎麼發生的事情,我怎麼能防止/恢復它有什麼想法?

回答

1

經過數小時的調試,研究和挫折,我遇到了我的問題。

由於斷開連接,並主動辭職,可能的事件與移動設備&遊戲中心,我使用的是數據隊列發送消息。它通過將當前消息堆疊在隊列上(並且如果它是唯一消息發送消息)並且貫穿以下數據傳輸步驟來工作:1)發送隊列中最舊的消息,2)等待對方接收確認,3)移除最老的消息從隊列中的消息,4)如果隊列數仍然> 0,隊列發送最早的消息...

對於某些數據類型,但是,我們要繞過隊列,而不是索要收據確認。一個這樣的情況是當我們向對方發送有關應用程序通知UIApplicationWillResignActiveNotificationUIApplicationDidBecomeActiveNotification的消息時。但是,即使郵件沒有要求收到確認,我忘了繞過隊列。由於對手從未發送回執確認,所以UIApplicationWillResignActiveNotification消息無限期地阻塞了隊列。

我適當地繞過了隊列和遊戲現在恢復沒有問題。如果有人想看到實際的代碼,我會很樂意分享。