Android Oreo - GCM

Ниже приведен код из Google для поддержки GCM,

        <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.example.gcm" />
        </intent-filter>
        </receiver>

        <service
        android:name="com.example.MyGcmListenerService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
        </service>

        <service
        android:name="com.example.MyInstanceIDListenerService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.gms.iid.InstanceID" />
        </intent-filter>
        </service>

Запрос 1. Согласно документации Google, лимиты фонового выполнения влияют на Android Oreo? Или это будет работать, как ожидалось, без каких-либо изменений кода?

Кроме того, как Google предложил ниже,

Если вы разрабатываете приложение на Android 8.0 (уровень API 26) или выше, используйте Firebase Cloud Messaging (FCM). В противном случае используйте класс JobIntentService вместо IntentService для обработки обновлений токена.

Запрос 2. Исходя из вышеприведенного утверждения, является ли правильный подход ниже?

@Override
public void onTokenRefresh() {

if (Build.VERSION.SDK_INT >= 26) {

 //start JobIntentService

} else {
 // start intent service
}

Если ДА, то кто звонит в enqueueWork?

Примечание. Из-за некоторых ограничений невозможно перейти на FCM.

1 ответ

Не нужно проверять версии. Просто запустите JobIntentService. Если его ниже Oreo, то он будет работать как простой IntentService.

Другие вопросы по тегам