11

Ich richte Google Cloud Messaging in einer Android-Anwendung ein. Am Anfang initialisiere ich die GoogleApiClient um, ob die Play-Dienste verfügbar sind zu überprüfen:IllegalArgumentException beim Hinzufügen von Cloud-Messaging-API zu GoogleApiClient

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

Der Versuch, es zu laufen IllegalArgumentException: must call addApi() to add at least one API produziert, also muss ich auch die GCM Api hinzufügen, aber ehrlich gesagt kann ich nicht finden es auf der Dokumentation. Etwas wie:

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

AFAIK Sie ** brauchen nicht ** 'GoogleApiClient' für GCM – Selvin

+1

Es ist nicht unbedingt erforderlich, aber die Dokumentation" stark ermutigt ", es zu verwenden, um zu überprüfen, ob die Play Services verfügbar sind oder nicht: https : //developers.google.com/android/guides/setup – ticofab

+1

Sie können auch 'GooglePlayServicesUtil' verwenden, um dies zu tun ... Ich sehe Ihren Punkt (API sollte konsistent sein), aber ... verwenden Sie' GooglePlayServicesUtil.isGooglePlayServicesAvailable (Aktivität) '' dann GooglePlayServicesUtil.isUserRecoverableError (Result) 'und dann' GooglePlayServicesUtil.getErrorDialog (Result, Aktivität, Anfrage) .show() ' – Selvin

Antwort

5

Es sieht aus wie es keine Möglichkeit, noch ist GoogleApiClient in Verbindung mit Google Cloud Messaging zu nutzen. Bis dahin müssen wir den GooglePlayServicesUtil Weg verwenden.

+3

das ist eine Überraschung falsche Anweisungen in den GCM docs zu sehen ... – Dori

+6

GooglePlayServicesUtil für diese veraltet und sagt 'GoogleApiAvailability.getInstance() zu verwenden. IsGooglePlayServicesAvailable (dies); 'statt – Dori

+0

Wo hast du das @Dori gesehen? Ich kann nicht einmal die GoogleApiAvailability-Klasse – voghDev