[iOS 8] Apple 公式の URL Scheme
URL Scheme
URL Scheme とは
インターネット上の資源の所在を表すURI(URL)の先頭部分で、資源に到達するための手段を表したもの。
e-Words より
iOS では、URL Scheme を利用することで他のアプリを起動することができます。
今回は Apple が公式に発表している URL Scheme で、どんなアプリを起動することができるかを紹介します。
利用方法
URL Scheme でアプリを起動するためには、以下のように UIApplication クラスの openURL() メソッドを使います。
if let url = NSURL(string: ":") { UIApplication.sharedApplication().openURL(url) }
URL Scheme の後には「:(コロン)」を付けます。 このプログラムが実行されると、実行していたアプリから URL で指定したアプリに処理が移ります。 URL が無効だった場合は何も起きません。
公開されている URL Scheme
リファレンスで公開されている URL Scheme は次の 7 つです。
- メール
- 電話
- FaceTime
- SMS
- マップ
- iTunes
- YouTube
以下、それぞれの URL Scheme について簡単に説明していきます。
メール
メールの URL Scheme は mailto です。
「メール」アプリが起動します。 メールは起動するだけでなく、宛先や件名、本文などを指定することができます。
let url = NSURL(string: "mailto:foo@example.com?subject=Greetings&body=Hello!")
日本語は URL エンコードする必要があります。 URL エンコードは stringByAddingPercentEncodingWithAllowedCharacters() メソッドに NSCharacterSet クラスの alphanumericCharacterSet() を引数として渡し実現します。
let body = "こんにちは!" if let encodedBody = body.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.alphanumericCharacterSet()) { if let url = NSURL(string: "mailto:foo@example.com?subject=Greetings&body=(encodedBody)") { UIApplication.sharedApplication().openURL(url) } }
電話
電話の URL Scheme は tel です。
「電話」アプリが起動します。 電話は番号とセットで記述します。
let url = NSURL(string: "tel:09012345678")
openURL() メソッドを実行すると即座に電話がかかります。
FaceTime
FaceTime の URL Scheme は facetime です。
「FaceTime」アプリが起動します。 FaceTime は番号または Apple ID とセットで記述します。
let url = NSURL(string: "facetime:foo@example.com")
SMS
SMS の URL Scheme は sms です。
「メッセージ」アプリが起動します。 SMS は宛先を指定することはできますが、本文を指定することはできません。 SMS に本文を渡す方法はこちらの記事を御覧ください。
let url = NSURL(string: "sms:09012345678")
マップ
マップの URL Scheme は http です。
「マップ」アプリが起動します。 ただし、ドメインには maps.apple.com を指定する必要があります。 マップは地名で検索をかけたり、緯度/経度を指定することもできます。
// 地名で検索(札幌) let url = NSURL(string: "http://maps.apple.com/?q=sapporo")
// 緯度/経度を指定(東京駅) let url = NSURL(string: "http://maps.apple.com/?ll=35.681382,139.766084")
iTunes
iTunes の URL Scheme も http です。
「iTunes Store」アプリが起動します。 ただし、URL は iTunes Link Maker というオンラインツールで作成したものを指定する必要があります。
// Star Wars Episode III のサウンドトラック let url = NSURL(string: "https://itunes.apple.com/jp/album/star-wars-episode-iii-revenge/id311365539?uo=4")
YouTube
YouTube の URL Scheme も http です。
「YouTube」アプリが起動します。 ただし、URL は YouTube サーバをターゲットとしている必要があります。
// ファンが作った Star Wars Episode VII のトレーラー let url = NSURL(string: "http://www.youtube.com/watch?v=8q99q5dV2ko")
まとめ
以上の 7 つが Apple が公式に発表している URL Scheme です。
URL Scheme | 起動するアプリ |
mailto | メール |
tel | 電話 |
facetime | FaceTime |
sms | メッセージ |
http://maps.apple.com/~ | マップ |
http://itunes.apple.com/~ | iTunes Store |
http://www.youtube.com/~ | YouTube |
これらを利用することで、それぞれ専用のアプリを開くことができます。
YouTube だけは別途アプリをインストールする必要があります。 リファレンスに書かれているのは、昔 iOS にプリインストールされていた頃の名残でしょう。
また、リファレンスには次のような記述があります。
This document describes those schemes that require special attributes or special formatting in order to be understood by the associated system app. As a result, this document does not describe all URL schemes supported on different Apple platforms.
ざっくり訳すと、「このドキュメントには、サポートしている全ての URL Scheme は書いてないよ」だそうです。 もしかしたら「隠し URL Scheme」が存在するかもしれません。 ワクワクしますね。
リンク
おまけ
iOS 8 には「設定」アプリを起動することができる URL Scheme が存在します。
URL Scheme を表す定数は UIApplicationOpenSettingsURLString で、値は app-settings: です。
let url = NSURL(string: UIApplicationOpenSettingsURLString)
詳しくはこちら