2017-01-03 9 views
1

拡張機能内からメインアプリを開く機能が必要なSafari共有拡張機能があります。ユーザーには、アプリを開くオプションがあるアラートが表示されます。iOS Safari Share Extensionからメインアプリを開く

func openAppHandler() { 
    self.extensionContext?.completeRequest(returningItems: []) { (success) in 
     if let url = URL(string: "myapp://...") { 
      self.extensionContext?.open(url, completionHandler: nil) 
     } 
    } 
} 

アラートは方法didSelectPost()後に表示されると呼ばれ、あなたが見ることができるように、拡張のためのバックグラウンド優先完了ブロックで発生しています。 openの方法は、「iOS 8では、ウィジェットを作成するために使用されるToday拡張ポイントのみがこの方法をサポートしています」と書かれています。私はまだSafari Share Extensionでサポートされていないと思う。

共有拡張機能からメインアプリを開く方法を知っている人はいますか?

+0

私の知る限り、まだ共有拡張からこれを行う方法はありません。あなたができることは、「{yourapp}に保存」を作成してアプリにファイルをアップロードさせ、ドラフトとしてすぐに利用できるようにすることです。ユーザーは手動でアプリを開く必要があります。 – brandonscript

+0

私はそれが私が得る答えになるのではないかと恐れていました。これを行うにはいくつかの方法があると思っていますが、希望がない場合は、それ以降のバージョンのiOSに追加されます。 – timgcarlson

+1

レーダーはありますか?おそらく何かを起こす唯一の方法です。 – brandonscript

答えて

5

解決策が見つかりましたhereです。私はこれがAppleと技術的に大丈夫かどうかは分かりませんが、必要なときと同じように動作します。

@objc func openURL(_ url: URL) { 
    return 
} 

func openContainerApp() { 
    var responder: UIResponder? = self as UIResponder 
    let selector = #selector(MyViewController.openURL(_:)) 

    while responder != nil { 
     if responder!.responds(to: selector) && responder != self { 
      responder!.perform(selector, with: URL(string: "myapp://url")!) 
      return 
     } 
     responder = responder?.next 
    } 
} 
+0

申し訳ありませんが、これは私のために迅速にカスタム共有UIで動作していません3 –

+0

@ KauthamMurugan Swift 3で私のために働いています。 – timgcarlson

+0

はい私は自分のアプリのURLを使用しています。しかし、私のアプリでは、ユーザー入力要素とプログレスバーでカスタム共有UIを表示する必要があります。私は 'SLComposeServiceViewController'を' UIViewController'に置き換え、カスタム設計の共有コントローラを用意しました。私はこれが問題であるはずだと思うが、私はそれが分からない。 –

関連する問題