2015-10-27 4 views
0

J'utilise donc Unreal Engine 4 pour créer un jeu mobile. J'essaie actuellement de configurer les services Google Play pour pouvoir faire des classements, des Acheivements et des achats intégrés, mais je suis aux prises avec la première en ce moment. Vous pouvez voir le comportement dans short video.Mon application n'a pas d'ID client?

Il semble qu'il essaie de contacter le service alors quelque chose ne va pas et il abandonne. J'ai fait un fichier journal logcat de mon téléphone alors que ce qui se passait et c'est ce que je suis:

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 

Je comprends les messages d'erreur, mais je ne comprends pas pourquoi je les reçois. J'ai essayé de déployer directement à partir du lanceur ainsi que de faire un APK signé et installer sur mon téléphone. C'est le même résultat.

J'ai cherché une solution à ce problème, mais je ne trouve aucun problème avec les paramètres de ma Developer Console, ni aucun élément manquant. Je suis un peu perdu ici et je vise une sortie en décembre 2015 donc j'ai besoin d'aide. Epic Games n'avait à peu près pas de documentation sur les nœuds fournis pour le faire, alors tout cela m'a fait tâtonner dans l'obscurité.

First Part

Second Part

Répondre

2

Après beaucoup de lutte et de tâtonner dans l'obscurité, je l'ai maintenant trouvé moi-même la solution. S'il vous plaît suivez this link sur les forums Unreal pour voir comment je l'ai fait!

L'essentiel de base est:

Assurez-vous que les API suivantes sont déverrouillées dans votre console développeur:

  • Google Cloud Messaging pour Android
  • Google Cloud Pub/Sub
  • Google Comptes utilisateur du cloud
  • API du développeur Google Play pour Android
  • Google Play Game Manag EMENT
  • Google Play Jeu services
  • API Google+

Assurez-vous que vous avez une clé de serveur public dans vos informations d'identification avec la liste IP de ne IP.

Ajoutez les deux lignes suivantes à la partie <manifest> des paramètres du projet.

  • com.google.android.gms.games.APP_ID = "@ string/app_id"
  • com.google.android.gms.appstate.APP_ID = "@ string/app_id"

ajouter ensuite toutes ces autorisations à la partie Extra Permissions du projet

  • com.android.vending.BILLING (uniquement si vous avez des achats in-app)
  • android.permission.INTERNET
  • android.permission.GET_ACCOUNTS
  • android.permission.USE_CREDENTIALS

Ouvrez le dossier de construction et dans le GooglePlayAppID.xml trouvé à <PROJECT NAME>\Build\Android\res\values Ajoutez vos applications ID

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="app_id">YOUR GAMES APP ID HERE</string> 
</resources> 

Maintenant, vous devriez être capable d'utiliser les nœuds fournis par Epic pour faire des réalisations, des classements et des achats intégrés.

+0

Bien que ce lien puisse répondre à la question, il est préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien pour référence. Les réponses à lien uniquement peuvent devenir invalides si la page liée change. –

+0

J'ai changé la réponse. Est-ce mieux? :) – OmniOwl

+0

Yup.It va beaucoup mieux de cette façon. –

1

Une autre étape essentielle (qui est dans le lien Forum Unreal) est l'ajout suivant à YourProject.build.cs:

if (Target.Platform == UnrealTargetPlatform.Android) 
{ 
    PrivateDependencyModuleNames.Add("OnlineSubsystem"); 
    PrivateDependencyModuleNames.Add("OnlineSubsystemGooglePlay"); 
} 

Source: https://forums.unrealengine.com/showthread.php?67343-How-do-I-debug-refusal-to-connecto-to-Google-Play-services

(onlineSubsystem pourraient être nécessaires pour d'autres plates-formes, tel que Windows/Steam)

+0

Vous ne pouvez le faire que si vous le construisez vous-même, mais oui vous avez raison. Le mien était juste un plan pur ^^ – OmniOwl