0

现在我有一个接收静默通知的框架,从中获取数据(自定义数据)并将其转换为本地通知以向用户显示警报(这是 didReceiveRemoteNotification:fetchCompletionHandler 方法中的 donde)。我已经在一个应用程序上实现了这个框架,一切似乎都正常工作,当应用程序处于后台和前台时,正在处理静默通知。但是,当应用程序被用户杀死或未运行时,我无法收到通知,因为:

使用此方法为您的应用处理传入的远程通知。与 application:didReceiveRemoteNotification: 方法不同,该方法仅在您的应用程序在前台运行时调用,系统在您的应用程序在前台或后台运行时调用此方法。此外,如果您启用了远程通知后台模式,系统会启动您的应用程序(或将其从挂起状态唤醒)并在远程通知到达时将其置于后台状态。但是,如果用户强制退出,系统不会自动启动您的应用程序。在这种情况下,用户必须重新启动您的应用程序或重新启动设备,然后系统才会再次尝试自动启动您的应用程序。

我使用此方法显示通知的原因是因为我发送到 APNS 的有效负载具有自定义数据,其中包含指示通知必须如何表现的键值。

我一直在做一些研究,我发现用于 VoIP 的 Pushkit 可以完成这项工作。但是,许多帖子表明这可能会导致应用被拒绝。

所以我的问题是,即使我的应用程序被杀死并且考虑到有效负载中的数据具有构建通知的自定义信息,我如何才能实现接收远程通知?

4

1 回答 1

1

静默推送通知是不可靠的:它们可能会延迟、成组发送甚至根本不发送。

如果您需要在向用户显示横幅之前修改通知的内容,您应该使用Notification Service App Extension。您还可以在您的应用程序和此扩展程序之间共享一些信息 - 使用应用程序组或钥匙串 - 如果它需要您的应用程序中的某些内容来处理通知数据。

于 2019-11-20T00:53:01.240 回答