仅在身份验证后运行FirebaseInstanceIdService

时间:2016-11-07 16:56:23

标签: android firebase firebase-cloud-messaging

FirebaseInstanceIdService在应用开始时启动,我希望它仅在验证后生成令牌。

我在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>

感谢。

1 个答案:

答案 0 :(得分:3)

您将始终在auth之前获取实例ID。你可以

1)将其保存到onTokenRefresh()中的共享首选项,然后在auth

之后处理它

2)手动验证后获取它。

在这两种情况下代码都是相同的

FirebaseInstanceId.getInstance().getToken()

它随处可见,因为下面是单身人士。只是不要忘记检查,如果出现意外错误,它不会为空,应该永远不会发生。 (至少,它从来没有发生在我身上)

此令牌在身份验证之前和之后都是相同的,但可能会随着时间的推移而改变。有,我如何处理

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

在auth之后:只有processToken(FirebaseInstanceId.getInstance().getToken())

这就是全部