iOS 13推送通知已修复但存在问题

时间:2019-11-27 15:55:58

标签: ios swift xcode apple-push-notifications

当数据库被破坏的令牌时,我遇到了许多其他人遇到的相同问题,但是我已将其修复。我花了几天的时间试图找出问题(我是ios和swift的新手),并使用发现的各种代码,在Nshipster使用了这个很棒的教程。因此,对于我的教育,请帮助我进一步了解这个问题。

我正在将MacOs High Sierra与Xcode 10 swift 4.2配合使用(是的,我知道我有10岁的macbook pro)。我的iPhone当前是x,为13.1。我从Github下载了所需的Xcode支持文件,以便可以测试从与testflight一起使用的同一部手机中获取设备令牌的情况。好的,所以大多数开发人员在这里说他们在代码中有tokenData。“ description”,而“ description”部分才是问题。我的代码中从未使用过该令牌,但仍然得到了损坏的令牌:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

    var deviceID : String = UIDevice.current.identifierForVendor!.uuidString
    let devicePlatform : String = "IOS"
    var deviceTokenKey : String = ""


    deviceTokenKey = String(format: "%@", deviceToken as CVarArg)

因此,当我每次使用上述代码打印出正确格式的设备令牌时,都将Iphone连接到Xcode。然后,我从Mac商店使用了Easy Apns Provider,并使用沙箱成功将推送发送到了手机。我从Xcode的调试窗口中获得了令牌。现在,在我的数据库中,已连接的电话还将向数据库发送正确的设备令牌,并且它与Xcode打印匹配。现在,一旦我从构建中删除了已安装的应用程序(这样我就可以获得一个新令牌),然后使用相同的iPhone在testflight中下载了相同的应用程序(相同的构建和版本),它将再次发送损坏的设备令牌。嗯唯一的变化是调试与发布。如果令牌具有相同的代码,为什么令牌会在释放(testflight)注册时中断?昨晚我做了4次,看我是否发疯,每次都一样。高兴的appconnect昨晚处理得很快,哈哈。

我更新后的代码效果很好,并且在调试和发布时都获得了正确的令牌:

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

    var deviceID : String = UIDevice.current.identifierForVendor!.uuidString
    let devicePlatform : String = "IOS"
    var deviceTokenKey : String = ""



      deviceTokenKey = deviceToken.map { String(format: "%02x", $0) }.joined()

我知道有沙箱和生产网关,但是一个返回一个破损的令牌而另一个不返回相同的代码是没有意义的。我已经读过swift会看到“数据”并在其后附加“描述”,但这没有任何意义,因为在调试时令牌可以正确返回。

感谢您的答复。

0 个答案:

没有答案