根据这里的指南,我刚刚将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的beta版本,因此我的测试人员将无法订阅主题以接收传入消息。那我该如何解决这个问题呢?