ネイティブバックグラウンドサービスからの起動画面

ジェレミー:

私が使用してネイティブのバックグラウンドサービスを開始し、単純なフラッタアプリを持っていますMethodChannelこのネイティブのバックグラウンドサービスを使用して、私のフラッタアプリを通知しBasicMessageChannel<String>、特定のネイティブ情報がcatchedされたときに表示テキストに。この作品のすべてが完璧に私のアプリがフォアグラウンドにあるとき。他のアプリがフォアグラウンドにあるとき、私は私のアプリに切り替えることなく、テキストを参照することはできません。

私は私の母国サービスは、他のアプリケーションがフォアグラウンドで実行されている場合でも、特定のフラッタ画面を表示させることができることをしたいです。

これは、ユーザーフレンドリーではないと認識することができますが、これは最も重要なのメッセージです。

任意の提案や解決策は歓迎されます!

注:ネイティブサービスはAndroid向けJavaでのみ利用可能一瞬ですが、私はIOS側のためにC#に取り組んでいます。

リチャード・ヒープ:

Androidの上では、高優先度の通知を表示する必要があります。このロック画面または他のアプリの上に表示される表示スライドダウン通知パネル。すでにネイティブコードを使用しているので、あなたは(あなたが使用して、やっているとそこにこの通知を作成したり、ダーツ側にメッセージを送信することができMethodChannel、それは使用することができます)flutter_local_notifications、それを表示するプラグインを。ユーザーが通知をクリックすると、あなたのフラッターアプリがフォアグラウンドに移動されます。Javaでは、あなたは、このようなコードを使用する場合があります。

// 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());

その後、アンドロイド8.1以上のために、あなたに以下を追加MainActivityアンドロイド/アプリ/ srcに/メイン/ javaの/の下にクラス、のpackageName /フォルダ

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

(これは、番組画面がロックされていてもフラッタアプリ。)

上記のコードは、( -あなたはautoCancelに設定すると、それはそれをクリア触れるあなたは常に通知が表示されていないが、時にはあなたはないことに注意してください)フォアグラウンドにそのフラッタ活動をもたらすので、フラッターは、1つの活性を有しています。それはあなたが通知を送信するようあなたが行うことができ、フラッターで正しい画面を構築するためにあなた次第です。使用Navigator.pushまたは同等のフラッターが表示されていることページを変更します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=178695&siteId=1