0

Ich integriere Push-Benachrichtigung für Firebase gemäß den Dokumenten, die ich google-services.json in mein Projekt gelegt habe, sind meine Größen wie folgt.Firebase-Instanz-ID gibt null zurück

Top Level gradle

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.0' 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

Projektebene Gradle

compileSdkVersion 24 
    buildToolsVersion "24.0.2" 

    dependencies { 
     compile fileTree(include: ['*.jar'], dir: 'libs') 
     testCompile 'junit:junit:4.12' 
     compile project(':humanapi-sdk') 
     compile files('libs/Android_iwown_Ble.jar') 
     compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
      transitive = true; 
     } 

     compile 'com.android.support:support-compat:24.2.0' 
     compile 'net.danlew:android.joda:2.9.2' 
     compile 'com.android.support:multidex:1.0.1' 
     compile 'com.android.support:appcompat-v7:24.2.0' 
     compile 'com.android.support:design:24.2.0' 
     compile 'com.android.support:cardview-v7:24.2.0' 
     compile 'com.android.support:recyclerview-v7:24.2.0' 
     compile 'com.android.support:customtabs:24.2.0' 

     compile 'com.google.firebase:firebase-messaging:9.6.1' 


    } 

    apply plugin: 'com.google.gms.google-services' 

In meinem Aktivitätscode

String token = FirebaseInstanceId.getInstance().getToken(); 
     Log.i(TAG,"Firebase token: "+token); 

Token zurückgegeben wird, ist immer null

+0

Können Sie bitte Ihre Manifest-Datei hier posten? – dhuma1981

+0

@ dhuma1981I hatte manifeste Erlaubnis durcheinandergewürfelt behoben – Sutirth

Antwort

0

Sein völlig falsch !!! ! Sie können die ID nur im FirebaseInstanceIdService erhalten!

Es wird automatisch widerrufen und kann nicht manuell durchgeführt werden.

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 

private static final String TAG = "MyFirebaseIIDService"; 

/** 
* Called if InstanceID token is updated. This may occur if the security of 
* the previous token had been compromised. Note that this is called when the InstanceID token 
* is initially generated so this is where you would retrieve the token. 
*/ 
@Override 
public void onTokenRefresh() { 
    // Get updated InstanceID token. 
    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Refreshed token: " + refreshedToken); 
} 
} 

Vergessen Sie nicht, den Dienst auch zu Ihrem Manifest hinzuzufügen.

+0

Ich habe einen Dienst hinzugefügt, aber Refresh Token wird nie gedruckt. Und außerdem hat Firebase Beispiel App auf Github einen Anruf in der Haupttätigkeit sowie – Sutirth

+0

Ich hatte die Erlaubnis in Manifest durcheinander gebracht ist getan – Sutirth

-1

Die Einrichtung von Firebase Setup Guide funktioniert gut, aber manchmal funktioniert es nicht. Token wird nicht generiert.

„Nachdem durch alte Implementierungen von FCM ausgrub und erzeugt Manifeste, kann ich jetzt sagen, dass manifest Fusion ist das Problem.

Lösung für dieses Problem, diese Klassen der Anwendungen manifestieren manualy ist das Hinzufügen von“

<activity 
    android:name="com.google.android.gms.common.api.GoogleApiActivity" 
    android:exported="false" 
    android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 

<meta-data 
    android:name="com.google.android.gms.version" 
    android:value="@integer/google_play_services_version" /> 

<service 
    android:name="com.google.firebase.messaging.FirebaseMessagingService" 
    android:exported="true" > 
    <intent-filter android:priority="-500" > 
     <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
    </intent-filter> 
</service> 

<receiver 
    android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" 
    android:exported="true" 
    android:permission="com.google.android.c2dm.permission.SEND" > 
    <intent-filter> 
     <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
     <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

     <category android:name="com.fc.debug" /> 
    </intent-filter> 
</receiver> 


<receiver 
    android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" 
    android:exported="false" /> 
<!-- 

--> 
<service 
    android:name="com.google.firebase.iid.FirebaseInstanceIdService" 
    android:exported="true" > 
    <intent-filter android:priority="-500" > 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
    </intent-filter> 
</service> 

<provider 
    android:name="com.google.firebase.provider.FirebaseInitProvider" 
    android:authorities="com.fc.debug.firebaseinitprovider" 
    android:exported="false" 
    android:initOrder="100" /> 

<receiver 
    android:name="com.google.android.gms.measurement.AppMeasurementReceiver" 
    android:enabled="true" > 
    <intent-filter> 
     <action android:name="com.google.android.gms.measurement.UPLOAD" /> 
    </intent-filter> 
</receiver> 

<service 
    android:name="com.google.android.gms.measurement.AppMeasurementService" 
    android:enabled="true" 
    android:exported="false" /> 

Referenz: https://stackoverflow.com/a/40009448/5740236