やりたいこと
概要
公式Twitterクライアント内でツイートの右下にあるシェアボタンをタップすると開くExtensionメニューを経由して自作アプリに対象ツイートのURLを渡したい
既存の機能として、ExtensionメニューのChromeのアイコンをタップするとChromeが立ち上がり該当ツイートのURLが新タブで開かれます。
ためしたこと
まず、AppExtensionの機能としてShareExtensionとActionExtensionが使用できそうだと分かり、両方とも実装してみました。
ShareExtensionについては、Twitterクライアント上でモーダル表示されるものであり求めている機能ではありませんでした。
ActionExtentionはViewが存在するタイプとNo user interfaceの2種類があり、これらも両方実装してみました。
通常アプリ内からSharedApplicationのAPIを経由してcustomURLSchemeで別アプリを開けますが、Extensionからは使用できない仕様との事でした。
また、No user interfaceのAction Extension ではJavaScriptをWebViewに埋め込み、これのlocation.hrefをいじる事で別アプリに飛ばす、と言ったテクニックがあるようで実装してみましたが、Safariでは動作するもののTwitter公式クライアントからでは動きませんでした。
customURLSchemeは正常に定義できており、上記の例に加え、直接safariのURLに入力する事でアプリを開けることを確認しています。
代替案として、ViewController付きのextensionにViewを表示させようかと考えましたが、Alamofireがimport出来ずに、一度UserDefaultsに収めておき、その後アプリが開かれたタイミングで通信処理を行うと言った不細工な方法になってしまうため、極力避けたいと思っています。
そのほかの案としては、Twitterからsafariを開かせ、そこから自作アプリのextensionを選択させると言った、これもまた不細工なUXとなりますため避けたく思っています。
知りたい事
Twitter(safari以外のアプリ)からextensionを選択することで自作アプリを開かせる方法をご教授頂きたく思います。
あなたの回答
tips
プレビュー