may*_*til 1 push-notification reactjs react-native onesignal react-native-android
我是本机反应的新手,我正在使用一个信号进行通知。我从OneSignal.configure();
这里得到了一个信号用户玩家 ID,并通过遵循我已经完成的代码但是我只能在控制台上看到的玩家 ID。我正在使用setState
保存状态,但它显示错误setState is not a function
。如何获取该玩家 ID 以将其保存在状态中。
代码:
componentWillMount() {
OneSignal.init("d447e6e2-0c8e-4781-8292-6e77d2e86691");
OneSignal.configure();
OneSignal.addEventListener('received', this.onReceived);
OneSignal.addEventListener('opened', this.onOpened);
OneSignal.addEventListener('ids', this.onIds);
}
componentWillUnmount() {
OneSignal.removeEventListener('received', this.onReceived);
OneSignal.removeEventListener('opened', this.onOpened);
OneSignal.removeEventListener('ids', this.onIds);
}
onReceived(notification) {
console.log("Notification received: ", notification);
}
onOpened(openResult) {
console.log('Message: ', openResult.notification.payload.body);
console.log('Data: ', openResult.notification.payload.additionalData);
console.log('isActive: ', openResult.notification.isAppInFocus);
console.log('openResult: ', openResult);
}
onIds(device) {
console.log('Device info: ', device);
console.log('player id: ', device.userId);
this.setState({
pid: device.userId,
})
console.log(this.state.pid);
}
Run Code Online (Sandbox Code Playgroud)
事件侦听器的功能,不知道你this
,所以你必须使用bind
把你this
里面他们。
componentWillMount() {
OneSignal.init('ONESIGNAL-APP-ID');
OneSignal.addEventListener('received', this.onReceived.bind(this));
OneSignal.addEventListener('opened', this.onOpened.bind(this));
OneSignal.addEventListener('ids', this.onIds.bind(this));
OneSignal.configure();
}
Run Code Online (Sandbox Code Playgroud)
更新
您还可以声明为箭头函数以避免 .bind(this):
componentWillMount() {
OneSignal.init('ONESIGNAL-APP-ID');
OneSignal.addEventListener('received', this.onReceived);
OneSignal.addEventListener('opened', this.onOpened);
OneSignal.addEventListener('ids', this.onIds);
OneSignal.configure();
}
onReceived = () => {}
onOpened = () => {}
onIds = () => {}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3259 次 |
最近记录: |