2013-01-10 4 views
1

Есть ли механизм кеширования в игровом центре, который можно использовать офлайн? Возможно ли, что игровой центр собирает баллы в автономном режиме и когда статус сети изменен на онлайн, он доставляет баллы на сервер? Можно ли читать загруженные оценки в автономном режиме?Как игровой центр работает в автономном режиме?

Если ответ на вышеуказанные вопросы НЕТ, есть ли библиотека, которая может это сделать для нас?

Спасибо за любую помощь.

ответ

3

ответ Axeva некорректна - GKLocalPlayer не определяет такой метод, как "resubmitStoredScores". Скорее, этот метод определен и реализован в example code, представленном в библиотеке разработчиков iOS от Apple, которая демонстрирует использование лидеров рейтинга GameKit.

Если вы не хотите копировать код с примера Apple, есть несколько библиотек. Некоторые прибегая к помощи оказался следующие хиты на github.com:

  • /антон-Nikan/IOS-Game-Центр-Cache
  • /csddavies/DDGameKitHelper

Если ни один из этих удовлетворяет ваши потребности , вам нужно будет реализовать свое собственное решение.

1

Да, в Game Center будут храниться тайны. Существует метод resubmitStoredScores для объекта GKLocalPlayer, который вы вызываете в файле didFinishLaunchingWithOptions вашего делегата приложения.

Вот пример:

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 

    [[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) { 
     if (localPlayer.isAuthenticated) { 
      // Enable Game Center Functionality 
      self.gameCenterAuthenticationComplete = YES; 

      if (! self.currentPlayerID || ! [self.currentPlayerID isEqualToString: localPlayer.playerID]) { 
       [[NSUserDefaults standardUserDefaults] setBool: NO forKey: kGameInProgress]; 

       // Switching Users 
       if (!self.player || ![self.currentPlayerID isEqualToString: localPlayer.playerID]) { 
        // If there is an existing player, replace the existing PlayerModel object with a 
        // new object, and use it to load the new player's saved achievements. 
        // It is not necessary for the previous PlayerModel object to writes its data first; 
        // It automatically saves the changes whenever its list of stored 
        // achievements changes. 

        self.player = [[[PlayerModel alloc] init] autorelease];       
       }  
       [[self player] loadStoredScores]; 
       [[self player] resubmitStoredScores]; 
      } 
     } else { 
      // User has logged out of Game Center or can not login to Game Center, your app should run 
      // without GameCenter support or user interface. 
      self.gameCenterAuthenticationComplete = NO; 
     } 
    }]; 
Смежные вопросы