当前位置: 首页 > 知识库问答 >
问题:

Firebase控制台:如何为通知指定click_action

艾照
2023-03-14

我实现了Firebase,并测试了Firebase通知。当应用程序处于前台时,我没有问题,我实现了一个扩展FirebaseMessagingService的服务,并处理onMessageReceived中的消息和数据

我有问题,当应用程序在后台,我想发送一个通知,打开一个特定的活动,并做我计划做的事情,而不仅仅是打开应用程序。

我按照Firebase指南中描述的那样做了,但我无法启动特定的活动。

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

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

共有1个答案

郏兴贤
2023-03-14

这是这个问题的重复:Firebase FCM通知click_action有效负载

但是这个问题的作者所接受的答案只是说用Firebase控制台是不可能的,但是用一个简单的变通方法就可以了。diidu对同一问题的回答解释了我将使用的变通方法。

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

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);
    }
}
@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>

现在当一个通知被收到并点击,它将打开你的活动。如果您的应用程序处于前台,它也会立即切换到活动--最好询问用户是否要参加这个活动(通过在OnMessageReceived()中显示一个对话框)。

 类似资料:
  • 我为android https://github.com/Firebase/quickstart-android/tree/master/messaging和ios https://github.com/Firebase/quickstart-ios/tree/master/messaging配置并安装了示例Firebase快速启动应用程序。

  • 问题内容: 我是Firebase的新手,我的Java应用程序尝试使用客户端的Firebase令牌发送通知/消息时,遇到了错误,例如发送者ID不匹配和HTTP状态为401的身份验证错误。请注意,使用Firebase控制台,我可以将消息发送到客户端。 对于客户端应用程序,我执行了以下操作: 从此处克隆了Firebase 快速入门应用程序-https : //github.com/firebase/qu

  • 我是Firebase新手,当我的Java应用程序尝试使用客户端的Firebase令牌发送通知/消息时,我遇到了一些错误,例如发送者id不匹配和HTTP状态401的身份验证错误。请注意,使用Firebase控制台,我能够将消息发送到客户端。 对于客户端应用程序,我执行了以下操作: 从这里克隆Firebase快速入门应用--https://github.com/firebase/quickstart-

  • 问题内容: 我将从通知的新Google服务开始。 多亏了这段代码https://github.com/firebase/quickstart- android/tree/master/messaging, 我才能够将通知从 Firebase用户控制台 发送到Android设备。 有没有使用Firebase控制台发送通知的API或方法?我的意思是,例如,一个PHP API或类似的东西,可以直接从我自

  • 我开始使用新的Google通知服务 。 多亏了这个代码https://github.com/Firebase/quickstart-android/Tree/master/messaging,我才能够从我的Firebase用户控制台向我的Android设备发送通知。 是否有任何API或方法可以在不使用Firebase控制台的情况下发送通知?我的意思是,例如,一个PHP API或类似的东西,从我自己

  • 我将发送带有自定义单击操作的推送通知,以设置通知的以在应用程序处于前台或后台时在我的项目中打开一个确切的。在所有的帖子和评论中都写到不可能从控制台发送带有自定义点击动作的通知,但在控制台中的“高级选项”中,可以设置自定义数据键和值。 为什么不能设置键及其值? 如果可能的话,告诉我该怎么做。我的意思是确切的意图过滤代码是什么?我应该将什么设置为值? 假设我想通过单击Notification打开。