从 Firebase 通知中打开特定活动

2024-01-05

我将 firebase 通知集成到我的应用程序中,但我想发送一条通知来打开特定活动并执行我计划执行的操作,而不仅仅是打开应用程序。就像一条通知,点击它就会促使用户访问 Google Play 商店。

我看到了一段代码Firebase 控制台:如何指定通知的 click_action https://stackoverflow.com/questions/38111339/firebase-console-how-to-specify-click-action-for-notifications我使用了它,但在初始化变量 cls 时遇到错误。我尝试通过定义 cls=null 来解决,以清除错误。它无法使用 click_action 打开我指定的活动

public class ClickActionHelper { 
    public static void startActivity(String className, Bundle extras, Context context){ 
        Class cls=null; 
        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); 
    }     
}

请问我有什么问题吗?我该如何让它发挥作用?


如果您想打开应用程序并在后台执行特定操作,请在通知负载中设置 click_action 并将其映射到您要启动的 Activity 中的意图过滤器。例如,将 click_action 设置为 OPEN_ACTIVITY_1 以触发如下 Intent 过滤器:

正如 FCM 文档中所建议的,要求后端以如下形式发送 JSON 数据,

{
    "to": "some_device_token",

    "content_available": true,
    "notification": {
        "title": "hello",
        "body": "yo",
        "click_action": "OPEN_ACTIVITY_1" // for intent filter in your activity
    },

    "data": {
        "extra": "juice"
    }
}

并在您的清单文件中为您的活动添加意图过滤器,如下所示

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

当您单击通知时,它将打开应用程序并直接转到您在 click_action 中定义的活动,在本例中为“OPEN_ACTIVTY_1”。在该活动中,您可以通过以下方式获取数据:

Bundle b = getIntent().getExtras();// add these lines of code to get data from notification
String someData = b.getString("someData");

查看以下链接以获得更多帮助:

Firebase FCM 通知 click_action 有效负载 https://stackoverflow.com/questions/37407366/firebase-fcm-notifications-click-action-payload

当应用程序在后台运行时,Firebase onMessageReceived 不会被调用 https://stackoverflow.com/questions/37358462/firebase-onmessagereceived-not-called-when-app-in-background

Firebase 控制台:如何指定通知的 click_action https://stackoverflow.com/questions/38111339/firebase-console-how-to-specify-click-action-for-notifications

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Firebase 通知中打开特定活动 的相关文章

随机推荐

  • 相对日期格式,输出过去的日期?

    我正在考虑使用 NSDateFormatter setDoesRelativeDateFormatting 将日期表示为 今天 或 昨天 我只查看过去的日期 但很好奇我会看到哪些针对英国本地化的选项 Just Today 昨天 或者任何更复
  • Android 蓝牙InputStream实时读取

    我正在开发一个 Android 应用程序 它通过蓝牙接收实时数据并将其绘制在屏幕上 该数据是陀螺仪传感器位置信息 我从定制的 Freescale Kinetis K10 微控制器板 由我自己设计和测试 发送它 对于蓝牙通信 我使用 HC 0
  • 如何在 ASP.NET MVC 中创建 CheckBoxListFor 扩展方法?

    我知道有一个ListBoxForASP NET MVC Html 辅助扩展方法中的扩展方法 但我一直认为复选框列表比列表框更用户友好 有一个非常方便的CheckBoxList旧式 WebForm 中的控制 但显然现在已经不可行了 问题是 为
  • AWS API Gateway - Elastic Beanstalk - 访问受限

    我在 Amazon EB 上有一个 NodeJS API 在 API Gateway 上有一个 API API Gateway 配置为 EB 的代理 我可以毫无问题地调用我的 API 它正在工作 但我不知道如何管理安全性 实际上 如果我使用
  • 在Python中任意时间捕获用户输入

    当用户在控制台中输入内容时 有没有办法向 python 模块发送中断 例如 如果我正在运行无限 while 循环 我可以用 try except for KeyboardInterrupt 包围它 然后在 except 块中执行我需要执行的
  • IIS Express Visual Studio 集成 - 更改站点名称

    我刚刚开始将 Visual Studio 2010 SP1 与 IIS Express 一起使用 当 Visual Studio 启动 IIS Express 时 它会指定用于启动 IIS Express 的 站点 的名称 该网站的名称似乎
  • 您如何管理开发、测试和生产中的数据库?

    我很难找到有关如何在开发 测试和生产服务器之间管理数据库模式和数据的好示例 这是我们的设置 每个开发人员都有一个运行我们的应用程序和 MySQL 数据库的虚拟机 这是他们的个人沙箱 可以为所欲为 目前 开发人员将对 SQL 架构进行更改 并
  • 将 ncurses 静态链接到程序

    我在将 ncurses 静态链接到我的程序之一时遇到一些问题 这是一个非常简单的示例程序 include
  • 无法解析符号:FusedLocationProviderClient。使用的 Google Play 服务版本为 11.0.1

    无法解析符号 FusedLocationProviderClient Google Play服务版本使用11 0 1 代码 while 声明 private FusedLocationProviderClient mfusedLocatio
  • 将 UIImage 分配到内存并释放它的正确方法是什么

    使用 Instruments 我不断发现 UIImage 内存泄漏 我认为我正在正确分配和释放内存 Instruments 中泄漏的对象被描述为 NSConcreteData 以下是分配和释放 UIImage 的正确方法吗 UIImage
  • PyQt:为什么新窗口打开后立即关闭[重复]

    这个问题在这里已经有答案了 我有一个主窗口 我想在按下按钮时打开另一个窗口 不是对话框 我的问题是新窗口打开后几乎立即关闭 我已阅读可用的文章 并尝试实施解决方案 但似乎没有运气 这是我的整个代码 import sys from PyQt4
  • 普通 ArrayList Linq c# 2 语法(需要转换)

    这个问题对我来说纯粹是学术性的 是我在这里回答的问题的衍生问题 从数组列表中检索具有特定元素值的对象 https stackoverflow com questions 19469945 retrieve object from an ar
  • 阻止提交 HTML 表单字段

    我想以编程方式允许或隐藏在 HTML5 表单中提交的表单字段 我以为我可以设置它的 CSSdisplay归因于none 但是 它仍然被提交 只是看不到 我是否可以设置另一个属性 而不是从 HTML5 文档中完全删除该元素 简单设定disab
  • 如何从 AWS Lambda (Node.js) 中的处理程序调用 module.exports

    AWS 中是这么说的 函数中的 module name export 值 例如 index handler 调用index js中的exports handler 它正确地调用了这个函数 exports handler username p
  • ol.interaction.Select 在 ol.source.VectorTile 上给出错误

    我试图在选择 VectorTile 图层后更改该功能的样式 但是 第一次触发选择交互时 控制台会报告错误 Uncaught TypeError feature getId is not a function at ol source Vec
  • 限制java只执行签名的jar?

    Java jar 可以使用 JDK jarsigner 工具进行签名 这与策略工具结合使用 似乎只允许您在运行时向 jar 添加权限 我想要一个默认的 撤销运行访问权限 是否有可能让java以这样的方式进行白名单 只允许运行由一组特定证书签
  • iPhone 上的 iAds 插页式广告?

    我和我的开发人员之前曾尝试在 iPhone 和 iPad 上加载插页式广告 但只在 iPad 上成功 在我们的测试过程中 我们发现 iPhone 不支持插页式广告 但自从 iOS7 发布以来 有些人说这是可能的 但是我找不到任何关于此的像样
  • Android Studio 中出现错误“无法解析所有配置文件”[重复]

    这个问题在这里已经有答案了 我尝试运行一个在编码中没有明显错误的应用程序 但是 当我尝试运行它时 会弹出此错误 导致 org gradle api internal artifacts ivyservice DefaultLenientCo
  • Java 2D 性能缓慢 - 调整大小

    我使用的是带 Aero 的 Windows 7 并且有一个非常快的显卡 Radeon 6870 用于游戏 在调整用 java 编写的非常简单的程序大小时 我遇到了一些问题 例如 这个程序完全不执行任何操作 它没有动作监听器 没有循环 它只是
  • 从 Firebase 通知中打开特定活动

    我将 firebase 通知集成到我的应用程序中 但我想发送一条通知来打开特定活动并执行我计划执行的操作 而不仅仅是打开应用程序 就像一条通知 点击它就会促使用户访问 Google Play 商店 我看到了一段代码Firebase 控制台