2011-08-30 52 views
4

我有一款iPhone遊戲,我剛剛添加了GameCenter支持,而且一切似乎都正常。但是,作爲不使用GameCenter的用戶,我添加了一個選項,以便用戶可以關閉它。唯一的問題是,一旦GKLocalPlayer登錄到GameCenter,我看不到簽出它們的方式 - 這意味着如果用戶登錄,然後禁用GameCenter支持,我的應用程序將不會使用它,但是每當我的應用程序回到前臺時,GK庫仍然會將用戶籤回,直到應用程序終止。我不希望這發生!GameCenter - 登出播放器

有沒有辦法將本地播放器從GameCenter中註銷,或者至少停止GK框架在每次您的應用程序變爲活動狀態時都記錄下來?

+0

您可以嘗試設置'localPlayer.authenticateHandler = nil;' –

+0

'authenticateHandler'不能爲零。 –

回答

1

沒有辦法從應用程序內退出遊戲中心。最好的解決辦法是增加一個布爾標誌指示用戶的登錄狀態:

BOOL gameCenterOn = [[NSUserDefaults standardUserDefaults] boolForKey:@"gameCenterOn"]; 

它默認是YES,它如果用戶選擇了在你的應用程序的遊戲中心正好被設置爲NO。

在處理任何遊戲中心請求之前,您還必須檢查該標誌的值。 (包括應用代理中的[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:調用。)

+0

是的,那基本上就是我現在正在做的事情。問題是,一旦你登錄,GK似乎會自動重新認證本地播放器,每當你的應用程序丟失,然後重新獲得前景地位,我找不到一種方式告訴它不要。因此,如果用戶登錄到GK,然後決定要禁用它,我的應用程序不再與GameCenter對話,但任何時候他們都會從別的地方切換回我的應用程序,GK仍然會在玩家背後重新進行身份驗證。它不會破壞任何東西,但它將無用地佔用人們寶貴的3G帶寬! (我是OP) – GoatInTheMachine

+0

爲什麼你想讓人們禁用遊戲中心在你的應用程序?如果他們有Game Center帳戶,爲什麼不使用它?如果他們不想使用,他們可以隨時在Game Center App中註銷。什麼情況下會有人登錄到Game Center,但不想與您的應用程序一起使用?圍繞預期行爲進行編碼是一個很好的警告信號。 –

+0

我有一個遊戲中心帳戶,但我不使用它,因爲如此多的應用程序*真的很糟糕*在連接斷開時不會崩潰/做奇怪的事情。這意味着某些其他遊戲會不斷要求我在每次活躍時登錄GameCenter,這非常令人難以置信。 – GoatInTheMachine