这是我的didReceiveRemoteNotification
方法,用于在我的iOS应用程序接收时处理推送通知:
func showNotificationDetails(userInfo: [NSObject : AnyObject], application:UIApplication) {
print("showNotificationDetails")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let notificationController = storyboard.instantiateViewControllerWithIdentifier("DynamicEventsViewController") as! DynamicEventsViewController
notificationController.isLoadedFromNotification = true
notificationController.eventTitle = userInfo["aps"]!["alert"] as! String
notificationController.eventDescription = userInfo["aps"]!["message"] as! String
notificationController.isLoadedFromNotification = true
if let tabBarController = self.window?.rootViewController {
tabBarController.presentViewController(notificationController, animated: true, completion: nil)
}
application.applicationIconBadgeNumber -= 1
//application.cancelAllLocalNotifications()
}
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
let state:UIApplicationState = application.applicationState
if (state == UIApplicationState.Inactive || state == UIApplicationState.Background) {
self.showNotificationDetails(userInfo, application: application)
}
}
问题是,如果应用程序正在运行并且通知到达,则它不会被存储并被删除,以便用户以后无法看到它。在用户阅读之前,我该如何以正确的方式保持通知?
答案 0 :(得分:0)
首先,不要像Divyesh建议的那样将它存储在NSUserDefaults中。根据名称和文档的快速阅读,这显然不是该类的用途。
其次,你的老板错了,你需要能够向他解释。关于推送通知的文档非常清楚地说明了每个州的情况。如果应用程序位于前台,并且有通知,并且您的标记表示用户想要警报,那么您应该显示警报。
最后,如果你真的想存储它们,那么你需要使用Core Data或plist或类似的东西。请记住,虽然通知不应该包含真实数据,但它们只会为您提供某种类型的标记,然后您可以根据该标记执行操作。