我正在为我正在开发的 Android 应用程序使用Native Push Plugin 。我为我的通知配置了一个图标和一个图标颜色,如下所示:
let push = Push.init({
android: {
icon: "ic_notif",
iconColor: "#f94915",
forceShow: true, ...
如果我通过 Firebase 控制台(Target = User Segment -> App -> My App)发送通知并且我在前台(应用程序可见),我的通知图标将正确显示在通知区域(图标颜色以及在通知抽屉中)。但是,如果我的应用程序在后台(或根本没有启动)并且我发送了一条消息,我会得到一个白色方块(并且通知抽屉中的图标颜色是默认的灰色)。
通过查看源代码,在 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
...
有谁知道这里发生了什么?我想我需要更彻底地检查源代码才能弄清楚。