2017-06-05 19 views
7

Mục tiêu chính của dự án của tôi là tạo plugin Unity có thể sử dụng API bộ đếm bước của Google Fitness. Nó phải cung cấp một số tính năng như: nhận số bước hàng ngày, nhận tổng số bước, tiết kiệm số tiền trên tài khoản google và cuối cùng là thông báo gửi quan trọng nhất và khó nhất khi số lượng bước đạt đến giá trị được chỉ định.Plugin Android sử dụng API Google Fitness cho Unity3D

Tôi quyết định tạo một plugin android với dịch vụ chạy nền sẽ có thể gửi những thông báo như đã đề cập ở trên, nhưng tôi gặp phải sự cố khi bắt đầu dự án này. Đã xảy ra sự cố khi khởi chạy Dịch vụ của Google, hoạt động hoàn hảo khi tôi sử dụng ứng dụng đó trong ứng dụng Android gốc, nhưng khi tôi đang cố gắng sử dụng nó làm thư viện android trong Unity, nó luôn thất bại.

logcat lỗi:

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 

Tôi đã suy nghĩ quan trọng mà cho vấn đề này có thể là bằng cách nào đó cung cấp dữ liệu (appIds, Shas vv) từ được tạo ra trong Google Developers console “google-services.json” tập tin vào Unity, nhưng thư viện .aar được tạo từ studio android chứa những thông tin đó trong tệp res/values ​​/ strings như tôi nghĩ.

tôi đã được thử nghiệm nhiều giải pháp có thể xảy ra bao gồm:

  • xuất khẩu dự án android từ đoàn kết và thêm mô-đun thư viện của tôi để nó

  • cung cấp thư viện của tôi dưới dạng file .jar và “google-services.json ”Riêng

  • cung cấp dữ liệu cần thiết trực tiếp trong Unity trong tệp res/values ​​/ strings

  • thêm nó vào dự án đã xuất

Đã kết thúc với cùng lỗi như tôi đã đề cập ở trên.

Tôi đang làm điều gì đó sai, hoặc có thể có một cách tiếp cận hoàn toàn khác với vấn đề này?

Edit:

Android Manifest từ 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

Dữ liệu bạn cung cấp cho tệp res/values ​​/ strings của 'Unity' là gì? và 'biểu hiện android' của bạn trông như thế nào? – Hristo

Trả lời

1

Sau một chút thử nghiệm nhiều hơn trên các thiết bị khác nhau, tôi đã khám phá ra làm thế nào để gặp vấn đề này. Trên cả hai thiết bị kiểm tra chính của tôi, logcat hiển thị lỗi này mỗi khi có bất kỳ ứng dụng nào được cài đặt. Bao gồm cả trực tiếp xây dựng từ Unity hoặc Android Studio và những người từ Google Play Store. Lỗi này dường như không có liên quan đến vấn đề của tôi cả.

Vấn đề là tôi phải mở rộng UnityPlayerActivity trong plugin của mình để cho phép cửa sổ đăng nhập Google bật lên để hiển thị.

+0

Tôi cũng gặp vấn đề này. Bạn đã giải quyết điều này? – lutfianasari

+0

Tôi đã quản lý để làm cho cửa sổ Đăng nhập của Google hiển thị và tôi nhận được cuộc gọi lại "Đã kết nối". Tôi đã sử dụng hướng dẫn này: https://code.tutsplus.com/tutorials/google-fit-for-android-reading-sensor-data--cms-25723 –

Các vấn đề liên quan