Android端接收Airship通知但不显示问题排查(React Native环境)
Android端@ua/react-native-airship通知不显示问题排查
问题描述
已接收Airship推送的日志消息,但Android设备上无通知展示;使用@ua/react-native-airship库,iOS端功能正常,仅Android端异常。Airship返回的响应数据如下:
{ "data": { "com.urbanairship.metadata": "eyJ2ZXJzaW9uX2lkIjoxLCJ0aW1lIjoxNzEyMjI3MTgxNzg4LCJwdXNoX2lkIjoiYTRmMDA4YjAtZjI2Zi0xMWVlLWFjYjctMDAwMGExYWNlMzdiIiwiY2FtcGFpZ25zIjp7ImNhdGVnb3JpZXMiOltdfSwiY29udGV4dCI6e319", "com.urbanairship.push.ALERT": "Congratulations! You've successfully configured Android Push.", "com.urbanairship.push.APID": "a7e006b7-1a41-4b68-b950-0e3f5cefee0b", "com.urbanairship.push.CANONICAL_PUSH_ID": "a4f008b0-f26f-11ee-acb7-0000a1ace37b", "com.urbanairship.push.PUSH_ID": "a4f511c0-f26f-11ee-b31c-02420ecfd1d8", }, "from": "1068392163023", "messageId": "0:1712227181868860%84526986f9fd7ecd", "sentTime": 1712227181845, "ttl": 2419200, }
排查与解决步骤
1. 确认通知权限
- 检查Android设备是否已为应用授予通知权限(包括横幅、声音、锁屏显示等),可在系统设置的「应用权限」中手动验证。
- 也可通过代码主动获取权限状态:
const status = await Airship.notifications.getNotificationStatus(); console.log("通知权限状态:", status.authorized); // 需返回true
2. 检查通知通道配置(Android 8.0+)
- Android 8.0及以上系统要求必须配置通知通道,否则通知无法展示。确认已创建有效通道:
await Airship.notifications.createNotificationChannel({ id: "default", name: "默认通知通道", importance: 4, // 对应IMPORTANCE_HIGH,确保通知能弹出 description: "用于展示推送通知的默认通道" }); - 若推送消息未指定通道ID,需确保默认通道已存在且未被禁用。
3. 处理前台推送逻辑
- 当应用处于前台时,Airship默认不会自动弹出通知,需手动监听
pushReceived事件并触发通知展示:Airship.addListener("pushReceived", (event) => { if (event.foreground) { Airship.notifications.showNotification({ title: "推送通知", body: event.data["com.urbanairship.push.ALERT"], channelId: "default" }); } });
4. 验证Airship配置文件
- 检查
android/app/src/main/assets/airshipconfig.properties配置:developmentAppKey/productionAppKey需与Airship后台的对应环境密钥一致fcmSenderId需匹配Firebase项目的Sender IDinProduction需与当前构建环境(开发/生产)保持一致
5. 检查设备系统设置
- 确认设备未开启免打扰模式,且应用未被设置为「不显示通知」
- 检查通知栏是否被隐藏,或应用通知被归类到「静默通知」分组中
内容的提问来源于stack exchange,提问作者Digen Kanani
相关产品推荐
相关产品推荐

