2017-08-11 25 views
1

我有4个场景iOS版 - 阅读,一旦收到推送通知

当应用程序没有启动

给出的应用程序不启动或杀死
当推送通知接收
并开通该应用程序不需要点击通知
然后应用程序应该捕获通知。

当应用程序在前台

鉴于前景
运行时,推送通知接收
然后应用程序应该捕获通知的应用程序运行。

当应用程序在后台

由于应用程序在后台
运行时,推送通知接收
,打开应用程序,而不攻通知
然后应用程序应该捕获通知运行。

当应用程序未启动,清除通知

给出的应用程序没有启动或杀死
当推送通知接收
而用户清除通知
,打开应用程序
然后应用程序应该捕获通知。

第3方案正常工作与下面的代码

的最后一个场景是没有工作当应用程序未启动,清除通知

的AppDelegate

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    if #available(iOS 10.0, *) { 
     UNUserNotificationCenter.current().getDeliveredNotifications(completionHandler: { requests in 
      for request in requests { 
       self.setNotification(userInfo: request.request.content.userInfo as NSDictionary) 
      } 
     }) 
    } 
    return true 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) { 
    setNotification(userInfo: userInfo as NSDictionary) 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    setNotification(userInfo: userInfo as NSDictionary) 
} 
+1

**你不能** 想象一下,你有5个通知在屏幕上。你解雇所有5人,然后你启动应用程序。 应用程序应该如何知道应该考虑哪个通知? – Honey

+0

谢谢@Paras Gorasiya – Vignesh

+0

@Honey这是我的问题?有什么方法可以在没有restAPI的情况下获得这些通知。 – Vignesh

回答

1

根据您的查询

当应用程序未启动,清除通知

由于应用程序没有启动或杀害,当后通知 接收和用户清除了通知,打开应用程序,然后在 应用程序应该捕获通知。

,这是不可能的普通推送通知,除非用户与通知交互。您可能想尝试无声通知,这些未在用户界面中显示,但控件到达应用程序,您可以使用代码中的数据/有效内容。

当用户从栏中清除通知时,无法获取该信息。 您也可以尝试添加API中推送中发送的相同信息,并在用户打开该应用程序后调用该信息。

This link涉及所有涉及的细节。根据你的实现,你可以尝试两者的结合。

+1

谢谢@Umar。我正在使用无声通知。唯一关心的是通知被清除。如果没有办法必须从API获取。 – Vignesh

+0

@Vignesh如果您使用API​​以及获取数据,会发生什么是无论用户何时清除通知,只要应用程序打开,用户就能够通过API调用来查看最新数据......接受答案是否有帮助 –