2016-09-19 17 views
16

नए एक्सकोड 8 से डिवाइस टोकन कैसे प्राप्त करें, आईओएस 10 में स्विफ्ट 3 कैसे प्राप्त करें?पुश अधिसूचना टोकन प्राप्त करें - आईओएस 10, स्विफ्ट 3

यहाँ कोड अधिसूचना रजिस्टर करने के लिए:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

     DispatchQueue.main.async { 
      let settings = UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil) 
      UIApplication.shared.registerUserNotificationSettings(settings) 
     } 
     return true 
    } 

func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings) { 
     if notificationSettings.types != UIUserNotificationType() { 
      application.registerForRemoteNotifications() 
     } 
    } 

यहाँ टोकन प्राप्त करने, लेकिन मैं त्रुटि मिलती है "प्रकार के एक तर्क सूची के साथ प्रकार 'UnsafePointer' के लिए प्रारंभकर्ता आह्वान नहीं किया जा सकता '(UnsafeRawPointer)'" :

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
     let chars = UnsafePointer<CChar>((deviceToken as NSData).bytes) 
     var token = "" 

     for i in 0..<deviceToken.count { 
      token += String(format: "%02.2hhx", arguments: [chars[i]]) 
     } 

     print("Registration succeeded!") 
     print("Token: ", token) 
    } 

क्या कोई इसे हल करने में मदद कर सकता है?

धन्यवाद

+0

http://stackoverflow.com/questions/37956482/registering-for-push-notifications-in-xcode-8-swift-3-0 की संभावित डुप्लिकेट – Moritz

+0

आप उद्देश्य सी में इस लिंक इसके पालन कर सकते हैं लेकिन आप कुछ विचार प्राप्त कर सकते हैं http://stackoverflow.com/questions/39572897/ios-10-push-notification-issue-solved –

उत्तर

11
var pushToken = String(format: "%@", deviceToken as CVarArg) 
pushToken = pushToken.trimmingCharacters(in: CharacterSet(charactersIn: "<>")) 
pushToken = pushToken.replacingOccurrences(of: " ", with: "") 
0

यह काम कर सकता था:

let chars = UnsafePointer<CChar>((deviceToken as NSData).bytes.assumingMemoryBound(to:CChar.self)) 

धन्यवाद!

26

इस विधि आईओएस 10 में आपकी समस्या का समाधान हो सकता है:

let token = deviceToken.reduce("", {$0 + String(format: "%02X", $1)}) 

सभी मदद :)

+0

क्यों डाउनवोट? कृपया कारण प्रदान करें –

1

नीचे snnipet एरिक अया समाधान के साथ काम कर रहा है एक ही समस्या, यह एकमात्र चीज है जिसने मेरी मदद की:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
    let token = String(format: "%@", deviceToken as CVarArg) 
     .trimmingCharacters(in: CharacterSet(charactersIn: "<>")) 
     .replacingOccurrences(of: " ", with: "") 
} 
3

सामना करने के लिए धन्यवाद:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { 
    var token = "" 
    for i in 0..<deviceToken.count { 
     token = token + String(format: "%02.2hhx", arguments: [deviceToken[i]]) 
    } 
    print(token) 
} 
2

स्विफ्ट 3 उदाहरण raywenderlich.com से लिया गया।

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){ 
    let tokenParts = deviceToken.map { data -> String in 
     return String(format: "%02.2hhx", data) 
    } 
    let token = tokenParts.joined() 
    print(token) 
} 
संबंधित मुद्दे