gpt4 book ai didi

android - Firebase 控制台 : How to specify click_action for notifications

转载 作者:可可西里 更新时间:2023-11-01 18:58:13 27 4
gpt4 key购买 nike

我实现了 Firebase 并测试了 Firebase 通知。当应用程序在前台时,我没有遇到任何问题,我实现了一项扩展 FirebaseMessagingService 并在 onMessageReceived

中处理消息和数据的服务

我在应用程序处于后台时遇到问题,我想发送一个通知来打开特定 Activity 并执行我计划要做的事情,而不仅仅是打开应用程序。

我按照 Firebase 指南中的描述进行了操作,但我无法启动特定 Activity 。

这里是 list :

<activity android:name=".BasicNotificationActivity">
<intent-filter>
<action android:name="OPEN_ACTIVITY_1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

这里是 Firebase 控制台。我必须在这些字段中写什么才能打开我的“BasicNotificationActivity”?

Firebase console

最佳答案

这是这个问题的副本:Firebase FCM notifications click_action payload

但是这个问题的作者接受的答案只是说 Firebase 控制台不可能,但它是 - 有一个简单的解决方法。 This answer by diidu对同一个问题解释了我将使用的解决方法。

更新:
详细说明他的回答:

添加一个辅助类(或以某种方式实现 startActivity() 方法):

public class ClickActionHelper {
public static void startActivity(String className, Bundle extras, Context context){
Class cls;
try {
cls = Class.forName(className);
}catch(ClassNotFoundException e){
//means you made a wrong input in firebase console
}
Intent i = new Intent(context, cls);
i.putExtras(extras);
context.startActivity(i);
}
}

在您的应用程序的启动器 Activity 中,调用一个方法来检查 onCreate()onNewIntent() 中的任何新 Intent (onNewIntent() 仅在 Activity 以单顶标志启动时被调用而不是 onCreate():

@Override
protected void onCreate(Bundle bundle) {
[...]
checkIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
[...]
checkIntent(intent);
}

public void checkIntent(Intent intent) {
if (intent.hasExtra("click_action")) {
ClickActionHelper.startActivity(intent.getStringExtra("click_action"), intent.getExtras(), this);
}
}

onMessageReceived() 中:

 public void onMessageReceived(RemoteMessage remoteMessage) {
Map<String, String> data = remoteMessage.getData();
if (data.containsKey("click_action")) {
ClickActionHelper.startActivity(data.get("click_action"), null, this);
}
}

要使用 firebase 控制台发送通知,请将键值对作为自定义数据,如下所示:

Key: click_action
Value: <fully qualified classname of your activity>

现在,当收到并单击通知时,它将打开您的 Activity 。如果您的应用程序在前台,它也会立即更改为 Activity - 最好询问用户是否想参加此 Activity (通过在 onMessageReceived() 中显示一个对话框) >).

关于android - Firebase 控制台 : How to specify click_action for notifications,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38111339/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com