開発中の Android アプリケーションにネイティブ プッシュ プラグインを使用しています。次のように、通知のアイコンとアイコンの色を構成しました。
let push = Push.init({
android: {
icon: "ic_notif",
iconColor: "#f94915",
forceShow: true, ...
Firebase コンソール (ターゲット = ユーザー セグメント -> アプリ -> マイ アプリ) を介して通知を送信し、フォアグラウンド(アプリケーションが表示されている) にいる場合、通知アイコンは通知領域に正しく表示されます (アイコンの色通知ドロワーにもあります)。ただし、アプリケーションがバックグラウンドにある場合(またはまったく開始されていない場合) にメッセージを送信すると、代わりに白い四角形が表示されます (通知ドロワーのアイコンの色はデフォルトのグレーです)。
GCMIntentService.java のソース コードを調べると、onMessageReceived メソッドが着信メッセージを処理することがわかりました。私がフォアグラウンドにいるとき、次の条件が発生します。
else if (forceShow && PushPlugin.isInForeground()) {
Log.d(LOG_TAG, "foreground force");
extras.putBoolean(FOREGROUND, true);
extras.putBoolean(COLDSTART, false);
showNotificationIfPossible(applicationContext, extras);
}
メソッドshowNotificationIfPossibleは、通知 (アイコン、アイコンの色、振動、音など) の作成を担当します。ここでの問題は、アプリケーションがバックグラウンドにある間はコードが実行されていないように見えることです(それでもメッセージが表示されます)、具体的には次のコードであり、それが問題だと思います:
// if we are not in the foreground always send notification if the data has at least a message or title
else {
Log.d(LOG_TAG, "background"); //this is not being logged at all
...
ここで何が起こっているのか誰にも分かりませんか? ソースコードをもっと徹底的に調べて理解する必要があると思います。