Google Play services: How to handle devices that do not have Google Play?

前端 未结 4 995
栀梦
栀梦 2020-12-13 19:27

Google Play services is an Android library whose goal is to provide:

  • OAuth 2.0 authentication
  • Google+ sign-in
  • Google+ +1 button
  • vari
相关标签:
4条回答
  • 2020-12-13 19:49

    If you are somehow required to use Play Services, or if you maintain a legacy app that makes calls to Play Services, then I would recommend this strategy:

    1. On app start, check whether Play Services is available or not
    2. If not available, redirect Play Services calls to microG

    microG is an open source implementation of Google Play Services.
    It lacks many features, but is under active development. Many features are still stubs.

    For location services, there is also LOST, a drop-in replacement for the Google Play services location APIs.

    You app might not work perfectly, but at least it is better than crashing.

    Of course, the best is to NOT use Google Play Services, from the start.

    0 讨论(0)
  • 2020-12-13 19:52

    If your app uses GMS features like Google Sign-In or Firebase Cloud Messaging, it won't work well on the devices that don't have GMS. It's recommended that you use GMS if a device supports GMS; otherwise, use HMS (Huawei Mobile Services).

    Please refer to the following links:

    • To check whether GMS is available
    • HMS Overview
    • HUAWEI Account Kit

    So you can use Google+ Sign-In on the devices where GMS is available; otherwise, use HUAWEI Account Sign-In.

    0 讨论(0)
  • 2020-12-13 19:54
    GooglePlayServicesUtil.isGooglePlayServicesAvailable(android.content.Context)
    

    is deprecated!

    Use:

     GoogleApiAvailability api = GoogleApiAvailability.getInstance();
            int code = api.isGooglePlayServicesAvailable(activity);
            if (code == ConnectionResult.SUCCESS) {
               // Do Your Stuff Here
            } else {
               AlertDialog alertDialog =
                     new AlertDialog.Builder(activity, R.style.AppCompatAlertDialogStyle).setMessage(
                           "You need to download Google Play Services in order to use this part of the application")
                           .create();
               alertDialog.show();
            }
    
    0 讨论(0)
  • 2020-12-13 19:57

    If the feature from Google Play Services is essential for your app there would be no way to get your App working.

    You can check if the services are enabled from within your app with GooglePlayServicesUtil.isGooglePlayServicesAvailable(android.content.Context)
    which returns ConnectionResult.SUCCESS if Play Services is available.

    You can now try to convince the user to install it (if possible) or disable the feature that is using the service.

    As the Google Play Services is not a feature declared in the manifest your app should install fine on any device but may crash later on if you are using the APIs without checking if they are available.

    You can try the behaviour with the emulator. Just create an AVD without the Google APIs and put your App on it.

    0 讨论(0)
提交回复
热议问题