#概要
AndroidでTwitterアプリからリダイレクトさせて自アプリにディープリンクさせたいなと思ったのですが思うようにいかなかった時の備忘録です。
一昔まえのTwitterアプリではリンクを張るとブラウザが立ち上がってくれていたのでJS側でハンドリングして自アプリへのスキーム起動が容易でした。
※今でも一部OSではそうなる..(例 Twitter version 5.71.0: 端末SH-01E: OS:4.1.2)
がしかし、今のTwitterアプリは「アプリ内ブラウザを使用する」にデフォでなっているため、そう簡単に上手くいきませんでした。
Twitterカード使えば上手くディープリンクできるんじゃねえのって思って使ってみましたが、Twitterアプリからから下記のようにmetaを埋め込んだhtmlを吐き出してもカードが表示されないという...
※ブラウザから吐き出した場合はちゃんと表示されます。
<meta name="twitter:card" content="app">
...以下省略
#いろいろ他アプリを見てみたところ
そこで、他のアプリはどうしてるんだろうと疑問が湧いた訳です。
まずはアプリの設定をリセットをして初期状態にして確認しました。
Twitter WebViewでページを開きました。ちゃんとwebページが用意されているので特に不自由ないです。
Youtube
Youtubeもちゃんとwebページ用意してるわー。しかもここでちゃんと再生とかできる。。さすがっす。。
ちなみにTwitterアプリの右上のToolBarのmenuをタップすると「ブラウザで開く」ってのがあります。それを選択するとYoutubeに直接ディープリングができるんです。
うん、まあそうだよね。
そう。。私はwebページなんて用意する時間なかったので直接アプリにリダイレクトかましたかったわけですよ。。Twitterアプリ様のWebView使わせて頂いていてなんかすいません的なかんじですが、、
#そこでやったこと
みんな、ちゃんとwebページを用意してるんですが私にはそんな時間も余裕もないのでシンプルに考えてみました。
※ここではGooglePlayに飛ばす例にしています。
###1回目のTry!
...一部省略
<script type="text/javascript">
function kakunin(){
ret = confirm("GooglePlayを起動します!");
if (ret == true){
//google play
location.href= "market://";
}
}
</script>
...一部省略
<form name="test">
<input type="button" name="test" value="アプリ起動Intent発行" onClick="kakunin()">
</form>
からの
oh..まじかよ、、さすがにこれはまずい、、Twitterさんを停止させてしもうた。。
まだまだー
###2回目のTry!
ちゃんとディープリンクするように指定してみました
...一部省略
<script type="text/javascript">
function kakunin(){
ret = confirm("GooglePlayを起動します!");
if (ret == true){
//google play
location.href= "market://details?id=com.twitter.android";
}
}
</script>
...一部省略
w( ▼o▼ )w オオォォ!!
ちゃんとできましたw
#個人的な結論
TwitterWebViewからディープリンクするときは一旦jsからclickイベントを拾ってintentを発行したらディープリンクできました。。schemeだけを指定してアプリを立ち上げようとするとTwitterアプリが強制終了するようです。なんで??
最終的にはwebページは必要だと思います。今かいたのもTwitterが変わればうまく動かなくなる可能性もあるでしょう。。