2017-04-05 8 views
6

वनसिग्नल का नवीनतम निर्माण संस्करण 'ids उपलब्ध' जैसी चेतावनी उत्पन्न करता है। मैं 'playerID' getPermissionSubscriptionState() बजाय idsAvailable के रूप में मैं नीचे किया का उपयोग कर कैसे मिल सकता है?एक सिग्नल - ids उपलब्ध है

OneSignal.idsAvailable({ (userId, pushToken) in 

     if (pushToken != nil) { 

      if let playerID = userId { 

       // do something 

      } 
     } 
    }) 

उत्तर

8

OneSignal वास्तव में अच्छा प्रलेखन रहता है।

Android के लिए आप idsAvailable विधि है जो उपयोगकर्ता ID और RegistrationId रिटर्न का उपयोग करके userIDs मिल सकती है।

userID उर्फ ​​playerID एक OneSignal UUID स्वरूपित स्ट्रिंग है। (प्रति डिवाइस अद्वितीय प्रति डिवाइस) पंजीकरण आईडी एक Google असाइन पहचानकर्ता है (प्रति ऐप प्रति अद्वितीय डिवाइस और पुनर्स्थापन पर परिवर्तन)।

आईओएस के लिए, आप उपयोगकर्ता आईडी को उसी तरह से प्राप्त कर सकते हैं लेकिन मूल आईओएस एसडीके के संस्करण 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)") 

ऑब्जेक्टिव-सी के लिए:

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 

तो अपने ऊपर कोड अब कुछ इस तरह दिखेगा

userId, playerId रूप में ही है यह अल डाल मैं अपने स्विफ्ट एनालिटिक्स (सिंगलटन) वर्ग में एक साथ अपने स्विफ्ट 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)") 
     } 
    } 

} 
संबंधित मुद्दे