У моего приложения нет идентификатора клиента?

Поэтому я использую 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");
}

Источник: https://forums.unrealengine.com/showthread.php?67343-How-do-I-debug-refusal-to-connecto-to-Google-Play-services

(onlineSubsystem может потребоваться для других платформ, таких как Windows/Steam)

Другие вопросы по тегам