【问题标题】:Push notifications in simulator - Not working Xcode 11.4beta在模拟器中推送通知 - 不工作 Xcode 11.4beta
【发布时间】:2020-05-23 10:26:30
【问题描述】:

最近,Apple 也在模拟器中添加了推送通知。模拟器没有收到我现有的应用程序通知。

如何在模拟器中模拟推送通知?

模拟器支持模拟远程推送通知,包括后台内容获取通知。

参考:https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_beta_release_notes

【问题讨论】:

标签: ios apple-push-notifications ios-simulator simulator


【解决方案1】:

是的,你是对的。使用 Xcode 11.4:

模拟器支持模拟远程推送通知,包括后台内容获取通知。 (xcode 11.4 release notes)

您只需将valid APNs file 拖放到您的模拟器上。

但是,如果有人问为什么不调用UNNotificationServiceExtension的实例方法didReceive(_:withContentHandler:),那是因为属性"mutable-content"没有考虑进去。

通知服务扩展在模拟推送通知中不起作用。不支持可变内容键。 (55822721) (xcode 11.4 release notes)

总的来说,这意味着一个流畅的开发用例,即在本地机器上使用模拟器轻松测试rich push notifications 将无法正常工作!

【讨论】:

  • 谢天谢地,我停了一会儿,搜索了一下。以为我做错了什么,因为以前的有效负载 json 文件工作正常。 ?
【解决方案2】:

模拟器支持模拟远程推送通知,包括后台内容获取通知...

Apple 没有向模拟器添加推送通知,他们添加了对模拟推送通知的支持。所以这意味着您无法收到任何推送通知,您可以模拟它们。

您可以在 Simulator 部分下的Xcode Beta Release Notes 中阅读更多相关信息。

【讨论】:

    【解决方案3】:

    要测试远程推送,只需将 APNS 文件拖到目标模拟器上。此方法要求有效负载包含“Simulator Target Bundle”键。否则,您将收到以下错误消息:

    无效的推送通知:文件不包含有效的 JSON 负载或缺少 Simulator Target Bundle 密钥。

    所以将“模拟器目标包”添加到您的有效负载文件中:

    {
        "aps" : {
            "alert" : {
                "title" : “Namaste”,
                "body" : “This is iOS development notification test“
            },
        },
        "Simulator Target Bundle": "com.sarunw.example-xcode-11-4"
    }
    

    终端中的以下simctl命令将发送通知,由于命令中包含捆绑标识符,因此文件中不需要“模拟器目标捆绑”:

    xcrun simctl push <device> <bundle-identifier> <path-to-apns-file>
    

    &lt;device&gt; 如果您只有一台设备在模拟器中运行,则可以“启动”。否则使用xcrun simctl list 查看它们的列表,并复制您要发送到的设备的 UUID。)

    【讨论】:

    • 只是为了补充@Arvind 的答案,当您只是想将 APNS 文件拖到模拟器中时,“Simulator Target Bundle”键是您的应用程序目标的包标识符,这是相同的&lt;bundle-identifier&gt; 参数可以与simctl 命令一起使用。
    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多