WatchOS 3 在收到推送通知时崩溃

Posted

技术标签:

【中文标题】WatchOS 3 在收到推送通知时崩溃【英文标题】:WatchOS 3 crash upon receiving push notification 【发布时间】:2016-09-28 05:45:48 【问题描述】:

我有一个配置为接收远程通知的应用。在 ios 10 发布之前,iOS 和 WatchOS 端一切正常(推送通知使用本地化消息和自定义声音)

在 iOS 10 和 WatchOS 3 发布后,我不得不添加代码,使用 UserNotification 框架请求推送权限(否则系统不会提供推送令牌,即使旧代码未被弃用)

最糟糕的是,如果我在远程通知到达时运行手表应用程序 - 手表将重新启动并显示苹果徽标。所以推送通知不会导致应用程序本身崩溃,它会导致整个手表操作系统崩溃。有什么想法吗?

【问题讨论】:

【参考方案1】:

你检查过你的应用能力和证书都OK了吗?

我的一个应用有类似的设置(使用远程通知),我不需要更新通知注册代码来使用新的 UserNotification 框架 - 它在 iOS10 上和以前一样工作。

Xcode 8 在尝试帮助管理您的证书方面略有不同,也许有些事情搞砸了?

【讨论】:

证书正在运行,因为 iPhone 能够在解锁屏幕的情况下接收推送通知。但是当屏幕被锁定时 - 推送被发送到 Apple Watch,重启是在手表上打开配套应用程序 您的手表应用中是否有可能导致崩溃的通知处理程序?我还没有考虑实现它,所以我只是在手表上看到一个“正常”的通知,而不用做任何事情。 我试过有无,系统在我的方法有机会执行之前就崩溃了 恐怕没有更多的想法了 :( 祝你好运,如果我能以任何方式提供更多帮助,请告诉我【参考方案2】:

我遇到了同样的问题,导致崩溃的原因是用户信息的“url”值为空。我要求我的后端开发人员将其设为空字符串,一切正常

【讨论】:

url 值在哪里?在 APNS 有效载荷中?【参考方案3】:

发现一个问题。跟随有效载荷会导致 Apple Watch 重启


aps =     
    alert =         
        "loc-args" =             (
            Test,
            "<null>",
            Test,
            4147
        );
        "loc-key" = "test";
    ;
    category = "test";
    sound = default;
;

如果我将 "" 替换为 " " - 崩溃就会消失

【讨论】:

以上是关于WatchOS 3 在收到推送通知时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 iOS 应用程序在收到推送通知时会崩溃?

Worklight 应用程序在收到推送通知时崩溃

收到推送通知时 iOS 13 崩溃?

android 2.3 上的推送通知崩溃。

应用程序被杀死时点击推送通知后应用程序崩溃

收到推送通知且未调用 CGM 意图服务时应用程序崩溃