移动设备未在 OneSignal 注册的原因可能是什么?

What reason might be that mobile device is not registered with OneSignal?

我们有一个小应用程序,我们昨天开始对大约 50 人进行 alpha 测试。这是 React Native 应用程序。 OneSignal 处理推送通知,这些对于充分利用应用程序来说是必不可少的。对于大约 80% 的人来说,它工作得很好。他们的设备已注册,我将 userId 存储在我们的数据库中,并发送和接收通知。对于其他人,我什至无法获得userId。

所有用户都使用完全相同的应用程序,没有变体,因此 OneSignal appId 绝对正确。

我有以下代码,每当应用程序启动时都会执行。对于那些失败的用户,甚至不会调用 registerOneSignal 函数。这真是奇怪的行为。可能是 OneSignal 中的错误?

react-native-onesignal: v3.0.5

const alternateApproach = (device) => {
  log.debug('onesignal ids', device)
  this.activateOneSignal(device.userId, device)
}

const registerOneSignal = (status: SubscriptionStatus) => {
  log.debug('onesignal state', status)
  if (!status.userId) {
    OneSignal.addEventListener('ids', alternateApproach)
    return
  }
  this.activateOneSignal(status.userId)
}

OneSignal.getPermissionSubscriptionState(registerOnesignal)

最后,这确实是我这边的一个错误,因为当一个事件在监听器被附加之前被触发时,它将永远错过。我已将监听 ids 事件移至我的应用程序的早期阶段,它现在似乎对每个人都有效。

有点奇怪的是,OneSignal.getPermissionSubscriptionState 不是一个事件,它应该调用一个回调函数来从中获取数据,无论时间如何。所以显然 OneSignal 模块中存在一些错误。也许下面也有一个事件?我已将此方法的调用移动到我正在侦听 ids 的同一点。做了几个测试确实表明 ids 每次都被调用,但在某些情况下永远不会调用该方法的回调。