Открытое полностью завершенное приложение из схемы 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)
}
})
}
}