【发布时间】:2019-02-04 07:11:33
【问题描述】:
我在应用程序级别实现了Firebase 来接收推送消息。在库项目中,我有一个BroadcastReceiver 来拦截推送消息。我想从库而不是从应用程序构建通知。
如果应用程序处于前台状态,当我创建 Pending Intent 时,MainActivity 上下文 在应用程序级别可用 将在未决 Intent 中传递,如果点击通知,我被重定向到 MainActivity。现在,如果应用程序处于终止状态并收到推送消息,我在库中的广播接收器会拦截传入消息,但无法创建通知,因为 MainActivity 上下文在应用程序级别作为 MainActivity 为空在堆栈跟踪中不可用。任何人都可以帮助如何实现这一目标?
下面是我的代码:
val mIntent = Intent(applicationContext,activityContext::class.java)
val pendingIntent = PendingIntent.getActivity(applicationContext, System.currentTimeMillis().toInt(),
mIntent,PendingIntent.FLAG_UPDATE_CURRENT)
其中,Intent 中的 activityContext 是在库项目中从应用级别接收到的 MainActivity 的上下文。
当应用处于前台状态时,activityContext可用并生成通知。但是当应用处于 killed 状态 时,activityContext 仍然为 null,从而导致构建通知失败。
【问题讨论】:
-
当您的应用程序不在前台时,Firebase 不会自动生成并显示通知吗?
-
@Dhaval Firebase 仅触发将消息推送到 Android 设备。它取决于通知是消息类型还是数据类型。对于消息类型,Android OS 在通知托盘中自行处理并生成它们,但是我们无法提取随之发送的数据负载。使用数据类型通知,我们可以获得有效负载,但必须自己创建通知。由于我们正在遵循后面的方法,所以遇到了问题。
标签: android firebase kotlin android-pendingintent android-push-notification