Swiftのapplication openURLでハマるの巻

  • 14
    Like
  • 0
    Comment
More than 1 year has passed since last update.

問題

へい、Xcodeで補完したコードだぜ。

func application(application: UIApplication!, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {
    return true
}

これが書かれたアプリをToday Extensionから呼び出すと

@IBAction func openButton(sender: AnyObject) {
    let strUrl = "test://"
    let url = NSURL(string: strUrl)
    self.extensionContext?.openURL(url, completionHandler: nil)
}

「EXC_BAD_ACCESS」

解決

sourceApplicationにnilが来ているのが原因ぽいと想像

func application(application: UIApplication!, openURL url: NSURL, sourceApplication: String!, annotation: AnyObject?) -> Bool {
    println(sourceApplication)  // nil
    return true
}

動いた。