簡體   English   中英

如何在玩家從GKTurnBasedMatchmakerViewController“刪除”正在進行的匹配時收到通知

[英]How to get notified when a player “Remove” a match in progress from GKTurnBasedMatchmakerViewController

我正在使用默認的GKTurnBasedMatchmakerViewController 玩家可以通過將匹配單元向左滑動然后點擊紅色的“刪除”按鈕來“刪除”正在進行的匹配。 但這並沒有通知其他玩家第一個已經移除(並退出)該匹配。 另一個繼續等待另一名球員加入比賽並轉彎。 但這違背了我游戲的邏輯。 我想在任何球員退出比賽或將其移除后立即結束比賽。 有沒有辦法接受任何類型的回調或為想要刪除比賽的玩家設置matchOutcome 感謝幫助。

這一直是GKTurnBasedMatches 匹配可以在游戲之外,通過匹配器視圖控制器和(在<= IOS9中)Game Center應用程序更新,經常創建不可恢復的場景。

播放器滑動刪除匹配描述使用相同的問題(但引用現已刪除的游戲中心應用程序)作為漏洞,以避免招致損失。 我在那里發布了部分解決方案,類似的方法也有助於緩解您的情況:

  1. 只要您收到邀請,加入匹配或創建匹配,就會在本地存儲matchID。
  2. 當游戲開始時,調用loadMatchesWithCompletionHandler來拉出本地玩家知道的所有匹配。 本地播放器在您的應用程序“外部”刪除的匹配項將從服務器列表中(適當地)丟失。
  3. 即使他們從列表中刪除了匹配項,他們仍然可以使用loadMatchWithID加載特定匹配loadMatchWithID 因此,對於每個“缺失”匹配,使用您在本地存儲的matchID調用loadMatchWithID ,獲取匹配對象,然后根據玩家在已刪除匹配中的狀態調用participantQuitInTurnWithOutcomeparticipantQuitOutOfTurnWithOutcomedeclineInviteWithCompletionHandler
  4. 退出/拒絕將發送通知和/或將轉彎傳遞給其他玩家。

雖然不理想,但只要“刪除者”再次啟動游戲,您就有機會評估所有游戲並強制從他們刪除的匹配中徹底退出。 調用任一participantQuit功能將發送通知(和/或通過轉)到其他玩家。

但是,如果“刪除者”從未再次開始游戲,這種解決方法將無效。 在那種情況下,如果他們在一些設定的時間間隔后沒有看到任何進展,那么所有其他玩家可以做的最終是自己離開比賽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM