2016-07-05

スマホブラウザで "アプリを開く" 的なボタンを用意する時に困ったことと対策

スマホのブラウザでアプリがインストールされている時はアプリが開き、インストールされていない時はストアが開く、みたいな実装をする事になっていろいろ調べたら困ったのでメモ。

アプリで開くリンク1つだけ用意する場合

もちろん Android と iOS で違う。
iOS はバージョンでも違う。
iOS 8 以下だと iframe 使ってカスタムURLスキームが生きているか判別できる。iOS 9 だと Apple に対策されちゃって出来ない。

Android ( http://nukokusa.hatenablog.jp/entry/2015/08/26/200000 ) と
iOS 8 以下ならこの記事の内容で出し分け出来る。http://qiita.com/ooyabuh/items/388ffb0427b2772a9c66

iOS 9 以降の対策

アプリで開く、という意味でのリンクは出し分ける方法が正式に無さそう。
いろいろあるけど、無理やり感がある。
http://qiita.com/makoto_kw/items/5a99e37f7172337ae4be

そこでUniversal Links

webと同じURLで、登録されていればそもそもwebを開かずアプリを開く。
http://qiita.com/mono0926/items/2bf651246714f20df626

Androidにもwebと同じURLでアプリを開く仕組みがあるけど、ブラウザで開くのか、アプリで開くのかをユーザーに選択させるのでちょっとイケてない。
http://qiita.com/nein37/items/3b69f85b97d0883eb1ca


結論

Android : 
アプリで開くボタンを用意して、インストールされていればアプリ、されていなければストアが開く。

iOS (8以下) : 
iframe でカスタムURLが生きてるかチェックして、ストアのURLを差し込んだりする。

iOS (9以上) :
Universal Links を使って、アプリが入っていればそのままアプリを開く、入っていなかったらストアへのリンクを用意した Web ページを表示する。


Universal Links だと、Twitter の告知からアプリ開いた時とか計測できないんじゃないの?とか思ったけど、その辺りはどうなんだろう。。


その他調べてて知ったやったいたほうが良いアレコレ

iOS9 の Search API に対応したら良さそう。

iOSカスタムURLスキームの注意点。(iOS9から開かなくなるらしいから要確認)

growth link がなんか計測もディープリンク対応もあっていい感じ。

他にも何か気をつけることとかあったら教えて下さい^v^

0 件のコメント: