在iOS 6中使用authenticateHandler時,如果用戶取消登錄視圖,遊戲中心將不會顯示登錄視圖。我意識到遊戲中心會在3次取消嘗試後自動鎖定應用程序,但我只談論2次嘗試。如果他們取消登錄,他們必須離開應用程序,然後在遊戲中心將顯示登錄,即使通過authenticateHandler重新設置。關於如何在iOS 6中處理這種情況的任何想法?iOS 6 Game Center authenticateHandler取消後無法登錄
它使用的是舊authenticateWithCompletionHandler方法時正常工作:
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0
GKLocalPlayer.localPlayer.authenticateHandler = authenticateLocalPlayerCompleteExtended;
#else
[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:authenticateLocalPlayerComplete];
#endif
的原因,這是我的應用程序重要的是,它需要多玩家遊戲中心。該應用程序會在啓動時嘗試向遊戲中心進行身份驗證,但如果用戶取消,我們不會再次啓動,因此他們不會感到嘮叨。如果他們在選擇多人遊戲時沒有登錄,我們所做的就是顯示一個Game Center登錄按鈕。登錄按鈕通過調用authenticateWithCompletionHandler強制遊戲中心登錄(現在通過再次設置GKLocalPlayer.localPlayer.authenticateHandler)。
聽起來你已經這麼做了,但調用[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:nil]將導致authenticateHandler再次被認證視圖控制器調用。儘管在iOS6中,此方法已棄用。 – Greg
我正在使用折舊呼叫來使此工作,但我正在尋找「正確」的方式來做到這一點,而不使用過時的呼叫。我嘗試設置新的GKLocalPlayer.localPlayer.authenticateHandler爲零,然後返回到我的處理程序,看看是否會工作,並得到一個異常,試圖將其設置爲零。我沒有嘗試設置它到一個不同的處理程序,看看是否會觸發登錄(這看起來很瘋狂) –
我試着將處理程序切換到另一個處理程序,並且不會觸發新的登錄對話框打開。我在開發人員論壇上張貼,看看有沒有人有任何建議,並會在我聽到任何消息時回覆。 https://devforums.apple.com/message/744983 – Greg