(RN) 可能未处理的 Promise Rejection (id: 0):推送通知
Posted
技术标签:
【中文标题】(RN) 可能未处理的 Promise Rejection (id: 0):推送通知【英文标题】:(RN) Possible Unhandled Promise Rejection (id: 0): Push Notification 【发布时间】:2021-10-21 18:53:03 【问题描述】:我是 React Native 的新手。我正在使用“推送通知”发送指向该应用程序的链接。当我测试它时,一切都在后台和应用程序关闭时工作。但是每次打开应用程序时,都会收到以下警告。我该如何解决这种情况?
WARN 可能的未处理 Promise Rejection (id: 0): TypeError: null 不是对象(评估'remoteMessage.data')
我的代码:
import React, useEffect from 'react'
import Button, Linking, View from 'react-native'
import styles from './styles/SplashStyles'
import messaging from '@react-native-firebase/messaging'
import DASHBOARD from '../navigation/routesNames'
const Splash = ( navigation ) =>
useEffect(async () =>
messaging()
.subscribeToTopic('users')
.then(() => console.log('Subscribed to topic!'));
//Notification caused app to open from background state:'
messaging()
.onNotificationOpenedApp(remoteMessage =>
if (remoteMessage.data.url)
Linking.openURL(remoteMessage.data.url)
);
//Notification caused app to open from quit state
messaging()
.getInitialNotification()
.then(remoteMessage =>
if (remoteMessage.data.url)
Linking.openURL(remoteMessage.data.url)
);
, [])
return (
<View style=styles.container>
<Button
title="Start"
onPress=() =>
navigation.reset(
index: 0,
routes: [ name: DASHBOARD ]
)
/>
</View>
)
export default Splash
【问题讨论】:
【参考方案1】:我认为是因为在初始化时,remoteMessage
的值在通过remoteMessage.data
专门渲染时尚未定义,导致错误。如果你不介意引入对 lodash 包的依赖,可以使用一个名为“has”的助手来检查路径是否存在。例如:
if (_.has(remoteMessage, 'data.url') ....
【讨论】:
以上是关于(RN) 可能未处理的 Promise Rejection (id: 0):推送通知的主要内容,如果未能解决你的问题,请参考以下文章
android 应用程序可能出现未处理的 Promise Rejection
React Native 中可能出现未处理的 Promise Rejection 网络错误
可能未处理的 Promise Rejection (id: 2): TypeError: _petition.default.getCategory is not a function
尝试在 React Native 中使用 GoogleSignIn,然后可能出现未处理的 Promise Rejection(id:错误:DEVELOPER_ERROR