【发布时间】:2016-11-05 11:55:57
【问题描述】:
我有 Objective-C 方法
- (void)updateRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;
我在 swift 2.3 中调用成功
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
Moxtra.sharedClient().updateRemoteNotificationsWithDeviceTokens(deviceToken)
}
但在 swift 3 方法更改(从 NSdata 到数据)
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Moxtra.sharedClient().updateRemoteNotifications(withDeviceToken: deviceToken)
}
但是 数据类型 的 swift 3 设备令牌返回 -> 32 字节 NSdata 类型的 swift 2.3 设备令牌返回 - 令牌字符串 - fffeaa1e 5aaaba7d a0e75e33 c139839f 6c906ae5 2b20f834 5a290c3d 20dc447c
所以在 swift 3 中我无法将 deviceToken 传递给服务器
有什么方法可以在 swift 3 中传递参数类型为“Data”的预期设备令牌?
swift 2.3 和 swift 3 方法的区别是什么
斯威夫特 2.3 -
Moxtra.sharedClient().updateRemoteNotificationsWithDeviceTokens(fffeaa1e 5aaaba7d a0e75e33 c139839f 6c906ae5 2b20f834 5a290c3d 20dc447c)
斯威夫特 3
Moxtra.sharedClient().updateRemoteNotifications(withDeviceToken: 32)
【问题讨论】:
-
您的 swift 2.3 代码看起来不对;您正在传递一个字符串,而不是 NSData。您的 swift 3 代码看起来正确; Swift 3
Data自动桥接到NSData。 -
@Paulw11 对!这是我的打字错误,但在代码中我传递了 NSData..我更新了我的问题
-
我还是不明白你的问题。 Swift 3.0 版本有什么错误或其他问题?数据与 NSData 相同
-
@Paulw11我没有收到推送通知......在转换之前一切正常......我已经在 Xcode 8 中完成了所有必需的设置......在 iOS 9 上进行测试
-
您的困惑只是关于 Swift 如何打印数据的方式。 Swift 3 打印 xx bytes,Swift 2 打印
,但结果是一样的。代码中只有一个显着差异: ...WithDeviceTokens与...WithDeviceToken(见结尾的 s)
标签: ios swift3 devicetoken