android - 仅在身份验证后运行 FirebaseInstanceIdService

标签 android firebase firebase-cloud-messaging

FirebaseInstanceIdService 在应用程序的开头启动,我希望它仅在身份验证后生成 token 。

我在 MainActivity 中尝试了这一行(它在身份验证后运行)但它没有用:

startService(new Intent(this, FirebaseInstanceIDService.class));

这是我的服务声明:

<service android:name=".services.FirebaseInstanceIDService" >
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>

谢谢。

最佳答案

您将始终在授权之前获得实例 ID。你可以

1)在onTokenRefresh()中保存到shared preferences,auth后处理

2) 手动授权后获取。

两种情况下的代码都是一样的

FirebaseInstanceId.getInstance().getToken()

它无处不在,因为底层是单例。只是不要忘记检查,如果出现意外错误,它不为空,那永远不会发生。 (至少,它从未发生在我身上)

这个 token 在授权前后是一样的,但可能会随着时间的推移而改变。有,我是怎么处理的

if (FirebaseAuth.getInstance().getCurrentUser()!=null) {
    processToken(FirebaseInstanceId.getInstance().getToken())
}

在授权之后:只是 processToken(FirebaseInstanceId.getInstance().getToken())

就这样

关于android - 仅在身份验证后运行 FirebaseInstanceIdService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40470462/

相关文章:

android - 如何使用自定义布局显示 Firebase 通知?

java - 如何将整数数组从 AsyncTask 获取到同一 Activity 中的另一个方法?

android - Android 2.3.3 适合使用哪种推送通知方法?

angular - 如何获取具有id的特定文档数据? | AngularFire 5.1.1 | Cloud Firestore |文件资料

firebase-messaging - 致命的 : failed to find callback

firebase - 监控 Firebase 存储变化的最佳方式

android - 如何使用 Jenkins、github 和 android studio

android - 如何使用分页库代替普通的适配器和recyclerview?

firebase - 对于事务中的多次写入,Firestore 服务器时间戳是否相同?

android - Firebase 监听器代码未被触发