2016-07-25 5 views
0

Paket nath.prem.com.premmcmproject;Fehler beim Abrufen des GCM-Tokens auf der Clientseite

importieren android.content.Intent;

importieren com.google.android.gms.iid.InstanceIDListenerService;

/** * Erstellt von prem am 22/7/16. */Public class GCMTokenRefreshListenerService erweitert InstanceIDListenerService {

// Wenn das Token das Gerät wieder @Override public void onTokenRefresh Registrierung() geändert wird {Intent Absicht = new Intent (this, GCMRegistrationIntentService.class); startService (Absicht); }}

Fehler beim GCM Token

FATAL AUSNAHME in Client-Seite bekommen: IntentService []

java.lang.IncompatibleClassChangeError: android.support.v4.content.ContextCompat bei com. google.android.gms.iid.zzd.zzdL (Unknown Source)

bei

com.google.android.gms.iid.zzd. (Unknown Source) an com.google.android.gms.iid.zzd. (Unbekannte Quelle) unter com.google.android.gms.iid.InstanceID.zza (Unbekannte Quelle) unter com.google.android.gms.iid.InstanceID.getInstance (Unbekannt Quelle)

das ist der Fehler, den ich immer bin, während gcm immer Token

public class GCMRegistrationIntentService erweitert IntentService {// Konstanten für Erfolg und Fehler public static final String registration_success = "RegistrationSuccess"; public static final Zeichenfolge REGISTRATION_ERROR = "RegistrationError"; // Klassenkonstruktor public GCMRegistrationIntentService() {super (""); } @Override protected void onHandleIntent (Absichtsabsicht) {// gcm beim Gerät registrieren registerGCM(); } private void registerGCM() {// Registrierung abgeschlossen Absicht initial null Intent registrationComplete = null; // Register token ist auch null // wir werden das token bei erfolgreicher registrierung erhalten String token = null; SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences (this); try {// Instanz-ID erstellen Instanz-ID instanceID = InstanceID.getInstance (this); // // // Das Token von der Instanz-ID abrufen token = instanceID.getToken (getString (R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); // Anzeigen des Tokens im Protokoll, sodass wir es zum Senden von Push-Benachrichtigungen kopieren können // Sie können die App auch erweitern, indem Sie das Token auf Ihrem Server speichern Log.w ("GCMRegIntentService", "token:" + Token); // bei der Registrierung die Absicht mit dem Erfolg abschließen registrationComplete = neue Absicht (REGISTRATION_SUCCESS); // Setzen des Tokens in die Absicht // registrationComplete.putExtra ("Token", Token); } catch (Exception e) {// Wenn ein Fehler aufgetreten ist Log.w ("GCMRegIntentService", "Registrierungsfehler"); registrationComplete = neue Absicht (REGISTRATION_ERROR); } // Senden der Übertragung, für die die Registrierung abgeschlossen ist LocalBroadcastManager.getInstance (this).sendBroadcast (registrationComplete); }}

dies ist der Java-Code dieser Klasse

das ist mein menifest Datei im Projekt ...... Aber ich kann nicht der Protokolle sehen in RegistrationIntentService:

+1

Bitte bearbeiten und formatieren Sie den Code. Überprüfen Sie diese http://stackoverflow.com/editing-help – jayeshsolanki93

Antwort

0

Try this,

hinzufügen compile 'com.google.android.gms:play-services-gcm:9.0.2' Abhängigkeit in Ihrem build.gradle

private void registerToGCM() { 
     new AsyncTask<String, String, String>() { 
      ProgressDialog progressDialog; 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       progressDialog = new ProgressDialog(LoginActivity.this); 
       progressDialog.setMessage(getString(R.string.gcm_register_message)); 
       progressDialog.setCancelable(false); 
       progressDialog.show(); 
      } 
      @Override 
      protected String doInBackground(String... params) { 
       String registryId = null; 
       try { 
        InstanceID instanceID = InstanceID.getInstance(getApplicationContext()); 
        registryId = instanceID.getToken(getString(R.string.gcm_defaultSenderId), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 
       } catch (Exception ex) { 
        Log.e("MAINACIVITY", "gcm register Error " + ex.toString()); 
       } 
       return registryId; 
      } 

      @Override 
      protected void onPostExecute(String registeredId) { 
       super.onPostExecute(registeredId); 
       progressDialog.dismiss(); 
       // perform action here 
      } 
     }.execute(""); 
    } 
+0

Haben Sie meine Lösung versucht? –

Verwandte Themen