GoogleMapアプリの起動
WebサイトからGoogleMapアプリを起動する場合、どのような方法があるのか調べたのでメモっておきます。
ディープリンク
Webサイトからアプリを起動する場合、特定のURLをサイトに埋め込み、そのURLをアプリでクリック(あるいは表示)することで、アプリを起動させます。
このURLをディープリンクといいます。
Webサイトのトップ以外のURLもディープリンクというので、少々混乱しました。
ディープリンクにはfacebookとかLINEとかも独自に実装しているようですが、このページでは説明しません。あくまでGoogleMap起動ということで。
Android
Androidの場合、ディープリンクの実装としては以下の方法が考えられます。
- Intent方式
intent://で始まるURLを埋め込む方法。起動アプリが画面下部に表示されるので、どのアプリを起動するかを選択可能。直接指定も可能。
例)intent://0,0?q=東京スカイツリー#Intent;scheme=geo;package=com.google.android.apps.maps;end - http形式
httpのURLを使う方法。Intent方式と同様に画面下部に起動する対象のアプリが表示され、起動アプリを選択することが可能。Intent方式との違いは、Webサイト側から見ればそんなにありません。
※サーバ側やアプリ公開側から見れば、違うらしいですが、今回はGoogleMapなので特になにも行いません。
例)http://maps.google.com/maps?q=東京スカイツリー
iOS
iOSの場合、結構違うみたいです。
- Custom Url Scheme方式(iOS6以降?)
URLスキーム(XXXX://のXXXX部分)を独自のものに変更してアクセスする方法。
GoogleMapの場合、comgooglemaps://かcomgooglemaps-x-callback://を使います。両者の違いについては、以下のサイト参照
ちなみに、この方式はアプリがインストールされていない場合、エラーとなる為、Storeに遷移させる場合はJSなどで細工が必要です。
Google マップ URL スキーム | Google Maps SDK for iOS | Google Developers
例)comgooglemaps://?q=東京スカイツリー2&zoom=15 - Universal Links方式(iOS9以降)
http、httpsから始まるURLを埋め込む方法。スキームではなく、URLそのものからどのアプリを起動するかを判別するやり方。
GoogleMapの場合:http://maps.google.com/maps
iOS標準地図の場合:http://maps.apple.com/maps
なお、アプリがインストールされていない場合、Storeには遷移せずに、そのままWebで表示が行われるようです。
iOS8以前では、どうなるかというとURLリンクとしてサイトに遷移するようです。※アプリは起動しない
例)http://maps.google.com/maps?q=東京タワー
実は今回の目的は、GoogleMapを開きたい。かつ入っていなければStoreに遷移させたいということだったので、Androiは問題ないのですが、iOSは困りものです。
CustomeUrlScheme方式を採用して、JSでコントロールするという方法があるので、それを採用するのがいいのかな。
悩みどころ・・・