首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

应用程序在后台时未调用Firebase onMessageReceived

基础概念

Firebase onMessageReceived 是 Firebase Cloud Messaging (FCM) 中的一个回调方法,用于处理接收到的推送通知。当应用程序在后台运行时,onMessageReceived 方法通常不会被调用,因为系统会优先显示通知,而不是唤醒应用程序。

相关优势

  1. 实时通信:FCM 提供了一种高效的方式来向移动设备发送通知和数据消息。
  2. 跨平台支持:FCM 支持 Android、iOS 和 Web 平台。
  3. 低延迟:消息传递具有低延迟,确保用户能够及时收到通知。

类型

  1. 通知消息:用于显示通知栏消息。
  2. 数据消息:包含自定义数据,可以在应用程序中处理。

应用场景

  • 新闻应用推送最新新闻。
  • 社交应用通知新消息。
  • 商店应用推送促销信息。

问题原因

当应用程序在后台时,系统会优先显示通知,而不是唤醒应用程序,因此 onMessageReceived 方法不会被调用。这是为了节省电池和提高用户体验。

解决方法

  1. 使用数据消息:在后台时,可以通过发送包含自定义数据的数据消息来触发 onMessageReceived 方法。
代码语言:txt
复制
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    if (remoteMessage.getData().size() > 0) {
        // 处理数据消息
        String message = remoteMessage.getData().get("message");
        Log.d(TAG, "Message data payload: " + message);
    }
}
  1. 使用 WakefulBroadcastReceiver:在 Android 中,可以使用 WakefulBroadcastReceiver 来确保在后台时唤醒应用程序并处理消息。
代码语言:txt
复制
public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        if (remoteMessage.getData().size() > 0) {
            // 处理数据消息
            String message = remoteMessage.getData().get("message");
            Log.d(TAG, "Message data payload: " + message);
        }
    }
}
  1. 使用 JobScheduler:在 Android 中,可以使用 JobScheduler 来安排后台任务,确保在特定条件下处理消息。
代码语言:txt
复制
public class MyJobService extends JobService {
    @Override
    public boolean onStartJob(JobParameters params) {
        // 处理后台任务
        return false;
    }

    @Override
    public boolean onStopJob(JobParameters params) {
        return false;
    }
}

参考链接

通过以上方法,可以在应用程序在后台时处理 Firebase 推送通知。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

FCM---Android系统级推送---你还在用第三方推送?

这些服务器从一个应用服务器获取消息,并将其发送至设备上运行的客户端应用。Google 为 HTTP 和 XMPP 提供连接服务器。 2、一台应用服务器,您必须在您的环境中实现它。...对于在后台运行的应用,消息由下列回调处理: 1、iOS 上的 didReceiveRemoteNotification: 2、Android 上的 onMessageReceived()。...hl=zh-cn#send-downstream demo http://www.jianshu.com/p/5d1982dd588b 注意 当firebase推送的时候,是分当前应用在前后台两种情况的...处理方式:在后台的情况下你需要在应用的主Activity的onCreate方法中调用getIntent.getExtra()方法才能拿到推送到的参数 server 端建置 Google...thrid party server,而是在下一次您發送訊息給該 Android 裝置時,Google GCM server 才會回應給您的 third party server 錯誤,錯誤的內容是該裝置並註冊

12.7K30
  • 安卓跟苹果推信技术怎么来实现发送短信技术多呢?《RCS》《IM》

    安卓(Android)和苹果(iOS)设备之间实现短信发送技术主要包括两种方式:RCS (Rich Communication Services) 和 IM (Instant Messaging) 服务...自2023年起,苹果宣布将会支持RCS标准,这意味着未来iPhone用户可以与Android用户通过运营商网络直接使用类似iMessage的增强型短信功能进行沟通,无需安装额外的应用程序。...Android和iOS平台上开发IM应用时,通常会采用云服务和客户端SDK的方式实现消息推送。...例如:GCM/FCM (Google Firebase Cloud Messaging):对于Android设备,开发者可以使用Google提供的Firebase Cloud Messaging服务,即使应用程序运行或后台被清理...跨平台的IM应用会在服务器端处理不同操作系统之间的兼容性问题,确保消息能够实时、准确地Android和iOS设备间传输。

    67610

    Flutter 3.7 新特性:介绍后台isolate通道

    另外一个问题是:为什么有人在后台线程中执行代码呢?因为有时您别无选择,库可能正调用后台 isolate 回调,例如 android_alarm_manager_plus。...我帮助谷歌其他团队使用 Flutter 的过程中,随着产品的演进,最终会不可避免地遇到 root isolate 瓶颈。 因此,我们需要确保框架中优化,并为开发者提供工具使其必要做更少的事。...下面是后台 isolate 一个人为的用例: 试想,一个应用程序可通过人工智能根据文本提示生成高分辨率图像。用户之前创作都被存储 Firebase Cloud 中,需求是用户可以用手机随时分享创作。...SharedPreferences.getInstance(); print(sharedPreferences.getBool(‘isDebug’)); } 技术细节 下面是平台通道工作原理概述: 当平台通道被调用产生结果将通过硬编码转到...这是令我惊讶的,为了引擎销毁关闭平台通道,我们应该知道与引擎关联的后台 isolate,否则后台 isolate 可能与正在销毁引擎通信,这样做的效果可以最终的 API 中看到,必须使用 RootIsolateToken

    4.2K40

    我们弃用 Firebase

    的确,纯从性能上讲, AWS/Azure/ GCP 上构建的定制化原生服务包优于 Firebase 套件。但是,当我们考虑到开发时间和维护成本Firebase 通常是一个合乎逻辑的选择。...你可以编写实现实时数据同步的应用程序,而且不需要开发大量的传输逻辑。那些自制即时通讯应用程序中使用了长轮询请求的的用户肯定会喜欢它。...Firebase Hosting 不提供细粒度的文件控制:你可以部署整个应用程序,也可以什么都不部署。也许不常见,但我们静态页面生成和调试 CDN 问题上遇到了限制。...对于这个问题,K-Optional Software 几乎同一间收到了多个关于项目(不是我们的项目)的咨询请求,一切都表明,是 API 的突然变化造成了麻烦。... CI 代码中,过滤掉更改的文件,并部署与已更改的文件相对应的函数。不用说,这两种变通方法都有很多需要改进的地方。

    32.6K30

    【Chromium中文文档】Chromium如何展示网页

    为了Chromium的便利,需要碰一些WebCore对象,会把API加入WebKit的胶水层。 test shell应用程序是一个为测试我们的WebKit port和胶水代码的裸web浏览器。...内容模块嵌入一个被称为“content shell”的应用程序,它很快就能用于测试工作。 渲染器进程 ?...只有一种情况下,RenderWidget可以没有RenderView存在,就是网页中的下拉选择框(select box)。...RenderView/Widget上面是WebContents对象,大部分的消息事实上结束于这个对象的函数调用。一个WebContent代表网页的内容。...Windows消息浏览器的UI线程被RenderWidgetHostViewWin::OnMouseEvent接收,然后同一个类中调用ForwardMouseEventToRenderer。

    1.9K50

    WLAN 感知概览(Wi-Fi Aware)

    ,将调用onMessageReceived()回调方法可以使用此方法中的PeerHandle参数将消息发送回订阅服务器或创建到订阅服务器的连接。...onSubscribeStarted()回调由于可以应用程序发现发布服务器后使用回调中的SubscribeDiscoverySession参数与该发布服务器通信,因此应保存此引用您可以通过发现会话上调用...您的应用程序得到另一台设备的PeerHandle两种方法之一: 你的应用程序发布服务并从订阅服务器接收消息您的应用程序onMessageReceived()回调获取订阅者的PeerHandle。...要发送消息,请调用sendMessage()然后可能发生以下回调: 当对等端成功接收到消息,系统将调用发送应用程序中的onMessageSendSucceeded()回调。...当对等方收到消息,系统调用接收应用程序中的onMessageReceived()回调。

    2.9K20

    Android Firebase 服务简介

    Firebase成立于2011年,在被Google收购之前,Firebase是一个协助开发者快速构建App,能够提供行动应用专用开发平台及SDK的一款产品,简单的说大概就是一套集成后台服务工具。...早在2014年,谷歌收购了Firebase,这主要是一种面向应用程序开发人员的数据库。Firebase基本上向广大的应用程序开发人员提供不同的服务,比如存储、消息传递、通知和身份验证等服务。...实时数据库(Firebase Realtime Database) 云托管 NoSQL 数据库,数据为JSON形式,设备离线可以使用数据,具有同步功能,恢复链接可以上传回服务器。...app的奔溃信息,并上传到Firebase后台。...如果当用户搜索相关内容已安装应用,则他们可以直接从搜索结果中启动应用。 如果用户还未安装应用,则将在搜索结果中显示安装卡片。

    22.7K90

    APP消息推送方案调研

    使用GCM推送服务的whatsapp即使后台程序和服务都关闭掉,也依然可以第一间接收到新消息的推送(实测国内whatsapp也的确可以在后台关闭的情况下正常通过GCM接受实时消息)。...https://firebase.google.com/docs/cloud-messaging对于 Android 设备,FCM 使用单一的、优化的连接到 Google Play 服务,而不是为每个应用程序建立单独的连接...hl=zh-cn#send-messages-to-multiple-devicesFirebase Admin SDK中发送消息使用的registrationTokens是设备端生成的Firebase...获取Firebase实例ID:应用中,使用Firebase实例ID服务来获取一个唯一的标识符。这个服务会处理令牌的生成和刷新。...did=ap_card&trk=ap_card百度云推送免费,国内,功能简单,可以通过API方式调用平台功能。

    26010

    google的GCM推送使用简介

    由于GCM需要google service支持,国内基本不能用,经常会断线,不过最近项目要求,只美国上线该项目,因此可以采用GCM实现推送的方式,国内相关文章较少,特意整理了一下客户端使用的官方文档...首先来看看目前应用不启动实现推送的方式有哪些: 1.使用Google自带的GCM实现推送 2.采用监听开机广播的方式,启动后台服务,为了防止被杀死,采用多进程的方式,监听服务是否被杀,被杀之后,把它拉起来...(1)官网注册应用 首先我们需要到这个网址:https://console.firebase.google.com/ 去注册自己的应用,按照相关步骤操作之后,点击下载配置文件,会下载一个叫google-services.json...可以通过调用geId()方法,随时更新InstanceId,因为生成的token都是依赖这个InstanceID的。...@Override public void onMessageReceived(String from, Bundle data) {     String message = data.getString

    6.6K10

    做什么样的软件系列之Firebase

    做什么样的软件系列之Firebase 为什么要写这一篇? 做为一个iOS开发者我没有精力自己实现一套,登陆系统后台,广告系统后台,自己尝试写过身份认证系统,但是忘记密码之类的写的又丑又简陋。...让app开发者把精力集中app开发 写一个应用如果是app,很少是单机应用,需要后台开发,但是app开发者时常没有这样的精力。...对于很多android、ios和web的个人移动开发者来说,开发一个具有网络功能的应用不是一件容易的事,不仅需要购买或者租赁服务器,还必须掌握一门诸如Java、php等这类的服务器开发语言,每开发一款移动应用程序...我使用firebase的时候发现公司后端开发开发的很多功能和firebase是基本重合的。登陆注册,数据统计,存储,接口开发,等等。firebase涵盖了大部分app与后端的基础功能。...我觉得firebase就是一项很好的服务范例。我们可以学习他的后台,ui等等。

    4.4K40

    Jetpack-WorkManager

    我们开头就说了,workManager是一个可以用来进行后台任务的组件。...因为workManager比service强大太多,它可以应用程序退出或者其他原因中止后,依然执行(本地任务如:本地图片的读取展示)或者应用程序打开后继续执行任务(网络请求)。...workmanager与其他后台任务方式 除了serverice可以执行后台任务,还有alarmManager,jobScheduler及firebase的jobDispatcher,那么workManager...调用流程 看懂上面图片的意思了吧,翻译一下就是workManager发起一个任务,如果当前程序正在运行,它就会再开一个工作线程去处理,如果当前程序退出或者在后台,它就会选择一个合适的方案去执行,这就包括了...(true) // 充电执行 .setRequiresCharging(true) .build() } 注:中途退出,再次进入,work会继续执行,但是可以所需时间较久

    1.5K20

    Google IO大会,炫酷产品汇总

    Android N集成了Vulkan图形处理引擎,让开发者更容易调用GPU来强化图片效果,另外改进更好的性能且提高其框架的安全性,还会自动更新你的操作系统。...Instant App Instant App是提高效率的另外一项尝试,在这种情况下,集成移动网络和独立移动应用程序。该技术可以下载需要的应用程序独立模块而不是下载整个应用程序。...Google Home支持与Chromecast以及Nest的互联,但相比Echo,Google Home暂对开发者公开API,也就是应用生态尚不如Echo丰富。...谷歌对视频通话体验进行了细微改进,接听前即可预览画面。这项服务采用了谷歌QUIC协议,支持WiFi和移动数据无缝连接,同时降低对网络要求,支持更高效的语音视频通话。...Firebase也有新的版本,是应用开发者管理工具,更好的为企业智能分析和定制CRM。Firebase是一个可扩展的网络应用实时后台,自动响应数据变化,为用户带来全新的交互体验。

    2K100

    跟上脚步,进入后台执行新时代

    为了改善续航表现和用户体验,Android 版本演进的过程中,针对后台执行进行了不同程度的限制,其中包括: 低耗电模式和应用待机模式: 如果设备插接电源,处于空闲状态一段时间且屏幕关闭,系统会进入低耗电或者待机模式...使用案例及解决方案 开发者选择后台执行工具前,首先要对应用需求和限制场景有个清晰的了解,我们建议您参照以下流程图,为应用制定最佳的后台决策: ?...在此步骤中,您可以添加约束条件 “当设备充电,任务才可以被执行”。 第二步:向服务器上传文件。创建此请求,您应该添加 “需要联网”这一约束条件,指定任务仅在设备连接到有效网络才会被触发。...如果任务由外部事件触发且运行时间较长,例如同步新数据,请先使用 Firebase Cloud Messaging 通知您的应用,然后再调用 WorkManager 创建同步数据的工作请求。...FCM: firebase.google.com/docs/cloud-… 合理的后台执行策略可以帮助您开发出卓越的应用,在打造完美用户体验的同时,为设备保驾 “续” 航。

    2.5K30

    满足 Google Play 目标 API 等级 (targetSdkLevel) 的要求

    当设备进入 Doze 或者待机模式,会产生下述系统行为: - 网络访问限制; - 推迟应用的 alarms、syncs 和 jobs; - GPS 以及 Wi-Fi 扫描限制; - 普通优先级 Firebase...- 若您的应用不运行在前台,系统将会限制服务: ·· 当应用试图调用 startService() 而 startService 又被禁止,startService() 会抛出异常; ·...Firebase Cloud Messaging ,消息投递受限于后台执行限制。...若消息接收需要必要后台工作,如后台数据同步,您的应用须要通过 Firebase Job Dispatcher 或者 JobIntentService 调度任务。...View.getLocationInWindow() (注意:不是View.getLocationOnScreen()) 来确定应用屏幕位置; ·· 处理 MotionEvent 调用 MotionEvent.getX

    8.7K30

    WorkManager _Android新架构组件

    但这跟AsyncTask, ThreadPool, RxJava这调度管理工具不同的是,WorkManager能帮助你应用中在后台线程干活,及时进程被杀死活或关闭。...但上述这些工具进程结束后及结束所有任务,其实Google自己也说了:”WorkManager并不是为了那种应用内的后台线程而设计出来的. 这种需求你应该使用ThreadPool”。...WorkManager提供了保证,即使您的应用程序强制退出或设备重新启动,你的任务仍会在特定条件匹配执行。 2....如果应用程序没有运行,那么他将使用JobScheduler API或Firebase Job APIs调度者或Alarm manager API运行调度任务。 ?...Constraints:指定任务何时运行(例如,“仅在连接到网络”)。

    2.7K20

    我们能用云函数做什么?

    Firebase以独特的方式使用云函数来满足其独特需求,典型运用的领域: 当发生了一些新奇有趣的事情通知用户 执行实时的数据库清理和维护 云上执行密集的任务,而不是本地的应用程序上 与第三方的服务和...例如,基于实时数据库的聊天室应用程序中,您可以监视写入的事件,并从用户的消息中擦除一些带有敏感词或不恰当的文本。...,而不是本地的应用程序上用例 1.定期删除使用的帐户 2.自动和上传的图像 3.向用户发送批量电子邮件 4.定期汇总数据 5.处理待处理的工作队列 四、与第三方的服务和API集成 云函数可以通过调用和公开服务或...类似于上面的云上执行密集的任务,而不是本地的应用程序上 将存储云对象存储COS的文件通过Map云函数进行文件映射 将映射出来的许多小文件分别通过云函数处理 然后将处理后的文件存储至云数据库中(使得...使用 COS 托管静态网站,构建商品明细模块; 2.使用 无服务器云函数 构建登录模块,可以直接复用 OAuth 的授权登录逻辑; 3.使用 无服务器云函数 构建订单模块,在用户调用下单相关接口触发增删订单等函数

    16.8K40

    8款主流拍摄美化类App动作传感器调用情况评测

    背景 手机闲置状态,电量仍然被消耗。...其实为了避免耗尽电池的电量,一个闲置的设备很快就会进入睡眠状态,但仍然有App利用各种方式悄悄耗电,比如:通过wakeLock持锁、Alarm唤醒、频繁自启动、调用wifi设备、调用Audio、调用GPS...当手机灭屏状态下保持一段时间后,系统会进入休眠,一些后台运行的任务就可能得不到正常执行,应用通过申请动作传感器,利用动作传感器的频繁调用来阻止系统进入休眠,保证应用在后台不被杀死。...四、测试结果 测试结果显示快影在后台测试时间内持续占用Sensor释放。...测试前的遍历并没有遍历到相关功能,并且手机同一位置一直处于静止状态,结果显示一直调用相关的动作传感器,该行为的存在不具备较强的合理性,建议使用相关功能开启相关服务。

    94520

    React Native推送通知:完整的操作指南

    主要有两种类型的通知: 前台通知:当应用程序正在打开并运行时发送给用户的通知 后台通知:无论应用程序是否当前打开,都会发送 推送通知移动应用开发世界中非常流行,原因有很多。...React Native Firebase 库也提供了一种通过 FCM iOS上发送推送通知的方法。... React Native 中处理接收到的通知 要处理接收到的通知,我们首先需要有一个事件监听器,每当用户点击通知都会被调用。...这个库拥有许多特性,其中包括: Firebase 和 OneSignal 集成:与Expo不同,Notifee也支持OneSignal令牌。这为用户使用通知服务提供了更多的选择。...后台通知 感谢 Notifee,我们甚至可以创建后台通知,即使应用程序关闭,也可以发送。这适用于我们想要发送一个无声通知的情况,无论应用程序是否打开,例如文本消息或已完成的下载,都需要发送。

    1.2K10
    领券