在Oreo中启动FCM服务时如何避免IllegalStateException

时间:2017-10-04 09:16:46

标签: android firebase android-intent firebase-cloud-messaging android-8.0-oreo

我的应用是准信使应用。并且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");
    }

0 个答案:

没有答案