デジタルチャイルド日記

コンピュータ関連のいろいろメモを残していく子供部屋です。

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でコントロールするという方法があるので、それを採用するのがいいのかな。

悩みどころ・・・