2017-04-05 63 views
6

OneSignal的最新版本生成警告,如'idsAvailable'已被弃用。我怎么能得到'playerID'使用getPermissionSubscriptionState()而不是idsAvailable,因为我在下面做?一个信号 - idsAvailable已弃用

OneSignal.idsAvailable({ (userId, pushToken) in 

     if (pushToken != nil) { 

      if let playerID = userId { 

       // do something 

      } 
     } 
    }) 

回答

8

OneSignal保持真正的好文件。

对于android,您可以使用idsAvailable方法获取用户标识,该方法返回用户标识和注册标识。

userID aka playerID是OneSignal UUID格式化的字符串。 (每个应用每个设备都是唯一的) registrationID是Google分配的标识符(每个应用每个设备都是唯一的,并在重新安装时发生更改)。

对于iOS,您可以以相同方式获取用户标识,但在本机iOS SDK的2.5.0+版本中添加了getPermissionSubscriptionState方法和addSubscriptionObserver。

你可以得到OSPermissionSubscriptionState为雨燕如下:

let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState() 

let hasPrompted = status.permissionStatus.hasPrompted 
print("hasPrompted = \(hasPrompted)") 
let userStatus = status.permissionStatus.status 
print("userStatus = \(userStatus)") 

let isSubscribed = status.subscriptionStatus.subscribed 
print("isSubscribed = \(isSubscribed)") 
let userSubscriptionSetting = status.subscriptionStatus.userSubscriptionSetting 
print("userSubscriptionSetting = \(userSubscriptionSetting)") 
let userID = status.subscriptionStatus.userId 
print("userID = \(userID)") 
let pushToken = status.subscriptionStatus.pushToken 
print("pushToken = \(pushToken)") 

对于Objective-C的:

OSPermissionSubscriptionState* status = [OneSignal getPermissionSubscriptionState]; 
status.permissionStatus.hasPrompted 
status.permissionStatus.status 

status.subscriptionStatus.subscribed 
status.subscriptionStatus.userSubscriptionSetting 
status.subscriptionStatus.userId 
status.subscriptionStatus.pushToken 

所以你上面的代码现在看起来是这样的:

let status: OSPermissionSubscriptionState = OneSignal.getPermissionSubscriptionState() 

let userID = status.subscriptionStatus.userId 
    print("userID = \(userID)") 
let pushToken = status.subscriptionStatus.pushToken 
    print("pushToken = \(pushToken)") 

if pushToken != nil { 
    if let playerID = userID { 
     // do something 
    } 
} 
0

userIdplayerId相同,将它l在我的Swift 4应用程序中使用的一些示例分析(单例)类中:

class Analytics : NSObject, OSSubscriptionObserver { 

    ///the singleton 
    static let shared = Analytics() 


    func setupOneSignal(launchOptions: [UIApplicationLaunchOptionsKey : Any]?) { 
     OneSignal.setLogLevel(.LL_VERBOSE, visualLevel: .LL_NONE) 
     OneSignal.add(self as OSSubscriptionObserver) 

     let settings : [String : Any] = [kOSSettingsKeyInAppLaunchURL : false] 
     OneSignal.initWithLaunchOptions(
      launchOptions, 
      appId:Environment.oneSignalAppId, 
      handleNotificationReceived: { 
       (osnotification) in 
       //..... 
     }, 
      handleNotificationAction: { 
       (osNotificationOpenedResult) in 
       //..... 

     }, 
      settings: settings) 
    } 

    func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) { 
     if let state = OneSignal.getPermissionSubscriptionState(), 
      let userId = state.subscriptionStatus.userId, 
      let pushToken = state.subscriptionStatus.pushToken { 
      print("onesignal.userId : \(userId)") 
      print("onesignal.pushToken : \(pushToken)") 
     } 
    } 

}