しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

openURLがDeprecatedだったので、新方式に置き換える

iOS10からopenURLが非推奨になったので、新しいメソッドに置き換えました。

  • 旧記法
UIApplication.shared.openURL(URL(string: "https://google.co.jp")!)
  • 新記法
UIApplication.shared.open(URL(string: "https://google.co.jp")!, options: [:], completionHandler: nil)

completionHandlerは遷移完了or遷移失敗したタイミングで呼ばれます。
引数は遷移が成功したかどうかの結果がBoolで渡されます。

UIApplication.shared.open(URL(string: "https://google.co.jp")!, options: [:], completionHandler: { result in
    print(result) // → true
})

下のように遷移失敗するとresultにfalseが入ります。

UIApplication.shared.open(URL(string: "hoge://")!, options: [:], completionHandler: { result in
    print(result) // → false
})

optionsは現在UIApplicationOpenURLOptionUniversalLinksOnlyのみサポートされています。
trueを渡すと、UniversalLink以外開けなくなります。
デフォルト値はfalseです。

UIApplication.shared.open(URL(string: "https://google.co.jp")!, options: [ UIApplicationOpenURLOptionUniversalLinksOnly: NSNumber(value: true)], completionHandler: nil)

UIApplicationOpenURLOptionUniversalLinksOnlyにはBool値を直接渡す事もできました。

UIApplication.shared.open(URL(string: "https://google.co.jp")!, options: [ UIApplicationOpenURLOptionUniversalLinksOnly: true], completionHandler: nil)

オプション一覧は下URLに記載されています。

https://developer.apple.com/documentation/uikit/uiapplication/url_options?language=objc