У моего приложения нет идентификатора клиента?
Поэтому я использую Unreal Engine 4 для создания мобильной игры. В настоящее время я пытаюсь настроить сервисы Google Play, чтобы я мог выполнять списки лидеров, достижения и покупки в приложениях, но сейчас я борюсь с первым.
Вы можете увидеть поведение в этом коротком видео.
Кажется, что он пытается связаться со службой, затем что-то идет не так, и он сдается. Я сделал logcat файл с моего телефона, пока это происходило, и вот что я получил:
I/GamesNativeSDK(16078): Connecting to Google Play...
V/GamesNativeSDK(16078): Attached to JVM on thread main_dispatch
D/ChimeraCfgMgr(11916): Loading module com.google.android.gms.games from APK com.google.android.play.games
D/ChimeraModuleLdr(11916): Module APK com.google.android.play.games already loaded
D/ChimeraCfgMgr(11916): Loading module com.google.android.gms.games from APK com.google.android.play.games
D/ChimeraModuleLdr(11916): Module APK com.google.android.play.games already loaded
V/GamesNativeSDK(16078): Play Games callback indicates connection failure.
I/GamesNativeSDK(16078): UI interaction required to connect to Google Play.
D/UE4 (16078): [2015.10.26-19.31.29:804][ 0]LogOnline:Warning: Async task 'Login' failed in 0.582350 seconds
E/SignInIntentService(11916): Access Not Configured. The API (Google Play Game Services API) is not enabled for your project. Please use the Google Developers Console to update your configuration.
E/SignInIntentService(11916): com.google.android.gms.games.server.error.GamesException
E/SignInIntentService(11916): at com.google.android.gms.games.server.GamesServer.getResponseBlocking(GamesServer.java:164)
E/SignInIntentService(11916): at com.google.android.gms.games.broker.PlayerAgent.getPlayerFromNetwork(PlayerAgent.java:1700)
E/SignInIntentService(11916): at com.google.android.gms.games.broker.PlayerAgent.fetchPlayer(PlayerAgent.java:621)
E/SignInIntentService(11916): at com.google.android.gms.games.broker.DataBroker.loadSelf(DataBroker.java:920)
E/SignInIntentService(11916): at com.google.android.gms.games.service.PlayGamesSignInIntentService$LoadSelfOperation.executeInternal(PlayGamesSignInIntentService.java:402)
E/SignInIntentService(11916): at com.google.android.gms.games.service.PlayGamesSignInIntentService$BaseOperation.execute(PlayGamesSignInIntentService.java:51)
E/SignInIntentService(11916): at com.google.android.gms.games.service.PlayGamesSignInIntentService$OperationAdapter.execute(PlayGamesSignInIntentService.java:487)
E/SignInIntentService(11916): at com.google.android.gms.chimera.BaseAsyncOperationService$OperationTask.run(BaseAsyncOperationService.java:179)
E/SignInIntentService(11916): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
E/SignInIntentService(11916): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
E/SignInIntentService(11916): at java.lang.Thread.run(Thread.java:818)
E/LoadSelfFragment(16219): Unable to sign in - application does not have a registered client ID
Я понимаю сообщения об ошибках, но не понимаю, почему я их получаю. Я попытался выполнить развертывание непосредственно из модуля запуска, а также создать подписанный APK и установить на свой телефон. Это тот же результат.
Я искал решение этой проблемы, но не нашел ни проблем с настройками в консоли разработчика, ни каких-либо пропущенных. Я немного растерялся и собираюсь выпустить релиз в декабре 2015 года, поэтому мне нужна помощь. В Epic Games практически не было документации по узлам, предоставленным для этого, так что все это было мне неуклюже в темноте.
2 ответа
После долгой борьбы и возни в темноте я сам нашел решение. Пожалуйста, перейдите по этой ссылке на форумы Unreal, чтобы узнать, как я это сделал!
Основная суть этого:
Убедитесь, что в консоли разработчика разблокированы следующие API:
- Google Cloud Messaging для Android
- Google Cloud Pub / Sub
- Аккаунты пользователей Google Cloud
- Google Play Android Developer API
- Google Play Управление играми
- Сервисы Google Play
- Google+ API
Убедитесь, что у вас есть открытый ключ сервера в ваших учетных данных без IP-адресов в списке IP-адресов.
Добавьте следующие две строки в <manifest>
часть настроек проекта.
- com.google.android.gms.games.APP_ID = "@ строка /app_id"
- com.google.android.gms.appstate.APP_ID = "@ строка /app_id"
Затем добавьте все эти разрешения в Extra Permissions
часть проекта
- com.android.vending.BILLING (только если у вас есть покупки в приложении)
- android.permission.INTERNET
- android.permission.GET_ACCOUNTS
- android.permission.USE_CREDENTIALS
Откройте папку сборки и в GooglePlayAppID.xml
найден в <PROJECT NAME>\Build\Android\res\values
добавить идентификатор приложения
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_id">YOUR GAMES APP ID HERE</string>
</resources>
Теперь вы сможете использовать узлы, предоставленные Epic, для работы с достижениями, списками лидеров и покупками в приложениях.
Другим важным шагом (который находится в ссылке на Unreal Forum) является следующее дополнение к YourProject.build.cs:
if (Target.Platform == UnrealTargetPlatform.Android)
{
PrivateDependencyModuleNames.Add("OnlineSubsystem");
PrivateDependencyModuleNames.Add("OnlineSubsystemGooglePlay");
}
(onlineSubsystem может потребоваться для других платформ, таких как Windows/Steam)