我想从一个本地通知在iOS的行动10.启动应用程序10
我按照Launch a local notification at a specific time in iOS来实现应用程序启动(从非激活状态)和应用程序响应启动罚款本地通知。但是我想从这里得到的是针对通知中的数据执行操作。
在iOS中8,9我有设置在AppDelegate中
func application(_ application: UIApplication, didReceive notification: UILocalNotification) {
if (application.applicationState == UIApplicationState.inactive || application.applicationState == UIApplicationState.background) {
NotificationCenter.default.post(name: Notification.Name(rawValue: "noteName", object: notification.alertBody)
和观察者捕捉它的ViewController
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.txtFromNotifier), name: NSNotification.Name(rawValue: "noteName", object: nil)
和iOS的10现在的AppDelegate:
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) {
// Determine the user action
switch response.actionIdentifier {
case UNNotificationDismissActionIdentifier:
print("Dismiss Action")
case UNNotificationDefaultActionIdentifier:
print("Default")
// do something here
我一直无法找到如何从UNNotification默认操作获得(“默认”打印在t他在启动后控制台)传递参数并在ViewController中执行txtFromNotifier函数。试图在应用程序处于后台时使用NotificationCenter post/addObserver组合,但在应用程序处于非活动状态时并未到达那里。
任何想法?
我明白了,但即使是我自己的问题,我也无法回答。 – Mick
我有类似的问题。在接收视图控制器中调用addObserver之前,您的解决方案是否与通知获得广播有关? –
@IanLeatherbury是的。 IIRC在ViewController中加载观察者之前,用户通知发生在AppDelegate中。我发现了一些想法,但是我很久没有忘记它在哪里。基本上,我在延迟中将通知帖子封装在AppDelegate中。 – Mick