Открытое полностью завершенное приложение из схемы URL не вызывало функцию из postNotificationName в iOS

Здесь я установил код для схемы URL:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    if let userUrl = String(url) as String? {
        print("\(userUrl)")
        if (userUrl == "count://fromClipBoard") {
            NSNotificationCenter.defaultCenter().postNotificationName("com.getContentFromClipBoard", object: self)
        }
    }
    return false
}

И добавьте следующий код в мой ViewController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "setContentFromClipBoard", name: "com.getContentFromClipBoard", object: nil)

    //............
}

func setContentFromClipBoard() {
    tv.text = "WAHAHA"

    if let clipBoard = UIPasteboard.generalPasteboard().string {
        tv.text = clipBoard
    }
}

И когда мое приложение не полностью закрыто, com.getContentFromClipBoard хорошо называется и tv.text становиться clipBoard,

Однако, когда я полностью закрываю приложение и затем использую эту схему URL, com.getContentFromClipBoard не вызывать и tv.text оставайтесь пустыми.

Так как я могу это исправить? Спасибо!

1 ответ

Решение

Исправлено проверкой UIApplicationLaunchOptionsURLKey тоже внутри didFinishLaunchingWithOptions,

(Задержка ожидает загрузки представления)

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    if let userUrl = launchOptions?[UIApplicationLaunchOptionsURLKey] as? NSURL {
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), {
            if (userUrl.absoluteString == "count://fromClipBoard") {
                NSNotificationCenter.defaultCenter().postNotificationName("com.getContentFromClipBoard", object: self)
            }
        })
    }
}
Другие вопросы по тегам