静默通知未进入应用程序未运行状态?

Posted

技术标签:

【中文标题】静默通知未进入应用程序未运行状态?【英文标题】:Silent Notification not getting in Application Not Running State? 【发布时间】:2018-07-25 05:08:38 【问题描述】:

这是通知负载:

 
 "aps": 
   "content-available": "1"
  , "data": 
     "ct_typ": "1",
     "imp": "0",
     "msg_id": "1532071410494",
     "msg_typ": "0",
     "user_id": "11136cb83e"
 

我使用以下方法并在后台模式下获得通知,但此方法在 Not Running(Kill Mode) 下不起作用。

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) 

我正在使用 XMPP,我需要在未运行(终止模式)上回复传递的消息。

【问题讨论】:

你为什么使用静默通知?您应该使用普通通知并创建通知内容扩展。从那里您可以重播有关消息传递的发件人。 【参考方案1】:

如果应用程序被用户强行终止,则静默通知将不起作用。为此,您应该使用正常通知。这样,即使您的应用被终止,也会显示新消息的通知。

通过创建通知服务扩展,即使您的应用被终止,您也可以控制。

Notification service extension 在这里查看更多信息。

【讨论】:

我已实现通知服务扩展并收到通知,但服务扩展方法不要求下载内容。所以你能帮我解决我想念的事情吗? 如果你想在通知上下载一些东西。您可以这样做,甚至可以为扩展安装 pod。但是要在您的应用程序和扩展程序之间传递数据,您需要使用组用户默认值。【参考方案2】:

ios 10 及更高版本开始,您已将 UIUserNotification 委托方法用于最新的操作系统。在活动中接收通知的委托方法如下。我认为您使用旧代码进行通知。

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent
    notification: UNNotification, withCompletionHandler completionHandler:
    @escaping (UNNotificationPresentationOptions) -> Void) 

    return completionHandler(UNNotificationPresentationOptions.alert)

How to implement Remote notification for iOS 10 and later.

【讨论】:

以上是关于静默通知未进入应用程序未运行状态?的主要内容,如果未能解决你的问题,请参考以下文章

当我收到静默推送通知时,iOS 会唤醒我的应用程序吗?(当应用程序未处于运行状态时)

静默推送通知未进入 iOS

我需要使用 FCM 实现静默通知

未收到 Flutter FCM IOS 静默(仅数据)通知

APNS:如果应用程序未运行,是不是接收非静默通知?

已安排本地通知,但未在挂起和未运行模式下传递