11

Konfiguruję Google Cloud Messaging w aplikacji na Androida. Na początku, ja zainicjalizować GoogleApiClient w celu sprawdzenia, czy zabaw Usługi są dostępne:IllegalArgumentException podczas dodawania api do komunikatorów w chmurze do GoogleApiClient

mGoogleApiClient = new GoogleApiClient.Builder(this) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .build(); 

Próba uruchomienia produkuje IllegalArgumentException: must call addApi() to add at least one API, dlatego też trzeba dodać API GCM, ale szczerze mówiąc nie mogę znaleźć to na dokumentacji. Coś jak:

mGoogleApiClient = new GoogleApiClient.Builder(this) 
     .addApi(gcm.API)  <----- WHAT HERE? 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .build(); 
+1

AFAIK ** nie potrzebujesz ** GoogleApiClient dla GCM – Selvin

+1

Nie jest to bezwzględnie potrzebne, ale dokumentacja "zdecydowanie zachęca" do jej używania w celu sprawdzenia, czy Usługi Play są dostępne, czy nie: https : //developers.google.com/android/guides/setup – ticofab

+1

możesz również użyć 'GooglePlayServicesUtil', aby to zrobić ... Rozumiem twój punkt (API powinien być spójny), ale ... użyj' GooglePlayServicesUtil.isGooglePlayServicesAvailable (activity) 'then' GooglePlayServicesUtil.isUserRecoverableError (resultCode) ', a następnie' GooglePlayServicesUtil.getErrorDialog (resultCode, activity, request) .show() ' – Selvin

Odpowiedz

5

Wygląda na to, nie ma sposobu, aby korzystać GoogleApiClient jeszcze w połączeniu z Google Cloud Messaging. Do tego czasu musimy użyć metody GooglePlayServicesUtil.

+3

To zaskoczenie, gdy widzisz złą instrukcję w dokumentach GCM ... – Dori

+6

GooglePlayServicesUtil jest przestarzała i mówi, że używa 'GoogleApiAvailability.getInstance(). isGooglePlayServicesAvailable (to); 'zamiast – Dori

+0

Skąd widziałeś @Dori? Nie mogę nawet znaleźć klasy GoogleApiAvailability – voghDev