我正在使用 FirebaseInstanceIdService 的服务来获取刷新的令牌。 但是,它从未调用过,并且始终警告
MyFirebaseInstanceIdService未在 清单
公共类MyFirebaseInstanceIdService扩展了FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Timber.d("Refreshed token: " + refreshedToken);
}
}
清单
<service
android:name="MyFirebaseInstanceIdService"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name="com.arts.m3droid.samatravel.empl.MyMessageService"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
我使用firebase的文档以及通过在Android Studio中创建新的服务(“文件”>“新建”>“服务”>“服务”)将服务添加到清单中。
答案 0 :(得分:3)
我希望这对您有用。
在您的程序包中创建MyFirebaseInstanceIdService。
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.e(TAG, "Refreshed token: " + refreshedToken);
storeToken(refreshedToken);
}
private void storeToken(String token) {
//Store your token in sharedpreference.
}
}
然后在清单中这样调用。
<service android:name=".MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
答案 1 :(得分:0)
更新清单以指定服务类的完整软件包名称,例如:
android:name="com.arts.m3droid.samatravel.empl.MyFirebaseInstanceIdService"
您也可以使用“。”为应用程序包名称,例如shown in the documentation:
android:name=".MyFirebaseInstanceIdService"
另请参阅documentation for Service name:
实现服务的Service子类的名称。这个 应该是完全合格的类名(例如, “ com.example.project.RoomService”)。但是,作为简写,如果 名称的第一个字符是句点(例如,“。RoomService”), 它被附加到在 元素。