2017-04-05 30 views
6

OneSignal'ın en yeni sürüm sürümü 'idsAvailable' gibi bir uyarı üretiyor. Aşağıdaki gibi idsAvailable yerine getPermissionSubscriptionState() kullanarak 'playerID' nasıl alabilirim?One Signal - idsAvailable kullanımdan kaldırıldı

OneSignal.idsAvailable({ (userId, pushToken) in 

     if (pushToken != nil) { 

      if let playerID = userId { 

       // do something 

      } 
     } 
    }) 

cevap

8

OneSignal gerçekten iyi belgelerine tutar.

Android için, userID ve registrationID değerini döndüren idsAvailable yöntemini kullanarak userID'leri alabilirsiniz.

userID aka playerID, OneSignal UUID biçimlendirilmiş dizedir. (uygulama başına cihaz başına benzersiz) registrationID, Google tarafından atanan bir tanımlayıcıdır (her uygulamada cihaz başına benzersizdir ve yeniden yükleme sırasında değişir).

iOS için, kullanıcı kimliklerini aynı şekilde ancak yerel iOS SDK sürüm 2.5.0+ sürümünde getPermissionSubscriptionState yöntemini ve addSubscriptionObserver yöntemini kullanabilirsiniz.

yapabilirsiniz aşağıdaki gibi Swift için OSPermissionSubscriptionState olsun: Objective-C için

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)") 

:

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
:

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

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

Yani yukarıdaki kod artık bu gibi bir şey olacaktır

userId, playerId ile aynıdır. Bazı örnek Analytics (singleton) sınıfında birlikte kullanıyorum ve benim Swift 4 uygulamasında kullanıyorum:

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)") 
     } 
    } 

} 
İlgili konular