如何检测是否从 Unity 安装了 Google Play 服务?

Cla*_*son 1 c# android unity-game-engine google-play-services

有些设备没有安装 Google Play 服务,所以我不能使用像 Google Play 游戏服务这样的 API。在 Unity 中,如何检测未安装 Play 服务,因此我必须跳过调用 GPGS?

我知道我需要调用GoogleApiAvailability.isGooglePlayServicesAvailable,但我需要从 C#调用。

Cla*_*son 6

您需要使用 Unity 中的 JNI 支持从 C# 调用 Java API。在这种情况下,对 isGooglePlayServicesAvailable 的调用将如下所示:

 public bool IsPlayServicesAvailable()
        {
            const string GoogleApiAvailability_Classname = 
                "com.google.android.gms.common.GoogleApiAvailability";
            AndroidJavaClass clazz = 
                new AndroidJavaClass(GoogleApiAvailability_Classname);
            AndroidJavaObject obj = 
                clazz.CallStatic<AndroidJavaObject>("getInstance");

            var androidJC = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            var activity = androidJC.GetStatic<AndroidJavaObject>("currentActivity");

            int value = obj.Call<int>("isGooglePlayServicesAvailable", activity);

            // result codes from https://developers.google.com/android/reference/com/google/android/gms/common/ConnectionResult

            // 0 == success
            // 1 == service_missing
            // 2 == update service required
            // 3 == service disabled
            // 18 == service updating
            // 9 == service invalid
            return value == 0;
        }
Run Code Online (Sandbox Code Playgroud)