如何解决反应本机推送通知连续两个或多个通知无法在 android 上打开
我正在使用库发送推送通知 React Native Firebase
。通知定期到达,但是当您打开两个通知时,第一个在所需实体上打开,第二个只是打开应用程序,尽管第二个也有有效负载。可能是什么问题呢?
按照文档中的示例,我将 SetBackgroundMessageHandler 添加到 index.js 并将打开推送通知的函数添加到 wrapper.js。示例代码如下。
当推送通知在 android 上打开时,它总是被称为 messaging().getInitialNotification()
并且应用程序似乎重新启动。
Index.js
//index.js
import { registerRootComponent } from "expo";
import App from "./App";
import messaging from "@react-native-firebase/messaging";
messaging().setBackgroundMessageHandler(async (remoteMessage) => {
console.log("setbackground",remoteMessage);
});
registerRootComponent(App);
Wrapper.js
//wrapper.js
const pushPattern = {
news: (id) => Actions["newspage"]({ id }),event: (id) => Actions["eventpage"]({ id }),category: (id,entity_name) => Actions["subcataloglist"]({ id,entity_name }),action: (id) => Actions["offerspage"]({ id }),organization: (id) => Actions["organizationpage"]({ id }),application_post: (id) => Actions["commentspage"]({ id }),};
const openPush = () => {
messaging().onNotificationOpenedApp(async (remoteMessage) => {
console.log("Notification caused app to open from Background state:",remoteMessage);
const { table,open_id,entity_name } = remoteMessage.data;
if (table) pushPattern[table](open_id,entity_name);
});
messaging()
.getInitialNotification()
.then((remoteMessage) => {
console.log(
"Notification caused app to open from Quit state: ",remoteMessage
);
if (remoteMessage) {
const { table,entity_name } = remoteMessage.data;
if (table) pushPattern[table](open_id,entity_name);
}
});
};
componentDidUpdate() {
openPush();
}
即使在打开第二个通知后,我也收到此错误
警告:无法在现有状态转换期间更新(例如
render
内)。 Render 方法应该是 props 的纯函数
和状态。
附言我注意到如果你把一个函数 openPush()
放到
async componentDidMount() {
this.onAppLoad().finally(() => {
...
openPush();
});
然后所有推送通知被打开,但错误仍然存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。