2016-09-11 29 views
0

我注意到在iPhone上运行应用程序时重复调用PushNotificationIOSregister处理程序。我正在使用react-native 0.32并在iPhone 5s上运行它。重复调用PushNotificationIOS注册处理程序

下面是我如何注册register事件处理程序,这是相当标准的

PushNotificationIOS.addEventListener('register', this.appRegistrationHandlerIos); 

在事件处理程序,我只是在数据库中存储的设备令牌。我正在观察,它每隔一秒钟就会重复一遍。有没有人观察过它?我添加了代码来移除register事件处理程序中的事件处理程序,这似乎解决了问题,但它是正确的方式。该register处理程序看起来像这样的变化

appRegistrationHandlerIos = (deviceToken) => { 
    console.log('Updating the device info') 
    // Store the token in the database 
    PushNotificationIOS.removeEventListener('register', this.appRegistrationHandlerIos); 
} 
+0

你能提供在哪里/当你设置的事件侦听器的详细信息? –

+0

对不起,迟到的回应。我一直在旅行。我在'app.'组件的'componentWillMount'方法中设置事件监听器,该组件在'index.ios.js'文件中呈现。 –

回答

0

后,如果您在componentWillMount登记,推荐的方法是在compononentWillUnmount到removeEventListener。 https://facebook.github.io/react-native/docs/pushnotificationios.html#removeeventlistener

我的建议是设置它只有一次,当应用程序启动和调度的行动,如果你使用的是终极版/光通量等

+0

这就是我正在做的。注册'componentWillMount'中的事件处理程序并注销'componentWillUnmount'方法中的处理程序,但是我发现'register'事件处理程序被一次又一次地用相同的设备标记调用,而不是只调用一次。我会尝试在一个新项目中重现并在rnplay上发布代码。 –

相关问题