2016-09-11 4 views
0

Я читал другие сообщения по этому вопросу, но ни один из них не помогает мне. Моя проблема в том, что я НИКОГДА не получаю токен. Я могу переустановить приложение, независимо от того, он никогда не генерирует.Firebase onTokenRefresh() никогда не назывался

Есть ли что-то, что мне нужно для инициализации Firebase?

Вот некоторые фон:

У меня есть google-services.json файл, который я скачал с консоли Firebase хранится в каталоге Src.

enter image description here

Я вошел в мой debug.keystore SHA 1 отпечаток на Firebase консоли.

У меня есть следующие зависимости в моем build.gradle файле:

compile 'com.google.firebase:firebase-core:9.4.0'
compile 'com.google.firebase:firebase-messaging:9.4.0'

Я следовал Firebase instructions к письму:

MyFirebaseInstanceIdService.java

public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService { 

    private static final String TAG = "MyFirebaseIIDService";  

    @Override 
    public void onTokenRefresh() { 
     Log.d(TAG, "on token refresh"); 
     // Get updated InstanceID token. 
     String token = FirebaseInstanceId.getInstance().getToken(); 
     Log.d(TAG, "Refreshed token: " + token); 

     sendRegistrationToServer(token); 
    } 

    private void sendRegistrationToServer(String token) { 
    } 
} 

И у меня есть это в теге <application> в манифесте:

<service 
android:name=".HelperClasses.PushNotifications.MyFirebaseInstanceIdService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
    </intent-filter> 
</service> 

В отчаянии, я добавил эту строку в метод OnCreate() моего MainActivity.java файла:

FirebaseInstanceId.getInstance().getToken(); 

Это просто разбивает приложение с этой ошибкой:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mobilenicity.werun/com.mydomain.myapp.Activities.ViewControllers.MainActivity}: java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.

Конечно, я исследовал эту ошибку, но ни одно из решений не помогло мне.

Не знаю, куда обратиться, но у меня явно что-то отсутствует. Может кто-нибудь пролить некоторый свет на это? Спасибо.

EDIT

Вот модуль build.gradle файла:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.1.3' 
     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     mavenCentral() 
     maven {url 'https://oss.sonatype.org/content/repositories/snapshots/'} 
    } 
} 
+1

Я думаю, что файл Google-services.json должен быть внутри папки приложения, а не папка ЦСИ –

+0

Я думаю, что вы правы. Хороший улов. К сожалению, это, похоже, не решает проблему. Я поменяю свой снимок экрана. Благодаря! – Alex

+0

После размещения google-services.json в правой папке вам нужно переустановить приложение, поскольку метод onTokenRefresh() запускается только в первый раз, то есть когда приложение установлено. –

ответ

0

Вы добавили в конфигурационный файл JSon При настройке firebase?

To add Firebase to your app you'll need a Firebase project and a Firebase configuration file for your app.

Create a Firebase project in the Firebase console, if you don't already have one. If you already have an existing Google project associated with your mobile app, click Import Google Project. Otherwise, click Create New Project.

Click Add Firebase to your Android app and follow the setup steps. If you're importing an existing Google project, this may happen automatically and you can just download the config file.

When prompted, enter your app's package name. It's important to enter the package name your app is using; this can only be set when you add an app to your Firebase project.

At the end, you'll download a google-services.json file. You can download this file again at any time. If you haven't done so already, copy this into your project's module folder, typically app/.

+0

Вот как я получил файл google-services.json, который я показал на снимке экрана моего ОП. – Alex

+1

@Alex: В своем собственном ответе вы говорите, что вы поставили 'google-services.json' в неправильную папку. Который мне кажется, что этот ответ был (если не прямым кликом), по крайней мере, указывая в правильном направлении. –

0

У меня была та же проблема.

Во-первых, я пропустил, чтобы добавить в файл корневого уровня build.gradle запись класса com.google.gms: google-services: 3.0.0.

Кроме того, вы должны добавить следующее в нижней части сборки модуля.Gradle файл:

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

Посмотрите на firebase инструкции по установке: https://firebase.google.com/docs/android/setup#add_firebase_to_your_app

0

Я не уверен в вашей реализации, но у меня есть еще один подход, который я использовал, который работает.

Я называю следующий код из AsyncTask в Fetch Firebase Токен:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
String userId = user.getUid(); 
Task<GetTokenResult> z1 = user.getToken(false);//true means it force refreshes the token, false means will update only if expired-- token by default expires in an hour 
     try { 
      Tasks.await(z1); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
final String z2 = z1.getResult().getToken(); 
Смежные вопросы