我已经阅读了有关此问题的其他帖子,但他们都没有帮助我。我的问题是我永远不会得到一个令牌。我可以重新安装应用程序,无论它从未生成。
我是否需要做一些初始化Firebase的事情?
以下是一些背景知识:
我有一个google-services.json
文件,我是从存储在src目录下的Firebase控制台下载的。
我在Firebase控制台上输入了debug.keystore
SHA 1指纹。
我的build.gradle
文件中有以下依赖项:
编译'com.google.firebase:firebase-core:9.4.0' 编译'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>
绝望之下,我将此行添加到MainActivity.java文件的onCreate()方法中:
FirebaseInstanceId.getInstance().getToken();
这只会使应用程序出现此错误:
java.lang.RuntimeException:无法启动活动 ComponentInfo {com.mobilenicity.werun / com.mydomain.myapp.Activities.ViewControllers.MainActivity}: java.lang.IllegalStateException:名为[DEFAULT]的FirebaseApp 不存在。
当然,我已经研究过这个错误,但没有一个解决方案对我有帮助。
不知道下一步该转弯,但我显然遗漏了一些东西。任何人都可以对此有所了解吗?谢谢。
修改
这是模块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/'}
}
}
答案 0 :(得分:2)
我遇到了同样的问题。
首先,我错过了将类路径条目'com.google.gms:google-services:3.0.0'添加到我的根级build.gradle文件。
此外,您还必须在模块build.gradle文件的底部添加以下内容:
apply plugin: 'com.google.gms.google-services'
查看firebase设置说明:https://firebase.google.com/docs/android/setup#add_firebase_to_your_app
答案 1 :(得分:0)
您是否在设置firebase时添加了json配置文件?
要将Firebase添加到您的应用中,您需要一个Firebase项目和一个 适用于您应用的Firebase配置文件。
如果不这样做,请在Firebase控制台中创建Firebase项目 已经有一个。如果您已有Google 与您的移动应用相关联的项目,请点击导入Google Project。 否则,请单击“创建新项目”。
点击添加Firebase到您的Android应用,然后按照设置步骤操作。如果 您正在导入现有的Google项目,这可能会发生 自动,您只需下载配置文件。
出现提示时,输入您应用的包名称。进入是很重要的 您的应用正在使用的包名称;这只能在您添加时设置 您的Firebase项目的应用程序。
最后,您将下载google-services.json文件。您可以 随时再次下载此文件。 如果您还没有这样做,请将其复制到项目的模块文件夹中,通常是app /.
答案 2 :(得分:0)
我不确定您的实施情况,但我确实采用了其他可行的方法。
我从Asynctask调用以下代码来获取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();