FirebaseInstanceIdService getToken null zurückgeben
Ich bin versucht, hinzuzufügen FCM-Benachrichtigungen an meine app, aber aus irgendeinem Grund
FirebaseInstanceId.getInstance().getToken();
ist die Rückgabe null.
Da ich nicht immer alle stacktrace meine beste Vermutung ist, dass FirebaseInstanceIdService nicht funktioniert
- Google Play-Dienste version: 9.6.1
- FB-messaging-version : 9.6.1
- Hinzugefügt json-config-Datei von FirebaseConsole (Versucht eine einzige Datei mit 2 clients drin, die man für debug und eine für release-build) und 2 Dateien für den jeweiligen build
Iw angewendet, google-Dienste-plugin am unteren Rand meine Module gradle-Skript
Inklusive google-Dienste in Projekten root-gradle-Skript
Erstellt 2 Leistungen aus dem officail docs:
public class MyFirebaseInsanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
@Override
public void onTokenRefresh() {
//Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
PreferencesHelper.putSharedPreferencesString(Constants.User.PUSH_NOTIFICATIONS, refreshedToken);
Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken());
}
}
Und das manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.fc.test">
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name="fctest"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="${appName}${appNameSuffix}"
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:node="replace">
<service
android:name="com.fc.test.MyFirebaseInsanceIDService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name="com.fc.test.MyFirebaseMessagingService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<activity
android:name="com.fc.test.view.splash.Splash"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.CenterAnimation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
root-Gradle:
buildscript {
repositories {
jcenter()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
//noinspection GradleDynamicVersion
classpath 'io.fabric.tools:gradle:1.+'
classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
jcenter()
maven { url "http://dl.bintray.com/drummer-aidan/maven" }
maven { url "https://maven.fabric.io/public" }
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
maven { url "https://jitpack.io" }
}
}
ext {
buildToolsVersion = '24.0.1'
compileSdkVersion = 24
minSdkVersion = 15
targetSdkVersion = 24
supportLibraryVersion = '24.2.1'
}
und der größte Teil der Module Gradle
dependencies {
final PLAY_SERVICES_VERSION = '9.6.1'
final SUPPORT_LIBRARY_VERSION = '24.2.1'
final RETROFIT_VERSION = '2.1.0'
final DAGGER_VERSION = '2.5'
final DEXMAKER_VERSION = '1.4'
final HAMCREST_VERSION = '1.3'
final ESPRESSO_VERSION = '2.2.1'
final RUNNER_VERSION = '0.4'
final BUTTERKNIFE_VERSION = '8.1.0'
def daggerCompiler = "com.google.dagger:dagger-compiler:$DAGGER_VERSION"
def jUnit = "junit:junit:4.12"
def mockito = "org.mockito:mockito-core:1.10.19"
//App Dependencies
compile "com.google.android.gms:play-services-gcm:$PLAY_SERVICES_VERSION"
compile "com.google.firebase:firebase-messaging:$PLAY_SERVICES_VERSION"
compile "com.android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION"
compile "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
compile "com.android.support:cardview-v7:$SUPPORT_LIBRARY_VERSION"
compile "com.android.support:design:$SUPPORT_LIBRARY_VERSION"
compile "com.android.support:support-annotations:$SUPPORT_LIBRARY_VERSION"
compile "com.android.support:support-v4:$SUPPORT_LIBRARY_VERSION"
compile "com.squareup.retrofit2:retrofit:$RETROFIT_VERSION"
compile "com.squareup.retrofit2:converter-gson:$RETROFIT_VERSION"
compile "com.squareup.retrofit2:adapter-rxjava:$RETROFIT_VERSION"
compile "com.jakewharton:butterknife:$BUTTERKNIFE_VERSION"
compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
transitive = true;
}
}
apply plugin: 'com.google.gms.google-services
- Beachten Sie, dass im mit
tools:node="replace"
in meinem stammanwendungs-tag.
Ist es möglich, dassFirebaseInstanceIdService
ist nicht mehr zu manifestieren, da Sie den gleichen Vorsatz-filter, wie mirFirebaseInstanceService
und somit nicht aufgerufen?
Also hier meine Frage wäre, gibt es etwas falsch es die offiziellen docs oder in meiner Implementierung, sollte dazu führen, dass die Instanz token auf null sein?
Ist eine aktuelle version der Google Play Services auf dem Gerät installiert oder emulator?
Ja ich bin testen diese auf meinem Gerät GS-version 9.6.83
Überprüfen Sie, dass die
ja es sind die gleichen
Ich habe angefangen zu denken, Sie sind Recht
Ja ich bin testen diese auf meinem Gerät GS-version 9.6.83
Überprüfen Sie, dass die
Sender ID
gezeigt, die auf der Cloud-Messaging-Registerkarte Projekt-Einstellungen in der FB-Konsole entspricht den project_number
enthalten in Ihrem google-services.json-Datei.ja es sind die gleichen
Ich habe angefangen zu denken, Sie sind Recht
tools:node="replace"
das problem, wissen aber nicht konkret warum. Ist es möglich, erstellen Sie die app auch ohne es?
InformationsquelleAutor Ivan Milisavljevic | 2016-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem Graben bis thru alte Implementierungen von FCM und generiert manifestiert, kann ich jetzt sagen, die offenbar die Fusion ist das problem.
Lösung für dieses problem ist das hinzufügen dieser Klassen zu den apps manifestieren Händisch
InformationsquelleAutor Ivan Milisavljevic
Während ich dabei war die migration hatte ich ein problem es war, dass habe ich nicht erhalten eine Benachrichtigung. Um dieses Problem zu lösen und Wenn Sie Ihre GCM zu arbeiten, vergessen Sie nicht, Ihre Absender-ID, wenn man den FB-Token. Konsultieren Sie diese ID, die Sie haben zu navigieren, um Ihre FB-Projekt, und klicken Sie auf Namen für das Projekt. Klicken Sie auf die Einstellung Symbol und wählen Sie "Projekt-Einstellung" - Menü Wählen Sie "Könnte Messaging" - Registerkarte, und verwenden Sie die Absender-ID auf der Seite.
Und wenn sagt code:
Verwenden Sie diese:
Es für mich funktioniert, ich hoffe das hilft dir 😉
InformationsquelleAutor J.Arroyo
Ersten genarate "google-Dienste.json" und Fügen Sie diese Datei in Ihrem android studio Wie dieses projectFolder/APP/google-Dienste.json
Classpath hinzufügen, um top-level zu bauen.gradle
Fügen Sie folgenden plugin und Abhängigkeiten in der app zu bauen.gradle
Fügen Sie die folgende FB-Dienste in Ihre java-Dateien
FirebaseIDService.java
MyFirebaseMessagingService.java
Dienst hinzufügen in Ihre AndroidMainifest.xml Datei
Erinnern internet-Berechtigung mainifest-Dateien <uses-permission android:name="android.die Genehmigung.INTERNET" />
Danke 🙂 aber ich habe das auch
hinzufügen gradle code in den beiden Dateien. Und google-Dienste.json-Dateien von FB und in der app-Ordner.
bearbeitet meine Frage
InformationsquelleAutor Jigar Patel