GKAchievement
Ваша игра использует a GKAchievement объект связаться с Игровым Центром о прогрессе местного игрока к завершению достижения.
Достижениями является отличный способ предоставить Вашим проигрывателям обратную связь и удовлетворение. Однако Вы не можете только добавить достижение к своей игре программно. Существует несколько шагов, которые необходимо выполнить для добавления достижений к игре:
Перед добавлением достижений добавьте код для аутентификации местного игрока. Посмотрите Работу с Проигрывателями в Игровом Центре.
Разработайте достижения своей игры. Посмотрите Разработку Достижения.
Перейдите к Подключению iTunes и сконфигурируйте достижения для своей игры. Вы обеспечиваете, все данные должны были вывести на экран достижения к проигрывателю. Посмотрите Достижения Конфигурирования в Подключении iTunes.
Добавьте код, чтобы сообщить о прогрессе местного игрока Игровому Центру. Путем хранения прогресса на Игровом Центре Вы также делаете успехи проигрывателя, видимые в Игровом приложении Центра. Для создания отчетов о прогрессе местного игрока относительно достижения игра обновляет
percentCompleteсвойство объекта достижения и вызовов объектreportAchievements:withCompletionHandler:метод класса. Используйте этот метод при создании отчетов один или многократные достижения.Добавьте код для загрузки предыдущего прогресса местного игрока на достижениях от Игрового Центра. Для запроса прогресса местного игрока на достижениях вызовите
loadAchievementsWithCompletionHandler:метод класса. Загрузите прогресс местного игрока вскоре после того, как будет успешно аутентифицироваться проигрыватель.
По умолчанию, когда достижение завершается, Гэйм Кит выводит на экран баннер уведомления к проигрывателю. Если Ваша игра хочет вывести на экран свой собственный пользовательский интерфейс достижения, можно препятствовать тому, чтобы баннер был выведен на экран путем установки showsCompletionBanner свойство достижения возражает против NOfalse прежде, чем сообщить о прогрессе проигрывателя.
Для очистки всего прогресса, местный игрок сделал на достижениях, вызовите resetAchievementsWithCompletionHandler: метод класса.
Соответствует
-
AnyObject -
CVarArgType -
Сопоставимый -
Hashable -
NSCoding -
NSObjectProtocol -
NSSecureCoding -
Печатаемый -
NSCoding -
NSObject -
NSSecureCoding
Оператор импорта
Swift
import GameKit
Objective C
@import GameKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Загрузки ранее представили прогресс достижения для местного игрока из Игрового Центра.
Объявление
Swift
class func loadAchievementsWithCompletionHandler(_completionHandler: (([AnyObject]!, NSError!) -> Void)!)Параметры
completionHandlerБлок, который вызовут, когда завершается загрузка.
Блок получает следующие параметры:
achievementsМассив
GKAchievementобъекты, который представляет весь прогресс, сообщили Игровому Центру местного игрока. Если ошибка произошла, этот параметр может быть не -nil, когда массив содержит любую информацию о достижении, Гэйм Кит смог выбрать.errorЕсли ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение
nil.Обсуждение
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке. Перечисление 1 показывает пример того, как загрузить достижения местного игрока.
Прогресс достижения перечисления 1Loading - (void) loadAchievements{ [GKAchievement loadAchievementsWithCompletionHandler:^(NSArray *achievements, NSError *error) {if (error != nil){NSLog(@"Error in loading achievements: %@", error);}if (achievements != nil){// Process the array of achievements.}}];}
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
Инициализирует новый объект достижения для местного игрока.
Объявление
Swift
init!(identifieridentifier: String!)Objective C
- (instancetype)initWithIdentifier:(NSString *)identifierПараметры
identifierСтрока, соответствующая строку идентификатора для достижения, которое Вы создали для своей игры на Подключении iTunes.
Возвращаемое значение
Инициализированный объект достижения, или
nilесли произошла ошибка.Обсуждение
Ваша игра инициализирует новый объект достижения только, когда она ранее не сообщила о прогрессе для того достижения. Если Ваша игра ранее сообщила о прогрессе относительно достижения, необходимо сначала получить текущий прогресс путем вызова
loadAchievementsWithCompletionHandler:метод класса.Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
Инициализирует объект достижения для определенного проигрывателя.
Объявление
Параметры
identifierСтрока, соответствующая строку идентификатора для достижения, которое Вы создали для своей игры на Подключении iTunes.
playerA
GKPlayerобъект, идентифицирующий проигрыватель, связанный с указанным достижением.Возвращаемое значение
Инициализированный объект достижения связался с определенным
GKPlayerобъект, илиnilесли произошла ошибка.Обсуждение
Ваша игра инициализирует новый объект достижения для определенного проигрывателя только, когда она ранее не сообщила о прогрессе для того достижения. Только используйте этот метод для представления достижения участника при заканчивании основанного на повороте матча.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.10 и позже.
-
идентификатор идентификаторСвойствоСтрока, используемая для однозначного определения определенного достижения объект, относится к.
Обсуждение
identifierсвойство должно соответствовать строку идентификатора для достижения, которое Вы создали для своей игры на Подключении iTunes.Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
percentComplete percentCompleteСвойствоЗначение процента, утверждающее, как далеко проигрыватель развился на этом достижении.
Объявление
Swift
var percentComplete: DoubleObjective C
@property(assign, atomic) double percentCompleteОбсуждение
Значение по умолчанию для недавно инициализированного объекта достижения
0.0. Диапазон юридических значений между0.0и100.0, включительно. Вы решаете, как тот процент вычисляется и когда он изменяется. Например, если бы проигрыватель зарабатывает достижение просто для обнаружения расположения в Вашей игре, то Вы просто сообщили бы о достижении, поскольку 100 процентов завершаются в первый раз, когда Вы сообщаете о прогрессе Игровому Центру. С другой стороны, для достижения как “Получение 10 пиратов”, Ваши инкременты механизма создания отчетов к 10 процентам каждый раз проигрыватель получают пирата.Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
завершенный завершенныйСвойствоБулево значение, утверждающее, завершил ли проигрыватель достижение. (только для чтения)
Объявление
Swift
var completed: Bool { get }Objective C
@property(readonly, getter=isCompleted, atomic) BOOL completedОбсуждение
Значение этого свойства
YEStrueеслиpercentCompleteсвойство равно100.0; иначе, этоNOfalse.Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
lastReportedDate lastReportedDateСвойствоО прошлом разе, которые развиваются на достижении, успешно сообщили Игровому Центру. (только для чтения)
Объявление
Swift
@NSCopying var lastReportedDate: NSDate! { get }Objective C
@property(copy, readonly, atomic) NSDate *lastReportedDateОбсуждение
На недавно инициализированном объекте достижения это свойство содержит текущую дату.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
Отчеты развиваются на массиве достижений.
Объявление
Swift
class func reportAchievements(_achievements: [AnyObject]!, withCompletionHandlercompletionHandler: ((NSError!) -> Void)!)Параметры
achievementsМассив
GKAchievementобъекты, который содержит достижения, прогресс которых обновляется.completionHandlerБлок, который вызовут после работы, завершается.
Блок берет следующий параметр:
errorЕсли работа была успешна, это значение
nil; иначе, этот параметр содержит объект, описывающий произошедшую проблему.Обсуждение
Используйте этот метод класса каждый раз, когда необходимо представить одно или более обновлений достижения одновременно. Вызов этого метода сообщает о каждом из достижений в массиве. Обработка многократных достижений сразу позволяет всей работе быть обработанной более эффективно с помощью этого метода, как обработчик завершения только вызывают один раз.
Reporting progress on an achievementпоказывает пример того, как сообщить о единственном достижении.Прогресс перечисления 2Reporting на достижении - (void) reportAchievementIdentifier: (NSString*) identifier percentComplete: (float) percent{GKAchievement *achievement = [[GKAchievement alloc] initWithIdentifier: identifier];if (achievement){achievement.percentComplete = percent;[GKAchievement reportAchievements:@[achievement] withCompletionHandler:^(NSError *error){if (error != nil){NSLog(@"Error in reporting achievements: %@", error);}}];}}
Перечисление 3 показывает пример того, как сообщить о многократных достижениях для местного игрока.
Прогресс перечисления 3Reporting на многократных достижениях - (void) completeMultipleAchievements{GKAchievement *achievement1 = [[GKAchievement alloc] initWithIdentifier: @"DefeatedFinalBoss"];GKAchievement *achievement2 = [[GKAchievement alloc] initWithIdentifier: @"FinishedTheGame"];GKAchievement *achievement3 = [[GKAchievement alloc] initWithIdentifier: @"PlayerIsAwesome"];achievement1.percentComplete = 100.0;achievement2.percentComplete = 100.0;achievement3.percentComplete = 100.0;NSArray *achievementsToComplete = @[achievement1,achievement2,achievement3];[GKAchievement reportAchievements: achievementsToComplete withCompletionHandler:^(NSError *error){if (error != nil){NSLog(@"Error in reporting achievements: %@", error);}}];}}
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
reportAchievements (_: withEligibleChallenges:withCompletionHandler:) + reportAchievements:withEligibleChallenges:withCompletionHandler:Сообщает список достижений и ограничивает проблемы, которые могут завершить те достижения.
Объявление
Swift
class func reportAchievements(_achievements: [AnyObject]!, withEligibleChallengeschallenges: [AnyObject]!, withCompletionHandlercompletionHandler: ((NSError!) -> Void)!)Параметры
achievementsМассив
GKAchievementобъекты, который представляет все достижения, о которых сообщают.challengesМассив
GKChallengeобъекты, который представляет ограниченные проблемы, связанные с достижениями, о которых сообщают. Если ошибка произошла, этот параметр может быть не -nil, когда массив содержит любую информацию о проблеме, Гэйм Кит смог выбрать.completionHandlerБлок, который вызовут, когда завершается загрузка.
Блок получает следующий параметр:
errorЕсли ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение
nil.Обсуждение
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.10 и позже.
-
Булево значение, утверждающее, выведен ли баннер на экран, когда завершается достижение.
Объявление
Swift
var showsCompletionBanner: BoolObjective C
@property(assign, atomic) BOOL showsCompletionBannerОбсуждение
Когда достижение завершается, и значение этого свойства
YEStrue, баннер уведомления выведен на экран к проигрывателю для информирования их о завершенном достижении. Если значение этого свойстваNOfalse, нет никакой визуальной индикации, что завершается достижение. Ваша игра должна установить это свойство вNOfalseобеспечить его собственный визуальный индикатор, что было заработано достижение. Значение по умолчаниюNOfalse.Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
Сброс весь прогресс достижения для местного игрока.
Объявление
Swift
class func resetAchievementsWithCompletionHandler(_completionHandler: ((NSError!) -> Void)!)Objective C
+ (void)resetAchievementsWithCompletionHandler:(void (^)(NSError *error))completionHandlerПараметры
completionHandlerБлок, который вызовут, когда завершается действие сброса.
Блок берет следующий параметр:
errorЕсли работа была успешна, это значение
nil; иначе, этот параметр содержит объект, описывающий произошедшую проблему.Обсуждение
Вызов этого метода класса удаляет весь прогресс к достижениям, ранее сообщил для местного игрока. Скрытые достижения, которые были ранее видимы, теперь скрыты снова. Перечисление 4 показывает пример того, как сбросить достижения Вашей игры.
Прогресс достижения перечисления 4Resetting - (void) resetAchievements{[GKAchievement resetAchievementsWithCompletionHandler:^(NSError *error){if (error != nil)NSLog(@"Could not reset achievements due to %@", error);}];}
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
-
challengeComposeControllerWithMessage (_: players:completionHandler:) - challengeComposeControllerWithMessage:players:completionHandler:Обеспечивает проблема составляют контроллер представления с предварительно отформатированным сообщением для достижения и предварительно выобранных объектов GKPlayer.
Объявление
Swift
func challengeComposeControllerWithMessage(_message: String!, playersplayers: [AnyObject]!, completionHandlercompletionHandler: GKChallengeComposeCompletionBlock!) -> NSViewController!Objective C
- (NSViewController *)challengeComposeControllerWithMessage:(NSString *)messageplayers:(NSArray *)playerscompletionHandler:(GKChallengeComposeCompletionBlock)completionHandlerПараметры
messageСообщение, отправляющееся в другие проигрыватели. Это сообщение может быть отредактировано проигрывателем.
playersМассив
GKPlayerобъекты, который содержит идентификаторы проигрывателя, в которые состоит в том, чтобы быть отправлена проблема.completionHandlerБлок, который вызовут после контроллера представления, был выведен на экран. Содержит причину, обработчик вызвали и все идентификаторы проигрывателя, в которые была отправлена проблема.
Возвращаемое значение
A
UIViewControllerпредставление, содержащее идентификаторы проигрывателя и сообщение проблемы.Обсуждение
Контроллер представления возвратился, представлен модально от контроллера вида сверху. После того, как контроллер представления выведен на экран, и проигрыватель отправляет или отменяет проблему, блок обработчика завершения вызывают.
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.10 и позже.
-
selectChallengeablePlayers (_: withCompletionHandler:) - selectChallengeablePlayers:withCompletionHandler:Находит подмножество проигрывателей, которые могут заработать достижение.
Объявление
Swift
func selectChallengeablePlayers(_players: [AnyObject]!, withCompletionHandlercompletionHandler: (([AnyObject]!, NSError!) -> Void)!)Параметры
playersМассив
GKPlayerобъекты, содержащие список проигрывателей. Список проигрывателей используется для нахождения тех проигрывателей, которые приемлемы зарабатывать достижение.completionHandlerБлок, который вызовут, когда завершается загрузка.
Блок получает следующие параметры:
challengeablePlayersМассив
GKPlayerобъекты, представляющие проигрыватели в исходном массиве, которые в состоянии завершить проблему. Если ошибка произошла, этот параметр может быть не -nil, когда массив содержит любую информацию о достижении, Гэйм Кит смог выбрать.errorЕсли ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение
nil.Обсуждение
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке. Перечисление 5 показывает, как счесть проигрыватели имеющими право быть оспариваемым завершить достижение.
Перечисление 5Determining список проигрывателей, кто может завершить проблему достижения - (void) challengePlayersToCompleteAchievement: (GKAchievement*) achievement{[achievement selectChallengeablePlayers:[GKLocalPlayer localPlayer].friends withCompletionHandler:^(NSArray *challengeablePlayers, NSError *error) {if (challengeablePlayers){//send a challenge to each of the eligible players.}}];}
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.10 и позже.
-
проигрыватель проигрывательСвойствоA
GKPlayerобъект раньше идентифицировал проигрыватель, кто заработал достижение. (только для чтения)Объявление
Swift
var player: GKPlayer! { get }Objective C
@property(readonly, retain, atomic) GKPlayer *playerОператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.10 и позже.
-
Булево значение, утверждающее, держится ли это достижение обычно в секрете от проигрывателя. (только для чтения)
Оператор осуждения
Используйте
hiddenсвойство наGKAchievementDescriptionкласс вместо этого.Объявление
Swift
var hidden: Bool { get }Objective C
@property(assign, getter=isHidden, readonly, atomic) BOOL hiddenОператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
Осуждаемый в OS X v10.10.
-
Выпустите вызов достижения списку проигрывателей.
Объявление
Swift
func issueChallengeToPlayers(_playerIDs: [AnyObject]!, messagemessage: String!)Параметры
playerIDsМассив
NSStringобъекты, содержащие идентификаторы проигрывателя проигрывателей, являющихся оспариваемым.messageТекстовое сообщение для отображения к оспариваемым проигрывателям.
Обсуждение
Этот метод должен использоваться только для реализации собственного пользовательского интерфейса проблемы. Когда местный игрок направляет Вас, чтобы сделать так, необходимо только выпустить проблемы.
Если достижение отмечено, как скрытый в Подключении iTunes, или если оспариваемый проигрыватель уже заработал достижение, и это не отмечено как replayable, то проблема не выпущена.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
Осуждаемый в OS X v10.10.
-
Сообщает прогресс проигрывателя Игровому Центру.
Объявление
Swift
func reportAchievementWithCompletionHandler(_completionHandler: ((NSError!) -> Void)!)Objective C
- (void)reportAchievementWithCompletionHandler:(void (^)(NSError *error))completionHandlerПараметры
completionHandlerБлок, который вызовут после работы, завершается.
Блок берет следующий параметр:
errorЕсли работа была успешна, это значение
nil; иначе, этот параметр содержит объект, описывающий произошедшую проблему.Обсуждение
Когда проигрыватель делает успехи к завершению достижения, Ваша игра передает прогресс проигрывателя в Игровой Центр путем вызова этого метода. Объект достижения неявно связывается к местному игроку, аутентифицировавшемуся, когда создавался объект; когда тот же местный игрок все еще аутентифицируется на устройстве, Ваша игра должна только сообщить о прогрессе.
Когда о прогрессе успешно сообщают, успехам добиваются видимые, если это было ранее скрыто.
percentCompleteиlastReportedDateзначения свойств, сохраненные на Игровом Центре, обновляются если новоеpercentCompleteзначение больше, чем значение, ранее сохраненное на Игровом Центре. если значениеpercentCompleteсвойство было равно100.0, тогда достижение отмечено, как завершено, и баннер может быть показан проигрывателю.Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Фоновая задача автоматически обрабатывает сетевые ошибки, снова посылая данные, пока не завершается задача. Когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
Осуждаемый в OS X v10.10.
См. также
-
selectChallengeablePlayerIDs (_: withCompletionHandler:) - selectChallengeablePlayerIDs:withCompletionHandler:(OS X v10.10)Находит подмножество проигрывателей, которые могут заработать достижение.
Объявление
Swift
func selectChallengeablePlayerIDs(_playerIDs: [AnyObject]!, withCompletionHandlercompletionHandler: (([AnyObject]!, NSError!) -> Void)!)Параметры
playerIDsМассив
NSStringобъекты, содержащие список проигрывателей. Список проигрывателей используется для нахождения тех проигрывателей, которые приемлемы зарабатывать достижение.completionHandlerБлок, который вызовут, когда завершается загрузка.
Блок получает следующие параметры:
challengeablePlayerIDsМассив идентификаторов проигрывателя, представляющих проигрыватели в исходном массиве, которые в состоянии завершить проблему. Если ошибка произошла, этот параметр может быть не -
nil, когда массив содержит любую информацию о достижении, Гэйм Кит смог выбрать.errorЕсли ошибка произошла, этот объект описывает ошибку. Если работа завершилась успешно, это значение
nil.Обсуждение
Когда этот метод вызывают, он создает новую фоновую задачу для обрабатывания запроса. Метод тогда возвращает управление Вашей игре. Позже, когда задача завершена, Гэйм Кит вызывает Ваш обработчик завершения. Обработчик завершения всегда вызывают на основном потоке.
Оператор импорта
Objective C
@import GameKit;Swift
import GameKitДоступность
Доступный в OS X v10.8 и позже.
Осуждаемый в OS X v10.10.
