我的应用是准信使应用。并且fcm通知的后端中继传入消息等等。 直到现在我的实现正常工作(见下文)。但是在Oreo上我得到了IllegalStateEception。它似乎与background limits on Oreo
有关我尝试通过电话startForegroundService(intent)
为奥利奥代替startService(intent)
解决方法,但我收到以下错误:
RemoteServiceException:Context.startForegroundService()没有调用Service.startForeground()
在清单中我有:
<service
android:name=".fcm.FcmService"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name=".fcm.FcmInstanceIdService"
tools:ignore="ExportedService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
在MainApp中,在下面扩展Application类,方法在onCreate()中调用:
protected void initFcm() {
FirebaseApp.initializeApp(this);
Intent intent = new Intent(this, FcmService.class);
startService(intent); //<- here is IllegalStateException
String token = FirebaseInstanceId.getInstance().getToken();
FirebaseMessaging.getInstance().subscribeToTopic("global");
}