gpt4 book ai didi

javascript - React Native 0.44 PushNotifcationIOS.scheduleLocalNotification 在模拟器中处理 JavaScript Date 对象,而不是在设备上

转载 作者:行者123 更新时间:2023-11-29 21:01:47 25 4
gpt4 key购买 nike

native react :0.44.3

目标平台:iOS

开发操作系统:macOS Sierra 10.12.4

构建工具:XCode

这种行为会导致一个非常令人困惑的错误,即预定通知在模拟器上按预期工作,但在设备上以一种非常神秘的方式失败。

重现:

在未来一分钟安排本地通知:

PushNotificationIOS.scheduleLocalNotification({ 
fireDate: new Date(Date.now() + 60 * 1000),
alertBody: 'message'
});

在模拟器中运行这个构建(默认情况下这是一个 Debug 构建,除非你弄乱了设置,我相信)

观察您的通知是否按预期安排。

通过 XCode 在您的设备上将此构建作为调试构建运行(编辑您的方案,以便运行使用调试而不是发布)

尝试安排通知时发生崩溃

在您的设备上将其作为发布版本运行。

观察通知立即触发(请注意,如果计划的通知被分配了一个空日期或一个已经过去的日期,这是预期的 iO​​S 行为。)

请注意,为了观察立即触发的通知,您必须设置一个监听器来处理它并提供反馈。如果相关应用程序在前台(AppState:'active'),本地通知似乎不会显示在 iOS 上。

最佳答案

为了解决这个问题,将您的 Date 对象转换为 Unix 时间。此示例将 fireDate 设置为 future 一分钟:

让 fireDate = new Date(Date.now() + 60 * 1000).getTime();

日期对象不能通过 RCT 桥传递,必须转换为字符串或数字。

但是,请注意,对 Date 对象调用 toString() 也不起作用。推荐的解决方案是使用 getTime() 获取 Unix 时间戳。

关于javascript - React Native 0.44 PushNotifcationIOS.scheduleLocalNotification 在模拟器中处理 JavaScript Date 对象,而不是在设备上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46104418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com