我刚刚根据本指南将GCM更新为FCM 这里。该网站说,一旦生成令牌,我将调用扩展FirebaseInstanceIdService的服务。出于某种原因,我的服务从未被调用过 onTokenRefresh
从未被执行过。
根据指南,我的服务是这样注册的:
<service android:name=".fcm.FcmService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service android:name=".fcm.InstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCEID_EVENT"/>
</intent-filter>
</service>
我的服务:
public class InstanceIdService extends FirebaseInstanceIdService {
private static final String TAG = "InstanceIdService";
@Override
public void onTokenRefresh() {
String token = FirebaseInstanceId.getInstance().getToken();
Log.e(TAG, "Got token: " + token);
}
}
LogCat没有说明丢失配置文件或其他任何内容,我可以看到有关FirebaseApp的日志和提及令牌的日志条目,但我的服务仍然没有被调用。
我是否需要在我的活动中的某个地方启动此服务? 难道我做错了什么?有人可以指导我正确的方向吗?
编辑:使用 Log.e("TOKEN", "Token: " + FirebaseInstanceId.getInstance().getToken());
正确打印我的令牌,这意味着它已成功生成。该服务仍未被调用...
编辑2:将INSTANCEID_EVENT更改为INSTANCE_ID_EVENT解决了问题,但我必须重新安装该应用程序。由于我已经发布了包含新FCM的测试版,我的测试版测试人员将无法订阅主题以显示传入的消息。那我该怎么解决呢?