【发布时间】:2021-03-30 14:56:18
【问题描述】:
在 Google firebase-talk 小组中发布了此内容,但没有任何回复,因此在此处发布:
我正在尝试将 Firebase 消息传递卸载到我的应用中的独立进程中,与主应用进程不同。我读过这个blog by Doug Stevenson,它说Firebase 在使用ContentProviders (FirebaseInitProvider) 的应用程序的主进程中默认初始化。
这个小组之前的对话似乎表明在辅助进程中初始化 Firebase 应该可行:
“ContentProviders 不是在其他进程中创建的,因此您必须在其他进程中手动初始化 Firebase 才能使用 Firebase 功能。我自己还没有尝试过,但我的理解是您应该通过FirebaseApp 单例使用它的initializeApp() 函数,它需要三个参数。您需要安排在预期在另一个进程中运行的组件的入口点发生这种情况。
"
这是我尝试过的:
- 我创建了一个扩展
FirebaseMessagingService的FirebaseListenerService并将其添加到清单中以在辅助过程中出现:
<service
android:name=".xxx.yyy.FirebaseListenerService"
android:enabled="true"
android:process="secondary"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
- 在此 FirebaseListenerService 中,我重写了 onCreate 函数并在此处初始化 FirebaseApp:
@Override
public void onCreate() {
FirebaseApp.initialize(/** context */, /** options */);
}
我可以看到“辅助”进程正确启动。 我还看到 onCreate() 被调用。 但是我没有看到 FirebaseListenerService 通过 onMessageReceived() 收到任何消息
我相信这在理论上应该可行,但正如 Doug 在二次进程中提出 Firebase 之前的对话中提到的那样,没有经过很好的测试,所以我很好奇是否是 Firebase SDK 本身的一些限制导致了这种情况。非常感谢您对此的任何帮助!
【问题讨论】:
标签: android firebase push-notification firebase-cloud-messaging