我知道有很多讨论这个问题的话题。我已经在该线程上尝试了几乎所有的解决方案,但是不幸的是,在我的情况下,该方法不起作用。
基本上,我想做的是,我想在调用onMessageReceived
后立即启动 Activity ,而不发出通知。
这是我的代码:
override fun onMessageReceived(p0: RemoteMessage) {
super.onMessageReceived(p0)
"new notif".ea()
val data = p0.data
val title = data["title"]
val body = data["body"]
val type = data["type"]
if (type == NEW_ORDER) {
val order = data["data"]!!.fromJsonObject(OrderModel::class.java)
NewOrderActivity.open(this, order)
}
...
class NewOrderActivity : BaseActivity() {
companion object {
fun open(c: Context, order: OrderModel) = c.startActivity(Intent(c, NewOrderActivity::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
putExtra("order", order.toJsonObject())
})
}
...
问题是,如果应用程序在前台,则打开NewOrderActivity
。但是,如果应用程序在后台运行,则不会打开NewOrderActivity
。我曾尝试使用BroadcastReceiver
,但这也不起作用。当前compileSdkVersion
和targetSdkVersion
设置为29
。我已将其更改为28
但也无法正常工作 最佳答案
示例代码:-您需要像这样在通知有效负载中指定click_action
$noti = array
(
'icon' => 'new',
'title' => 'title',
'body' => 'new msg',
'click_action' => 'open_NewOrderActivity'
);
现在在manifest
文件中,在NewOrderActivity
Activity 代码中执行此操作<activity
android:name=".NewOrderActivity">
<intent-filter>
<action android:name="open_NewOrderActivity" /> // should be same as in click action
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>