1

開発中の 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
        ...

ここで何が起こっているのか誰にも分かりませんか? ソースコードをもっと徹底的に調べて理解する必要があると思います。

4

1 に答える 1