反应原生推送通知 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 不是函数'的主要内容,如果未能解决你的问题,请参考以下文章