IOS 8ベータ2では、リリースノートに記載されているようにアプリ拡張機能からopenUrlを使用できるはずです。
ただし、このAPI(Xcode 6ベータ2)を使用しようとすると、次のエラーが発生します。
ベータ2は本当にこの問題を修正したかどうか?
このコードを使用できます:
[self.extensionContext openURL:url completionHandler:^(BOOL success) {
NSLog(@"fun=%s after completion. success=%d", __func__, success);
}];
aPIドキュメント: openURL:completionHandler:
この質問を参照することもできます: openURLはAction Extensionでは機能しません
受け入れられたソリューションは_Today extensions
_でのみ機能し、他の拡張タイプのSwift 3.1(iOS10でテスト済み)で機能するソリューション:
独自のURLスキームを作成してから、この関数をViewControllerに追加し、openURL("myScheme://myIdentifier")
で呼び出す必要があります。
_// Function must be named exactly like this so a selector can be found by the compiler!
// Anyway - it's another selector in another instance that would be "performed" instead.
func openURL(_ url: URL) -> Bool {
var responder: UIResponder? = self
while responder != nil {
if let application = responder as? UIApplication {
return application.perform(#selector(openURL(_:)), with: url) != nil
}
responder = responder?.next
}
return false
}
_