Même si son recommandé de passer à Firebase, voici la solution pour ceux qui ne peuvent pas mettre à jour.
- Set outils de construction pour 26.0.1+
- Assurez-vous pas plus étendue Wakeful de diffusion mais tout à fait normal diffusion
- Créer une classe qui étend JobServiceIntent et planifier une tâche à elle.
Avec Job Service il est possible de travailler en arrière-plan à Oreo.
Voici l'échantillon de la classe JobServiceIntent
package com.voxelbusters.nativeplugins.features.notification.core;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.JobIntentService;
import com.google.android.gms.gcm.GoogleCloudMessaging;
import com.voxelbusters.nativeplugins.defines.CommonDefines;
import com.voxelbusters.nativeplugins.utilities.Debug;
import com.voxelbusters.nativeplugins.utilities.JSONUtility;
import org.json.JSONObject;
/**
* Created by ayyappa on 09/02/18.
*/
public class NotificationJobService extends JobIntentService
{
/**
* Unique job ID for this service.
*/
static final int JOB_ID = 1000;
/**
* Convenience method for enqueuing work in to this service.
*/
public static void enqueueWork(Context context, Intent work) {
enqueueWork(context, NotificationJobService.class, JOB_ID, work);
}
@Override
protected void onHandleWork(Intent intent)
{
Bundle extras = intent.getExtras();
GoogleCloudMessaging service = GoogleCloudMessaging.getInstance(this);
String messageType = service.getMessageType(intent);
Debug.log(CommonDefines.NOTIFICATION_TAG, "GCMIntentService received message type : " + messageType);
if (!extras.isEmpty())
{
if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType))
{
// Post notification of the received message (extras).
}
}
}
@Override
public void onDestroy()
{
super.onDestroy();
}
}
Appelez dès maintenant enqueWork sur réception d'une émission comme ci-dessous.
package com.voxelbusters.nativeplugins.features.notification.serviceprovider.gcm;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import com.voxelbusters.nativeplugins.features.notification.core.NotificationDefines;
import com.voxelbusters.nativeplugins.features.notification.core.NotificationJobService;
public class GCMBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
if (!NotificationDefines.usesExtenralRemoteNotificationService(context))
{
// Explicitly specify that GCMIntentService will handle the intent.
ComponentName comp = new ComponentName(context.getPackageName(), GCMIntentService.class.getName());
intent.setComponent(comp);
NotificationJobService.enqueueWork(context, intent);
}
}
}
Espérons que ça aide!
le pot de GCM est très, très vieux et obsolète. vous devriez utiliser FCM dans Firebase maintenant. Le pot n'a pas les changements nécessaires pour les nouvelles limitations d'arrière-plan d'Oro O – tyczj
@ramya avez-vous résolu ce problème? Je suis face à celui-ci –
@ Passionate.C: Avez-vous corrigé le problème? – Debugger