Swift:应用程序运行时的商店推送通知如何?

时间:2016-03-30 10:44:08

标签: ios swift push-notification apple-push-notifications

这是我的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)
    }
}

问题是,如果应用程序正在运行并且通知到达,则它不会被存储并被删除,以便用户以后无法看到它。在用户阅读之前,我该如何以正确的方式保持通知?

1 个答案:

答案 0 :(得分:0)

首先,不要像Divyesh建议的那样将它存储在NSUserDefaults中。根据名称和文档的快速阅读,这显然不是该类的用途。

其次,你的老板错了,你需要能够向他解释。关于推送通知的文档非常清楚地说明了每个州的情况。如果应用程序位于前台,并且有通知,并且您的标记表示用户想要警报,那么您应该显示警报。

最后,如果你真的想存储它们,那么你需要使用Core Data或plist或类似的东西。请记住,虽然通知不应该包含真实数据,但它们只会为您提供某种类型的标记,然后您可以根据该标记执行操作。