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.