2017-06-05 10 views
7

Das Hauptziel meines Projekts ist es, ein Unity-Plugin zu erstellen, das Google Fitness Schrittzähler API verwenden kann. Es muss einige Funktionen wie: tägliche Schritte zählen, vollständige Schritte, speichern Schritt Betrag auf dem Google-Konto und schließlich die wichtigsten und die schwierigsten sendenden Benachrichtigungen, wenn Schritte Menge einen bestimmten Wert erreicht haben.Android-Plugin mit Google Fitness-API für Unity3D

Ich entschied mich, ein Android-Plugin mit laufenden Hintergrund-Service zu machen, der in der Lage sein wird, diese Benachrichtigungen wie oben erwähnt zu senden, aber ich stieß auf ein Problem am Anfang dieses Projekts. Es gibt ein Problem mit der Initialisierung von Google-Diensten, das perfekt funktioniert, wenn ich es in der nativen Android-App verwende, aber wenn ich versuche, es als Android-Bibliothek in Unity zu verwenden, schlägt es immer fehl.

logcat Fehler:

06-05 13:49:27.991 15144-15144/? E/GMPM: GoogleService failed to initialize, status: 10, Missing an expected resource: 'R.string.google_app_id' for initializing Google services. Possible causes are missing google-services.json or com.google.gms.google-services gradle plugin. 
06-05 13:49:27.991 15144-15144/? E/GMPM: Scheduler not set. Not logging error/warn. 
06-05 13:49:28.005 15144-15158/? E/GMPM: Uploading is not possible. App measurement disabled 

ich den Schlüssel für dieses Problem wurde vielleicht denken irgendwie in der Google Developers-Konsole generierten Daten (AppIDs, SHAs etc.) aus, um „google-services.json“ Datei in Unity, aber .aar-Bibliothek, die von Android-Studio generiert wurde, enthält diese Informationen in res/values ​​/ strings-Datei, wie ich denke, es sollte.

ich viele wahrscheinlichen Lösungen teste einschließlich:

  • android Projekt von der Einheit zu exportieren und das Hinzufügen von meiner Bibliothek Modul, um es

  • meine Bibliothek als .jar-Datei bereitstellt und „google-services.json “separat

  • Bereitstellung direkt notwendigen Daten in Unity in res/Werte/Zeichenketten-Datei

  • Zugabe zu exportierte Projekt

mit dem gleichen Fehler Ended, wie ich oben erwähnt.

Mache ich etwas falsch, oder gibt es einen ganz anderen Ansatz für dieses Problem?

Edit:

Android Manifest von Unity (Plugins/Android):

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="<UNITY APP PACKAGE NAME>" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal"> 
    <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 


    <application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true" android:isGame="true" android:banner="@drawable/app_banner"> 

    <activity android:name="<PLUGIN PACKAGE NAME + CLASS NAME>" android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"> 

     <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 
     </intent-filter> 

     <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> 
    </activity> 

    </application> 

    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" /> 
    <uses-feature android:glEsVersion="0x00020000" /> 

    <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> 
    <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" /> 
    <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" /> 
</manifest> 
+0

Welche Daten haben Sie der Datei res/values ​​/ strings von Unity zur Verfügung gestellt? und wie sieht dein 'android manifest' aus? – Hristo

Antwort

1

Nach etwas mehr Tests auf verschiedenen Geräten habe ich entdeckt, wie dieses Problem zu begegnen. Auf beiden primären Testgeräten zeigt logcat diesen Fehler jedes Mal an, wenn eine Anwendung installiert wird. Einschließlich direkt aus Unity oder Android Studio erstellte und solche aus dem Google Play Store. Dieser Fehler scheint überhaupt keine Beziehung zu meinem Problem zu haben.

Das Problem war, dass ich UnityPlayerActivity in meinem Plugin erweitern musste, damit das Popupfenster des Google-Anmeldefensters angezeigt werden konnte.

+0

Ich habe dieses Problem auch. Hast du das gelöst? – lutfianasari

+0

Ich habe es geschafft, dass das Google Login-Fenster erscheint und ich den "Connected" -Rückruf erhalte. Ich habe dieses Tutorial verwendet: https://code.utsplus.com/tutorials/google-fit-for-android-reading-sensor-data-cms-25723 –