Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:应用程序运行时如何发送商店推送通知?_Ios_Swift_Push Notification_Apple Push Notifications - Fatal编程技术网

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

Ios Swift:应用程序运行时如何发送商店推送通知?,ios,swift,push-notification,apple-push-notifications,Ios,Swift,Push Notification,Apple Push Notifications,这是我在iOS应用程序中接收推送通知时处理推送通知的didReceiveMemoteNotification方法: func showNotificationDetails(userInfo: [NSObject : AnyObject], application:UIApplication) { print("showNotificationDetails") let storyboard = UIStoryboard(name: "Main", bundle: nil)

这是我在iOS应用程序中接收推送通知时处理推送通知的
didReceiveMemoteNotification
方法:

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)
    }
}

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

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

其次,你的老板错了,你需要能够向他解释这一点。关于推送通知的文档非常清楚地说明了每个状态下发生的情况。如果应用程序位于前台,收到通知,并且您的标志表明用户需要警报,那么您应该显示警报


最后,如果您真的想存储它们,那么您需要使用核心数据或plist之类的东西。请记住,虽然通知不应该保存真实数据,但它们只会给您一些类型的标志,然后您可以根据这些标志采取行动

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

其次,你的老板错了,你需要能够向他解释这一点。关于推送通知的文档非常清楚地说明了每个状态下发生的情况。如果应用程序位于前台,收到通知,并且您的标志表明用户需要警报,那么您应该显示警报


最后,如果您真的想存储它们,那么您需要使用核心数据或plist之类的东西。请记住,虽然通知不应该保存真实数据,但它们只会给您一些类型的标志,然后您可以根据这些标志采取行动

当应用程序启动时,你可以用通知消息显示警报。这正是我所做的,但我的老板不希望我这样做,因为他说这是不正确的!只需存储通知数据,就可以使用本地通知。当应用程序进入后台时,请检查是否有可用的存储通知,然后显示本地通知。请编写一些代码示例?我应该在哪里存储,如何存储?您可以将其存储在NSUserdefaultyou可以在应用程序启动时显示带有通知消息的警报这正是我所做的,但我的老板不希望我这样做,因为他说这不正确!只需存储通知数据,就可以使用本地通知。当应用程序进入后台时,请检查是否有可用的存储通知,然后显示本地通知。请编写一些代码示例?我应该把它放在哪里,怎么放?你可以把它放在你的房间里。你完全正确,但是我恐怕不能对他做任何其他的事情。我发现的解决方案是,当应用程序处于活动状态时收到的通知存储在全局数组中。然后,一旦应用程序进入后台状态(从任何视图控制器),这些通知将被安排为本地通知,以便用户可以看到横幅警报。无论如何,有些应用程序,如Whatsapp或iMessage,即使在新消息到达时应用程序正在运行,也会显示横幅警报。他们怎么能做到呢?他们使用第三方框架吗?你完全正确,但恐怕我不能对他做任何其他事情。我发现的解决方案是,当应用程序处于活动状态时收到的通知存储在全局数组中。然后,一旦应用程序进入后台状态(从任何视图控制器),这些通知将被安排为本地通知,以便用户可以看到横幅警报。无论如何,有些应用程序,如Whatsapp或iMessage,即使在新消息到达时应用程序正在运行,也会显示横幅警报。他们怎么能做到呢?他们是否使用第三方框架?