[iOS 8] Apple 公式の URL Scheme

2014.10.31

URL Scheme

URL Scheme とは

インターネット上の資源の所在を表すURI(URL)の先頭部分で、資源に到達するための手段を表したもの。

e-Words より

iOS では、URL Scheme を利用することで他のアプリを起動することができます。

今回は Apple が公式に発表している URL Scheme で、どんなアプリを起動することができるかを紹介します。

利用方法

URL Scheme でアプリを起動するためには、以下のように UIApplication クラスの openURL() メソッドを使います。

if let url = NSURL(string: "<URL Scheme>:") {
    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)

詳しくはこちら