在我的安卓应用程序中,我正在尝试在不同的进程(不是线程(中使用 firebase 服务。我在 Firebase 使用的所有服务中添加了进程名称。
<service
android:name=".firebaseclient.CCTFirebaseMessagingService"
android:process=":fcmProcess">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name=".firebaseclient.FirebaseInstanceIDService"
android:process=":fcmProcess"
>
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
我应该在FirebaseInstanceIDService的方法中收到回电:-
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
}
但我没有得到任何回电。除此之外,Firebase 正在应用程序的主进程中初始化,这可能导致这种情况?
请帮助我回调到onTokenRefresh方法。
基于这个答案,您应该避免将Firebase置于第二个进程中。
顺便说一句,您可以尝试在第二个过程中手动初始化Firebase实例,使用以下命令
FirebaseApp.initializeApp(Context context, FirebaseOptions options)
//or
FirebaseApp.initializeApp(Context context, FirebaseOptions options, String appName)
参考文档: https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp#initializeApp(android.content.Context,%20com.google.firebase.FirebaseOptions(
PS:我从来没有尝试过,所以我不能确定这是否有效。
任何 FirebaseApp 初始化都必须仅在应用的主进程中进行。 不支持在主进程以外的进程中使用 Firebase,这可能会导致与资源争用相关的问题。
ref form:https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp#initializeApp(android.content.Context,%20com.google.firebase.FirebaseOptions(
所以最后我们不能不这样做。