8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Twitterアプリからのアプリtoアプリのリダイレクトでハマったときの備忘録

Last updated at Posted at 2015-08-14

#概要

AndroidでTwitterアプリからリダイレクトさせて自アプリにディープリンクさせたいなと思ったのですが思うようにいかなかった時の備忘録です。

一昔まえのTwitterアプリではリンクを張るとブラウザが立ち上がってくれていたのでJS側でハンドリングして自アプリへのスキーム起動が容易でした。
※今でも一部OSではそうなる..(例 Twitter version 5.71.0: 端末SH-01E: OS:4.1.2)

がしかし、今のTwitterアプリは「アプリ内ブラウザを使用する」にデフォでなっているため、そう簡単に上手くいきませんでした。

Twitterカード使えば上手くディープリンクできるんじゃねえのって思って使ってみましたが、Twitterアプリからから下記のようにmetaを埋め込んだhtmlを吐き出してもカードが表示されないという...
※ブラウザから吐き出した場合はちゃんと表示されます。

hoge.html
<meta name="twitter:card" content="app">
...以下省略

Twitterカードについて

#いろいろ他アプリを見てみたところ
そこで、他のアプリはどうしてるんだろうと疑問が湧いた訳です。

まずはアプリの設定をリセットをして初期状態にして確認しました。
Screenshot_2015-08-14-17-22-35.png

Instagram

Twitter WebViewでページを開きました。ちゃんとwebページが用意されているので特に不自由ないです。
Screenshot_2015-08-14-17-27-04.png

Youtube

Youtubeもちゃんとwebページ用意してるわー。しかもここでちゃんと再生とかできる。。さすがっす。。
Screenshot_2015-08-14-17-31-25.png

ちなみにTwitterアプリの右上のToolBarのmenuをタップすると「ブラウザで開く」ってのがあります。それを選択するとYoutubeに直接ディープリングができるんです。
うん、まあそうだよね。

Screenshot_2015-08-14-17-31-36.png

そう。。私はwebページなんて用意する時間なかったので直接アプリにリダイレクトかましたかったわけですよ。。Twitterアプリ様のWebView使わせて頂いていてなんかすいません的なかんじですが、、

#そこでやったこと
みんな、ちゃんとwebページを用意してるんですが私にはそんな時間も余裕もないのでシンプルに考えてみました。
※ここではGooglePlayに飛ばす例にしています。

###1回目のTry!

hoge.html
...一部省略

<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>

Screenshot_2015-08-14-17-50-08.png

からの

Screenshot_2015-08-14-17-51-03.png

oh..まじかよ、、さすがにこれはまずい、、Twitterさんを停止させてしもうた。。

まだまだー
###2回目のTry!
ちゃんとディープリンクするように指定してみました

hoge.html
...一部省略

<script type="text/javascript">
    function kakunin(){
  		ret = confirm("GooglePlayを起動します!");
  		if (ret == true){
  			//google play
          location.href= "market://details?id=com.twitter.android";
  		}
	}
</script>

...一部省略

Screenshot_2015-08-14-17-57-30.png

w( ▼o▼ )w オオォォ!!
ちゃんとできましたw

#個人的な結論
TwitterWebViewからディープリンクするときは一旦jsからclickイベントを拾ってintentを発行したらディープリンクできました。。schemeだけを指定してアプリを立ち上げようとするとTwitterアプリが強制終了するようです。なんで??
最終的にはwebページは必要だと思います。今かいたのもTwitterが変わればうまく動かなくなる可能性もあるでしょう。。

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?