アプリ開発日誌
2016.08.25
URLスキームとは。実装時の注意点も含めご紹介します
こんにちは、エンジニアの松川です。
アプリ制作でたまに要望のあるURLスキーム。
今回はそのURLスキームについてまとめてみようと思います。
そもそもURLスキームって何?
一般的に知られるURLと同様に、アドレスの事。
ちなみにスキームというのは、URLの先頭についている箇所を指します。
代表的なものが、「http」「ftp」「mailto」「file」とか。
呼び出す時は下記みたいな感じ
- http://
- ftp://
- mailto://
URLスキームを使って何ができるか?
URLスキームを使うと、現在表示しているアプリケーションから別のアプリケーションにタスクを切り替える事ができます。
その際に値を渡す事ができるので、切り替え先のアプリケーション側で受け取った値を元に様々な挙動を実装する事が可能です。
よく見るのが食べログとかでお店を調べてる時に地図を確認すると、「GoogleMapアプリで開きますか?」って出てくるあれですね。
※スキームの後ろにつける引数は、投げる側と受け取り側で取り決めをしておく必要があります。mailtoであればbodyというキーにはメールの本文が入る、など
例:mailto://[email protected]?body=お問い合わせ内容を入力してください
URLスキーム実装時の注意
今回はiOSでの実装を想定します。
URLスキームを使用するにはあらかじめアプリ側でスキームを設定しておく必要があります。
大抵はバンドルIDをスキームにするのが無難ですかね。
というのもスキームはユニークな文字列では無いので、他のアプリで使用しているスキームとぶつかる可能性があります。
例えば端末内に同じスキームのアプリが2つ以上あった場合、意図していないアプリが起動されてしまったりするんですよね。
また1つのアプリに複数のスキームを指定する事もできます。
近頃スキームを複数指定できる仕組みを利用した悪質なアプリも出回ったりしているので、そういったものに巻き込まれないためにも並べく短い単語などをスキームにするのは避けたほうが賢明です。
最後に
URLスキームを使用する際にWebViewとアプリの連携が必須な場合は良いですが、気をつけてほしいのがアプリ内WebViewのリンクから自身のスキームを呼んで何かイベントを起こす場合です。
アプリ内WebViewのリンクを元にイベントを起こしたい時はフックと呼ばれる方法で解決できます。
※特定のリンク先に遷移させずにアプリでイベントを起こす事
たまに何でもかんでもURLスキームで画面遷移させれば良いじゃん、とかURLスキームを指定すればどの画面でも遷移できると思っている人がいます。
※アプリ側でURLスキームを受け取って遷移するには、あらかじめ処理を実装しておく必要がある事を認識していなかったり
またURLスキームと似たような意味合いとして使われる「ディープリンク」という言葉もあり一概にURLスキームといっても広義です。
使用する際はお互いの認識があっているのか、またURLスキームである必要があるのかを確認して適切に使用しましょう!