首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取推送通知令牌- iOS 10、Swift 3

获取推送通知令牌- iOS 10、Swift 3
EN

Stack Overflow用户
提问于 2016-09-19 12:02:42
回答 10查看 26.6K关注 0票数 20

如何从新的xCode 8iOS 10中的Swift 3获取设备令牌

以下是注册通知的代码:

代码语言:javascript
复制
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()
    }
}

在这里,我得到了令牌,但我得到了以下错误

代码语言:javascript
复制
Cannot invoke initializer for type 'UnsafePointer<CChar>' with an argument list of type '(UnsafeRawPointer)':

代码语言:javascript
复制
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)
}

有人能帮我解决这个问题吗?

EN

回答 10

Stack Overflow用户

发布于 2016-09-28 18:10:33

此方法可能会解决iOS 10及更高版本中的问题:

代码语言:javascript
复制
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)
}
票数 37
EN

Stack Overflow用户

发布于 2016-09-22 22:57:54

代码语言:javascript
复制
var pushToken = String(format: "%@", deviceToken as CVarArg)
pushToken = pushToken.trimmingCharacters(in: CharacterSet(charactersIn: "<>"))
pushToken = pushToken.replacingOccurrences(of: " ", with: "")
票数 12
EN

Stack Overflow用户

发布于 2017-07-01 02:29:56

来自raywenderlich.com的Swift 3示例。

代码语言:javascript
复制
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)
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39565172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档