无法在 Swift5 中将类型 'UnsafeRawPointer' 的值转换为预期的参数类型 'RawPointer'

Cannot convert value of type 'UnsafeRawPointer' to expected argument type 'RawPointer' in Swift5

我正在尝试获取设备令牌。

  1. 首先,这个值是唯一的吗?

    我承认它是一个独特的价值,并试图得到它。而我正在按照获取设备令牌的方式看到错误。

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        let chars = UnsafePointer<CChar>((deviceToken as NSData).bytes)  // get Error 
        var token = ""
        
        for i in 0..<deviceToken.count {
            token += String(format: "%02.2hhx", arguments: [chars[i]])
        }
        
        print("Registration succeeded!")
        print("Token: ", token)
    }

Error is Cannot convert value of type 'UnsafeRawPointer' to expected argument type 'RawPointer'

如何消除这个错误?

  1. 如果您重新安装应用程序,该值是否不会改变?

从 Swift 3 开始,您可以更简单地将 Data 转换为十六进制字符串

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {  
    let token = deviceToken.map{ String(format: "%02x", [=10=]) }.joined()
    print("Registration succeeded!")
    print("Token: ", token)
}

您的问题:

  1. 该值会定期更改。如果您不管理发送推送通知的服务器,则无需关心令牌。