【问题标题】:Is a iOS silent notification received when the app is killed应用被杀死时是否收到 iOS 静默通知
【发布时间】:2017-03-01 08:14:13
【问题描述】:

当使用"content-available": "1" 向被用户杀死的应用程序发送后台推送时,应用程序不会启动到后台模式并且application:didReceiveRemoteNotification:fetchCompletionHandler: 不会被称为Apple doc say

使用此方法为您的应用处理传入的远程通知。 [...]此外,如果您启用了远程通知后台模式,系统将启动您的应用程序(或将其从挂起状态唤醒)并在远程通知到达时将其置于后台状态。 但是,如果用户强制退出,系统不会自动启动您的应用。

我的问题是:有什么方法可以在用户下次启动应用程序时访问这个静默推送负载?

我尝试使用didFinishLaunchingWithOptions 方法的launchOptions,但它们不包含推送有效负载。

NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

我的用例是我只依靠推送通道来接收应用程序的数据,但应用程序不能它们。

【问题讨论】:

  • 依赖推送可能是个坏主意,如果用户拒绝推送通知的权限怎么办?或者随后将其关闭?
  • 用户权限不影响静默推送。即使用户关闭此推送通知,应用仍然可以接收静默有效负载
  • 啊。那我今天学到了新东西!
  • @Jan 你找到什么了吗?我现在有点这种情况?在这种情况下我应该使用什么策略?
  • 当应用程序被杀死时,没有办法接收任何远程推送,所以你只需要接受 :) 我认为 Apple 是“按设计”这样做的

标签: ios apple-push-notifications


【解决方案1】:

简短的回答是:不,你不能。

您也无法使用 VoIP 推送,唯一的选择是使用带有推送通知服务扩展的常规推送。在您的应用程序和此扩展程序之间共享一个钥匙串,在收到通知时将推送有效负载保存在钥匙串中,并在您的应用程序进入前台时检索它。 缺点是您需要向用户呈现视觉通知,但它可以是无声的,并且您可以选择呈现您想要的任何文本(最佳选择取决于您的应用程序的功能以及此通知的目的)。

【讨论】:

    【解决方案2】:

    您可以使用 VoIP 推送消息,请参见此处:

    Voice Over IP (VoIP) Best Practices

    使用 PushKit 接收 VoIP 推送有很多优点:

    • [...]
    • 如果您的应用在收到 VoIP 推送时未运行,则会自动重新启动。
    • [...]

    请注意,您的应用必须具有启用 VoIP 功能的后台模式,如果滥用,这可能会成为应用商店批准的问题。

    【讨论】:

    • 是的,我也在关注这个 VoIP 推送。这不是只为实际使用 VoIP 的应用保留的吗?
    • 如果我的应用根本不提供 VoIP 功能,我相信我无法使用 PushKit,可以吗?
    【解决方案3】:

    看文档,好像应该实现这个方法:

    可选功能应用程序(_应用程序:UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

    在该方法中,编写代码来存储有效负载 (userInfo)。也许将它暂时存储在 userDefaults 中。然后当应用程序启动时,检查有效负载是否可用。

    【讨论】:

    • 我确实实现了这个方法,但是当应用程序被杀死时它不会被调用。我引用的文档是该方法的文档
    • 当您选择 Xcode 项目时,您已启用“推送通知”选项,并选择了位于“功能”选项卡中的“后台获取”和“远程通知”复选框?
    • 是的,我做到了。 “正常”背景静默通知工作正常。我只是在问是否有办法在下一个应用程序启动时获取有效负载,以防用户杀死应用程序
    猜你喜欢
    • 2015-12-30
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多