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

React Native集成Airship后安卓端通知已接收但不显示问题咨询

安卓端Airship推送接收后不展示通知排查方案

核心原因:你接收到的是Airship发送的纯数据类型推送,Firebase默认不会为纯数据消息自动弹出通知,需要要么调整Airship推送类型,要么自行实现通知展示逻辑。

1 优先检查Airship默认推送逻辑

  • 确认Airship后台推送配置:发推送时不要选择「仅数据(Data Only)」类型,选择带通知内容的普通推送类型,Airship SDK默认会自动解析通知内容并展示到通知栏,不需要手动处理Firebase消息回调
  • 确认你添加的setBackgroundMessageHandler逻辑是否拦截了Airship的默认处理:如果你不需要自定义数据推送的处理逻辑,可以直接删除这段代码,避免覆盖Airship的默认消息接收逻辑,恢复自动通知展示

2 若需保留自定义数据推送处理,补充通知展示逻辑

如果业务需要使用纯数据推送自行控制通知展示,需要在消息回调中调用本地通知API主动弹出通知,示例代码如下(以Notifee本地通知库为例,也可替换为项目中使用的其他本地通知库):

import messaging from '@react-native-firebase/messaging';
import notifee, { AndroidImportance } from '@notifee/react-native';

messaging().setBackgroundMessageHandler(async (remoteMessage) => {
  console.log('Message handled in the background!', remoteMessage);
  // 从Airship自定义字段提取通知内容
  const alertText = remoteMessage.data['com.urbanairship.push.ALERT'];
  if (!alertText) return;

  // 安卓8.0及以上必须先创建通知渠道
  const channelId = await notifee.createChannel({
    id: 'default_push_channel',
    name: '默认通知',
    importance: AndroidImportance.HIGH,
  });

  // 弹出本地通知
  await notifee.displayNotification({
    title: '通知标题', // 可根据业务自定义,也可从Airship数据字段提取
    body: alertText,
    android: {
      channelId,
      smallIcon: 'ic_stat_notification', // 替换为项目内的通知小图标资源名
    },
  });
});

同时需要在前台消息回调onMessage中补充相同的通知展示逻辑,否则应用前台运行时也不会弹出通知。

3 检查基础配置项

  • 通知权限:安卓13及以上系统需要动态申请POST_NOTIFICATIONS权限,未授权的应用无法展示任何通知;国产安卓系统还需要手动打开应用的自启动、后台弹出通知权限
  • 通知图标:安卓通知小图标必须为透明背景的单色图标,资源配置错误会导致通知无法正常展示
  • 通知渠道:安卓8.0及以上系统所有通知必须绑定合法的通知渠道,未创建渠道的通知会被系统直接丢弃

4 特殊场景排查

  • 确认应用没有被系统电池优化、后台活动限制拦截,部分系统会禁止第三方应用在后台弹出通知
  • 检查AndroidManifest.xml配置,确认Airship SDK、Firebase SDK的相关服务、接收器配置完整,没有被其他自定义配置覆盖

内容的提问来源于stack exchange,提问作者Faisal Suhaibani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:36:04