You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

API调用发送FCM通知,后台点击无法打开安卓应用问题求助

解决ReactJS + Capacitor安卓应用FCM后台通知点击无法打开应用的问题

针对你遇到的后台状态下Firebase控制台发送的通知可正常点击打开应用,但Postman调用API发送的通知点击无反应的问题,结合你提供的Payload,可从以下几个方向排查解决:

1. 确保click_action与AndroidManifest.xml配置匹配

FCM后台通知的点击动作依赖click_action值匹配对应的Activity intent-filter。你Payload里notification.click_action设为home,需要在安卓项目的AndroidManifest.xml中给主Activity(通常是MainActivity)添加对应的intent-filter:

<activity
    android:name=".MainActivity"
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"
    android:launchMode="singleTask"
    android:label="@string/title_activity_main"
    android:theme="@style/AppTheme.NoActionBarLaunch">

    <!-- 原有主入口的intent-filter -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

    <!-- 添加匹配click_action的intent-filter -->
    <intent-filter>
        <action android:name="home" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

注意:如果你的Capacitor项目主Activity类名自定义过,要对应修改android:name的值。

2. 调整Payload的click_action位置(可选)

当同时发送notification和data字段时,部分场景下FCM对后台通知的处理优先级不同。可以尝试把click_action移到data字段中,同时保留notification字段的基础内容:

{
    "to": "--mytoken--",
    "notification": {
        "title": "Title Notification",
        "body": "Body Notification"
    },
    "data": {
        "click_action": "home",
        "body": "Body of Your Notification in Data",
        "title": "Title of Your Notification in Title",
        "type": "edit_profile",
        "id_reference": "0",
        "badger": "1",
        "inbox_subject": "",
        "news_title": "YYY",
        "url": "https://yamie2.co.id/news/webview/3",
        "icon": "https://yamie.co.id/images/icon.png"
    }
}

这种方式下,Capacitor的FCM插件可通过监听notificationActionPerformed事件捕获点击动作,同时确保Activity被唤起。

3. 确认Capacitor FCM插件的事件监听

在React应用的入口文件(比如App.tsx/App.jsx)中,确保正确监听通知点击事件,即使应用在后台,该事件也应触发:

import { FirebaseMessaging } from '@capacitor-firebase/messaging';

// 组件挂载时监听通知点击事件
useEffect(() => {
    const unsubscribe = FirebaseMessaging.addListener('notificationActionPerformed', async (action) => {
        console.log('Notification clicked:', action);
        // 可根据data字段添加自定义跳转逻辑,比如根据type跳转到对应页面
        if (action.notification.data.type === 'edit_profile') {
            // 处理跳转逻辑
        }
    });

    return () => unsubscribe();
}, []);

4. 检查Activity的launchMode

确保MainActivity的launchMode设置为singleTask(Capacitor默认配置),不要设置为singleInstance,否则可能导致应用无法正常从后台唤起。


内容的提问来源于stack exchange,提问作者Toto Prasetyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:05:31