pantalla de inicio del servicio en segundo plano nativa

Jeremy:

Tengo una aplicación simple aleteo que iniciar un servicio en segundo plano nativa utilizando MethodChannel. Este servicio fondo nativa notificar a mi aleteo aplicación usando BasicMessageChannel<String>al texto de la pantalla cuando una información nativa particular, es apresado. Todo este trabajo perfectamente cuando mi aplicación está en primer plano. Cuando una otra aplicación está en primer plano, no puedo ver el texto sin tener que cambiar a mi aplicación.

Quiero que mi servicio nativo puede mostrar una pantalla aleteo particular, incluso si una aplicación está siendo utilizada en primer plano.

Puede ser percibido no como fácil de usar, pero esto es un mensaje de suma importancia.

Cualquier sugerencia o solución será bienvenida!

Nota: Nativo servicio es por el momento sólo está disponible en Java para Android, estoy trabajando en C # para el lado del IOS.

Richard Heap:

En Android se necesita mostrar una notificación de alta prioridad. Esto muestra el panel de notificaciones deslizable hacia abajo que aparecerá sobre la pantalla de bloqueo o de otra aplicación. Dado que está utilizando código nativo ya, puede crear esta notificación allí, o enviar un mensaje al lado de dardo (como lo están haciendo, usando MethodChannel) donde se puede utilizar el flutter_local_notificationsplugin para mostrarlo. Cuando el usuario haga clic en la notificación, su aplicación aleteo es llevado al primer plano. En Java puede utilizar código similar al siguiente:

// Create an intent which triggers the fullscreen notification
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.setAction("SELECT_NOTIFICATION");
Class mainActivityClass = getMainActivityClass(context);
intent.setClass(context, mainActivityClass);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);

// Build the notification as an ongoing high priority item to ensures it will show as
// a heads up notification which slides down over top of the current content.
final Notification.Builder builder = new Notification.Builder(context, CHANNEL_ID);
builder.setOngoing(true);

// Set notification content intent to take user to fullscreen UI if user taps on the
// notification body.
builder.setContentIntent(pendingIntent);

// Set full screen intent to trigger display of the fullscreen UI when the notification
// manager deems it appropriate.
builder.setFullScreenIntent(pendingIntent, true);

// Setup notification content.
int resourceId = context.getResources().getIdentifier("app_icon", "drawable", context.getPackageName());
builder.setSmallIcon(resourceId);
builder.setContentTitle("Your notification title");
builder.setContentText("Your notification content.");

MyPlugin.notificationManager().notify(someId, builder.build());

Entonces, para Android 8.1 o superior, añada lo siguiente a su MainActivityclase, que se encuentra bajo el androide / app / src / main / java / packageName / carpeta

GeneratedPluginRegistrant.registerWith(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
  setShowWhenLocked(true);
  setTurnScreenOn(true);
}

(Esto muestra la Flutter de aplicaciones incluso cuando la pantalla está bloqueada.)

Flutter sólo tiene una actividad, por lo que el código anterior traerá que la actividad aleteo al primer plano (nota que no siempre se ve la notificación, pero a veces no - si se establece a continuación, autoCancel tocarlo lo borra). Le toca a usted para construir la pantalla correcta en trémolo, que se puede hacer a medida que envía la notificación. Uso Navigator.pusho equivalente para cambiar la página que se está mostrando trémolo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=178698&siteId=1
Recomendado
Clasificación