2017-07-23 47 views
2

在我的应用程序中,我使用OneSignal和Firebase设置了通知系统。但是,当我提示OneSignal Notification Alert并且用户允许通知时,userID/playerID返回nil。以下是以下代码:OneSignal UserID返回零 - swift

static func getNotificationPermissionsAndStorePlayerIdInFireabse(currentUserId: String) { 
    OneSignal.inFocusDisplayType = OSNotificationDisplayType.notification 
    OneSignal.promptForPushNotifications(userResponse: { accepted in 
     if accepted == true { 
      let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState() 

      let userID = status.subscriptionStatus.userId 
      let pushToken = status.subscriptionStatus.pushToken 

      if pushToken != nil { 
       if let playerID = userID { 
        FIRDatabase.database().reference().child("users").child(currentUserId).child("oneSignal").setValue([playerID: pushToken!]) 
       } 
      } 
     } 
    }) 
} 

在上面的代码中,我访问userID和推送令牌,但是,userID返回nil。另一方面,推送令牌具有价值。我不知道为什么userId是零。任何帮助,将不胜感激。

PS:请注意,我叫我的用户登录后此功能

+0

尝试打印用户ID也许没有被添加有值和尝试打印您的[status.subscriptionStatus.userId] too –

+0

它的打印无 –

+0

这两个打印零? –

回答

0

你有什么版本OneSignal的?我有一个使用OneSignal的应用程序,但我用不同的功能来访问用户的OneSignal ID:(其实我使用的是找不到的功能)

OneSignal.idsAvailable({ (userId: String?, registrationId: String?) 
    // Check for ID 
    if let onesignalUserId = userId { 
    // Save OneSignalId to Firebase 
    } 
}) 
+0

我有最新版本,并且在该版本中可用的函数ID已被弃用。 –