Статьи

Сервисы Google Play: достижения

С помощью Google Play Games Services вы можете встроить ряд функций в свои приложения для Android, включая списки лидеров, достижения, многопользовательский игровой процесс, облачное хранилище и вход в Google+.

В этом уроке мы рассмотрим шаги, которые необходимо предпринять, чтобы добавить достижения в простую игру для Android. Мы подготовим среду разработки для использования Google Play Game Services, определим достижение в консоли разработчика и реализуем взаимодействие достижений в игре.

Чтобы использовать инструменты Google Play Game Services, нам нужно подготовить нашу IDE. Помимо библиотеки сервисов Google Play, которая необходима для всех сервисов Google, мы будем использовать ресурс BaseGameUtils , который содержит ряд классов, которые особенно полезны при разработке игр.

Начните с создания нового приложения в вашей IDE. Пример кода этого руководства содержит простую игру, в которой пользователь должен угадать число, выбранное случайным образом. Вы можете использовать этот проект, чтобы начать разработку с Google Play Game Services, если хотите. Создайте новый проект Android и выберите для него имена и настройки.

Если вы не используете образец приложения в загрузке, возможно, вы захотите реализовать свой игровой процесс на этом этапе, учитывая, для чего вы собираетесь использовать достижение. Для примера приложения мы просто наградим достижение, когда пользователь выберет правильный ответ.

На этом этапе мы готовим IDE и наш проект к использованию Сервисов Google Play Games и утилит. Откройте свой Android SDK Manager, который вы можете найти в меню « Окно» в Eclipse. Прокрутите вниз, пока не увидите папку Extras , разверните ее и выберите Службы Google Play и Google Repository . Вам также может понадобиться Платформа API Google, если вы планируете тестировать на эмуляторе, поэтому выберите это. Вы можете найти последнее в каталогах для последних версий платформы Android. Установите выбранные пакеты, принимая любые лицензии по мере необходимости.

Нам также необходимо включить несколько ресурсов в фактическое рабочее пространство, чтобы мы могли ссылаться на них в приложении, начиная с библиотеки сервисов Google Play . Вы должны найти его в / extras / google / google_play_services / libproject / google-play-services_lib / в вашей папке SDK. Сделайте копию библиотеки и вставьте ее в другое место на вашем компьютере.

Вернувшись в Eclipse, импортируйте библиотеку, выбрав « Импорт»> « Android»> « Импортировать существующий код Android в рабочую область» из меню « Файл» . Найдите папку, в которую вы скопировали библиотеку, выберите библиотеку и импортируйте ее. Библиотека должна появиться как проект в вашем обозревателе пакетов Eclipse и рабочей области.

Щелкните правой кнопкой мыши по проекту библиотеки в Eclipse, выберите « Свойства» и перейдите в раздел Android. Выберите цель сборки API Google и убедитесь, что флажок Is Library установлен. Теперь библиотека должна быть готова к использованию в вашем приложении.

Теперь давайте добавим ресурс BaseGameUtils в вашу среду IDE. Загрузите его из раздела « Примеры игр » на портале разработчиков Google . Поскольку код размещен на GitHub, вы можете просмотреть его и получить доступ к его руководствам на GitHub.

Импортируйте ресурс BaseGameUtils в Eclipse, используя тот же метод, который вы использовали для библиотеки Play Services, выбрав « Импорт»> «Android»> « Импортировать существующий код Android в рабочую область» из меню « Файл» . Щелкните правой кнопкой мыши проект BaseGameUtils в проводнике пакетов и убедитесь, что флажок Is Library установлен.

Теперь мы можем ссылаться как на библиотеку служб Google Play, так и на ресурсы BaseGameUtils в нашем приложении.

Выберите свое игровое приложение в Eclipse Package Explorer, щелкните его правой кнопкой мыши и выберите « Свойства», как вы делали для импортированных ресурсов. В этот раз в разделе Android нажмите кнопку « Добавить» в области « Библиотека» . Выберите и библиотеку Google Play Services, и BaseGameUtils, чтобы добавить в качестве библиотек свой проект.

Это IDE, созданная для разработки с помощью Games Services.

Чтобы использовать достижения в своей игре, вам необходимо добавить игру в консоль разработчика Google Play . Войдите в консоль разработчика, нажмите кнопку « Игровые сервисы» слева от консоли и выберите « Настроить игровые сервисы Google Play», если вы ими ранее не пользовались.

Нажмите, чтобы добавить новую игру, выберите « Я пока не использую API Google в своей игре» и выберите название и категорию для своей игры. Нажмите Продолжить перейти к следующему шагу.

В разделе « Сведения об игре » все, что нужно добавить для тестирования приложения, — это название вашей игры.

Нажмите « Связанные приложения» слева от списка игр на консоли разработчика. Выберите Android в списке связанных приложений.

Введите данные своего приложения, включая имя пакета, которое вы выбрали при его создании.

Нажмите « Сохранить» и продолжайте вверху и выберите « Авторизовать приложение» . Вам будет предложено ввести информацию о брендинге. Все, что вам нужно на данный момент, это название вашего приложения. На экране « Параметры идентификатора клиента» выберите « Установленное приложение» в качестве типа, « Android» в качестве типа установленного приложения и введите имя пакета.

Затем вам необходимо сгенерировать отпечаток сертификата подписи для авторизации. Для этого вам необходимо запустить утилиту keytool на вашем компьютере. Откройте терминал или командную строку и используйте следующую команду, но при необходимости обязательно измените ее в соответствии с расположением. Вы можете использовать отладочный сертификат во время тестирования.

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v

Keytool должен выписать отпечаток сертификата. Выберите и скопируйте то, что появляется после SHA1, и вставьте его в консоль разработчика в разделе « Отпечаток пальца сертификата» . Нажмите « Создать клиент» и скопируйте идентификатор приложения, который вы видите в списке для вашей игры в консоли разработчика, который должен отображаться рядом с названием игры в верхней части страницы. Сохраните идентификатор приложения для последующего использования в вашем приложении.

Находясь в консоли разработчика, нажмите кнопку « Достижения» слева от списка игр и нажмите « Добавить достижение» .

Прежде чем продолжить, вы можете проверить страницу достижений в Руководстве разработчика, чтобы убедиться, что вы понимаете концепцию достижения в играх Google Play. Введите имя, описание и значок для своего достижения, а также выберите состояние, очки и порядок в списке. В нашем примере игры мы использовали Guessed Correctly в качестве имени, выбрали правильное число в качестве описания и простое изображение звезды в качестве значка. Нажмите Сохранить, чтобы сохранить достижение.

Скопируйте идентификатор достижения, который вы можете увидеть рядом с достижением в консоли разработчика.

Если вы перейдете в раздел « Тестирование » для своей игры, вы можете установить адреса электронной почты для людей, которые будут иметь тестовый доступ к игре. По умолчанию консоль разработчика будет вставлять адрес электронной почты вашей учетной записи Google, поэтому вы сможете использовать его сразу. Добавьте любые другие тестовые электронные письма, которые вам нужны, и вы сможете выйти из своей учетной записи Google.

В Eclipse мы можем подготовить приложение для доступа к Сервисам игр. Мы собираемся использовать метод, описанный в разделе « Выполнение входа в Android», для того, чтобы пользователи могли входить и выходить из своих учетных записей Google. Это будет включать использование кнопок для входа и выхода, поэтому добавьте их в макет вашего приложения следующим образом:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<!— sign-in button —>
 
<com.google.android.gms.common.SignInButton
 android:id=»@+id/sign_in_button»
 android:layout_width=»wrap_content»
 android:layout_height=»wrap_content» />
 
<!— sign-out button —>
 
<Button
 android:id=»@+id/sign_out_button»
 android:layout_width=»wrap_content»
 android:layout_height=»wrap_content»
 android:text=»Sign Out»
 android:visibility=»gone» />

Измените основную активность, чтобы расширить BaseGameActivity . Это позволит нам автоматизировать определенные этапы процесса входа для ваших пользователей. Также Activity класс Activity обрабатывать клики:

1
public class MainActivity extends BaseGameActivity implements View.OnClickListener

Вам понадобится следующий импорт:

1
2
import com.google.android.gms.games.Games;
import com.google.example.games.basegameutils.BaseGameActivity;

Теперь onCreate ссылки на кнопки в onCreate :

1
2
findViewById(R.id.sign_in_button).setOnClickListener(this);
findViewById(R.id.sign_out_button).setOnClickListener(this);

Мы ответим на нажатия кнопок в onClick как вы можете видеть ниже:

01
02
03
04
05
06
07
08
09
10
11
@Override
public void onClick(View view) {
    if (view.getId() == R.id.sign_in_button) {
        beginUserInitiatedSignIn();
    }
    else if (view.getId() == R.id.sign_out_button) {
        signOut();
        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
        findViewById(R.id.sign_out_button).setVisibility(View.GONE);
    }
}

Мы используем методы из класса BaseGameActivity , который расширяем для обработки входа ( beginUserInitiatedSignIn и signOut ), соответственно обновляя пользовательский интерфейс. Когда приложение запускается, оно будет пытаться автоматически войти в систему пользователя, но они также смогут использовать кнопки для входа и выхода.

Теперь нам нужно добавить два обратных вызова в наш класс Activity :

01
02
03
04
05
06
07
08
09
10
public void onSignInSucceeded() {
    findViewById(R.id.sign_in_button).setVisibility(View.GONE);
    findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
}
 
@Override
public void onSignInFailed() {
    findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
    findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}

Вы можете добавить больше кода к ним, если это необходимо. Вы также можете сохранить прогресс игрока, даже если он не вошел в систему, но это зависит от вашей игры. В примере приложения мы применяем простой подход, чтобы проверить, что у нас есть соединение со Службами Google, прежде чем мы попытаемся работать с достижением.

Прежде чем вы начнете кодировать детали использования достижений в вашем приложении, вам нужно добавить в него некоторые данные. Начните с открытия или создания файла res / values ​​/ ids.xml и добавьте строковые ресурсы для приложения и идентификаторы достижений, которые вы скопировали из консоли разработчика:

1
2
<string name=»app_id»>abcdefghij</string>
<string name=»correct_guess_achievement»>abcdefghijkl</string>

Обновите содержимое, чтобы отразить значения вашего идентификатора. Теперь откройте Manifest проекта и добавьте в элемент приложения следующее:

1
2
3
4
5
6
<meta-data
 android:name=»com.google.android.gms.games.APP_ID»
 android:value=»@string/app_id» />
<meta-data
 android:name=»com.google.android.gms.version»
 android:value=»@integer/google_play_services_version» />

Мы ссылаемся на идентификатор приложения, который мы добавили в файл идентификаторов, и версию Play Services. Это все, что вам нужно, чтобы начать программировать ваши достижения.

Теперь остается только разблокировать достижение, когда игрок в игре соответствует требованиям достижения. Естественно, это будет зависеть от цели вашей собственной игры, но если вы хотите выполнить процесс, используя пример приложения из этого руководства, то вы можете использовать следующий код. Мы начнем с основного макета, который включает кнопки входа и выхода, которые мы добавили ранее:

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
<RelativeLayout xmlns:android=»https://schemas.android.com/apk/res/android»
 xmlns:tools=»http://schemas.android.com/tools»
 android:layout_width=»match_parent»
 android:layout_height=»match_parent»
 android:paddingBottom=»@dimen/activity_vertical_margin»
 android:paddingLeft=»@dimen/activity_horizontal_margin»
 android:paddingRight=»@dimen/activity_horizontal_margin»
 android:paddingTop=»@dimen/activity_vertical_margin»
 tools:context=»com.example.fungame.MainActivity» >
 
 <LinearLayout
  android:id=»@+id/sign_in_buttons»
  android:layout_width=»fill_parent»
  android:layout_height=»wrap_content»
  android:layout_alignParentTop=»true»
  android:orientation=»horizontal» >
 
  <!— sign-in button —>
 
  <com.google.android.gms.common.SignInButton
   android:id=»@+id/sign_in_button»
   android:layout_width=»wrap_content»
   android:layout_height=»wrap_content» />
 
  <!— sign-out button —>
 
 <Button
  android:id=»@+id/sign_out_button»
  android:layout_width=»wrap_content»
  android:layout_height=»wrap_content»
  android:text=»Sign Out»
  android:visibility=»gone» />
 
 <!— show achievements —>
 
 <Button
  android:id=»@+id/show_achievements»
  android:layout_width=»wrap_content»
  android:layout_height=»wrap_content»
  android:text=»Achievements» />
   
 </LinearLayout>
 
 <RelativeLayout
  android:layout_width=»fill_parent»
  android:layout_height=»wrap_content»
  android:layout_below=»@id/sign_in_buttons» >
 
  <TextView
   android:id=»@+id/guess_text»
   android:layout_width=»fill_parent»
   android:layout_height=»wrap_content»
   android:layout_centerHorizontal=»true»
   android:text=»Guess the number!»
   android:textSize=»30sp»
   android:textStyle=»bold» />
 
  <LinearLayout
   android:layout_width=»fill_parent»
   android:layout_height=»wrap_content»
   android:layout_below=»@id/guess_text»
   android:orientation=»vertical» >
 
   <LinearLayout
    android:layout_width=»fill_parent»
    android:layout_height=»wrap_content»
    android:orientation=»horizontal» >
 
    <Button
     android:id=»@+id/btn7″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»7″
     android:text=»7″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
 
    <Button
     android:id=»@+id/btn8″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»8″
     android:text=»8″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
 
    <Button
     android:id=»@+id/btn9″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»9″
     android:text=»9″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
   </LinearLayout>
 
   <LinearLayout
    android:layout_width=»fill_parent»
    android:layout_height=»wrap_content»
    android:layout_weight=»1″
    android:orientation=»horizontal» >
 
    <Button
     android:id=»@+id/btn4″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»4″
     android:text=»4″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
 
    <Button
     android:id=»@+id/btn5″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»5″
     android:text=»5″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
 
    <Button
     android:id=»@+id/btn6″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»6″
     android:text=»6″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
      
   </LinearLayout>
 
   <LinearLayout
    android:layout_width=»fill_parent»
    android:layout_height=»wrap_content»
    android:layout_weight=»1″
    android:orientation=»horizontal» >
 
    <Button
     android:id=»@+id/btn1″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»1″
     android:text=»1″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
 
    <Button
     android:id=»@+id/btn2″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»2″
     android:text=»2″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
 
    <Button
     android:id=»@+id/btn3″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»3″
     android:text=»3″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
      
   </LinearLayout>
 
   <LinearLayout
    android:layout_width=»fill_parent»
    android:layout_height=»wrap_content»
    android:layout_weight=»1″
    android:orientation=»horizontal» >
 
    <Button
     android:id=»@+id/btn0″
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ff000033″
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»0″
     android:text=»0″
     android:textColor=»#ffffffff»
     android:textSize=»30sp»
     android:textStyle=»bold» />
 
    <Button
     android:id=»@+id/btnAgain»
     android:layout_width=»0dp»
     android:layout_height=»match_parent»
     android:layout_margin=»1dp»
     android:layout_weight=»1″
     android:background=»#ffffff00″
     android:enabled=»false»
     android:gravity=»center»
     android:onClick=»btnPressed»
     android:padding=»5dp»
     android:tag=»-1″
     android:text=»Again»
     android:textColor=»#ffffff00″
     android:textSize=»30sp»
     android:textStyle=»bold» />
      
   </LinearLayout>
  </LinearLayout>
 </RelativeLayout>
 
</RelativeLayout>

Обратите внимание, что мы также добавили кнопку « Достижения» рядом с кнопками для входа и выхода. Мы реализуем эту кнопку позже. Мы не будем вдаваться в подробности примера игры, если вы уже создали простые приложения, это не должно быть слишком сложно.

Игра выбирает случайное число от 0 до 9, и игрок может выбрать цифровую кнопку, чтобы сделать предположение. Игра обновляет текстовое поле, чтобы отразить, угадал ли пользователь правильно. Если сделать правильное предположение, достижение разблокируется.

Вернитесь к своему классу Activity и добавьте следующие переменные экземпляра:

1
2
3
4
5
private Button button0, button1, button2, button3, button4, button5,
    button6, button7, button8, button9, buttonAgain;
private int number;
private Random rand;
private TextView info;

Они представляют кнопки, число, генератор случайных чисел и текстовое поле. Добавьте следующее в ваш метод onCreate :

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
findViewById(R.id.show_achievements).setOnClickListener(this);
 
button0=(Button)findViewById(R.id.btn0);
button1=(Button)findViewById(R.id.btn1);
button2=(Button)findViewById(R.id.btn2);
button3=(Button)findViewById(R.id.btn3);
button4=(Button)findViewById(R.id.btn4);
button5=(Button)findViewById(R.id.btn5);
button6=(Button)findViewById(R.id.btn6);
button7=(Button)findViewById(R.id.btn7);
button8=(Button)findViewById(R.id.btn8);
button9=(Button)findViewById(R.id.btn9);
buttonAgain=(Button)findViewById(R.id.btnAgain);
 
info=(TextView)findViewById(R.id.guess_text);
rand=new Random();
number=rand.nextInt(10);

Теперь добавьте метод с именем disableNumbers , который мы будем вызывать, когда пользователь делает выбор номера:

01
02
03
04
05
06
07
08
09
10
11
12
13
private void disableNumbers(){
    button0.setEnabled(false);
    button1.setEnabled(false);
    button2.setEnabled(false);
    button3.setEnabled(false);
    button4.setEnabled(false);
    button5.setEnabled(false);
    button6.setEnabled(false);
    button7.setEnabled(false);
    button8.setEnabled(false);
    button9.setEnabled(false);
    buttonAgain.setEnabled(true);
}

enableNumbers другой метод, enableNumbers , который вызывается, когда пользователь решил снова играть:

01
02
03
04
05
06
07
08
09
10
11
12
13
private void enableNumbers(){
    button0.setEnabled(true);
    button1.setEnabled(true);
    button2.setEnabled(true);
    button3.setEnabled(true);
    button4.setEnabled(true);
    button5.setEnabled(true);
    button6.setEnabled(true);
    button7.setEnabled(true);
    button8.setEnabled(true);
    button9.setEnabled(true);
    buttonAgain.setEnabled(false);
}

Теперь добавьте метод, который мы установили в качестве атрибута onClick для кнопок:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
public void btnPressed(View v){
    int btn = Integer.parseInt(v.getTag().toString());
    if(btn<0){
        //again btn
        number=rand.nextInt(10);
        enableNumbers();
        info.setText(«Guess the number!»);
    }
    else{
        //number button
        if(btn==number){
            info.setText(«Yes! It was «+number);
            if(getApiClient().isConnected())
                Games.Achievements.unlock(getApiClient(),
                        getString(R.string.correct_guess_achievement));
        }
        else{
            info.setText(«No! It was «+number);
        }
        disableNumbers();
    }
}

Мы вызываем утилиту Games Achievements, чтобы разблокировать достижение, если предположение пользователя было правильным, сначала проверив, что у нас есть соединение. Мы ссылаемся на достижение, используя созданный нами строковый ресурс.

И последнее, но не менее важное: давайте позволим пользователю просматривать свои достижения в игре. Это произойдет, когда они нажмут кнопку « Достижения» , которую мы добавили. Расширьте код в методе onClick , добавив дополнительный else if :

1
2
3
4
else if (view.getId() == R.id.show_achievements){
    startActivityForResult(Games.Achievements.getAchievementsIntent(
        getApiClient()), 1);
}

Мы используем метод getAchievementsIntent с произвольным целым числом для отображения пользовательских достижений в игре. Если нажать кнопку «Назад», игрок вернется в игру. Подробнее о методах достижений см. На странице « Достижения в Android» в Руководстве разработчика.

Вы должны быть в состоянии запустить ваше приложение на этом этапе. Когда приложение запускается, оно запускает процесс авторизации пользователя и входа в систему, предлагая пользователю предоставить необходимые разрешения.

После входа пользователь увидит подтверждение.

Пользователь может выбрать, чтобы выйти и вернуться в любое время. Когда пользователь выбирает правильный номер, достижение разблокируется и отображается в верхней части игрового экрана.

Затем игрок может продолжить как обычно. Нажатие на кнопку Достижения покажет их достижения. Нажатие на кнопку «Назад» вернет игрока в игру.

В этом уроке мы рассмотрели практический пример использования достижений в приложении для Android. Пример приложения, которое мы использовали, прост, но те же принципы применимы к любой игре, с которой вы работаете. Попробуйте добавить еще одно достижение в консоль разработчика и внедрить его в свою игру, чтобы убедиться, что вы понимаете концепции и процессы.