我尝试使用OneSignal react native软件包向我的用户发送推送通知。这适用于iOS。但是,在Android上,每次调用OneSignal
库都会超时。当我运行adb logcat
时,我在控制台中看到以下消息:
E / OneSignal:OneSignal.init尚未被调用。无法获得OSPermissionSubscriptionState
根据文档(https://documentation.onesignal.com/v5.0/docs/react-native-sdk-setup),这不是我应该手动执行的步骤,而是在设置订阅时由库本身执行。我为OneSignal写了一些帮助函数,它们抛出了上面的错误:
getPermissionSubscriptionState = () => {
return new Promise((resolve, reject) => {
OneSignal.getPermissionSubscriptionState((state) =>{
console.log(state);
resolve(state);
});
});
}
enablePushnotifications = async () => {
OneSignal.registerForPushNotifications();
}
ensureSubscription = async () => {
const status = await this.getPermissionSubscriptionState();
console.log(status);
if(!status.notificationsEnabled && !status.hasPrompted) {
this.enablePushnotifications();
}
return status;
}
在我的根组件中,我调用ensureSubscription
方法,如下所示:await OneSignalHelper.ensureSubscription();
。在ensureSubscription()
内我调用getPermissionSubscriptionState()
,但是一旦我这样做,就会打印出上述错误。
非常感谢任何帮助。