反应原生推送通知 IOS 'addListener 不是函数'

Posted

技术标签:

【中文标题】反应原生推送通知 IOS \'addListener 不是函数\'【英文标题】:react native push notification IOS 'addListener is not a function'反应原生推送通知 IOS 'addListener 不是函数' 【发布时间】:2016-08-16 10:47:34 【问题描述】:

我正在尝试使用 react-native-push-notifications nmp module 为我的项目设置推送通知。它似乎很棒而且非常有用,它在 android 上几乎可以运行,但我无法让它在 ios 上运行。我根据 PushNotificationsIOS 的文档做所有事情,但是当我打电话时 PushNotification.configure(..) 它给了我这个错误:

Unhandled JS Exception: this._nativeModule.addListener is not a function.(In 'this._nativeModule.addListener(eventType)', 'this._nativeModule.addListener' is undefined)

但如果我调用PushNotification.requestPermissions() 或其他功能,它可以工作并且权限在那里。

我试图删除节点模块和“npm install” - 没有帮助。此外,如果我从 PushnotificationIOS(反应本机模块)调用任何内容,我也会遇到同样的错误。 我使用 react-native 0.31

似乎我做错了什么,但我无法弄清楚。任何想法将不胜感激!

【问题讨论】:

所以我用一点魔法解决了这个问题。它适用于 react native0.27,但不适用于新版本。我删除了安装 react-native 0.33 和 react 15.3.1 的节点模块,清除了派生数据并清理了项目,然后我再次执行了文档中的所有步骤并且它工作了。问题是我之前已经做过 5 次了,但都没有成功,但这一次显然有点神奇。 【参考方案1】:

对于 iOS,您可以使用 addEventListener 方法添加事件侦听器,而不是 addListener,尽管您面临的问题可能在 react-native-push-notifications 的源代码中。我刚刚查看了他们的源代码,看起来他们正在调用addEventListener。我会尝试运行 npm update --save react-native-push-notifications@latest 来获取最新版本的软件包。

【讨论】:

我认为你误解了这个错误。 addListener 实际上调用成功了。它在内部尝试调用this._nativeModule.addListener 的反应addListener 代码,这就是失败的原因。

以上是关于反应原生推送通知 IOS 'addListener 不是函数'的主要内容,如果未能解决你的问题,请参考以下文章

推送通知 IOS 反应原生 NSDictionary 错误

反应本机ios目标c,无法在前台接收推送通知

反应本机推送通知链接到特定页面

找不到“React / RCTDefines.h”文件。在反应原生推送通知集成中

反应原生推送通知从 API 获取数据

反应本机推送通知,GCM 服务器返回 401