連携サービス
設定ファイル
API一覧
ver.1.0でのみ使用できるAPI
© Newphoria Corporation Inc.
All rights reserved.
アプリケーションから、アクセスを許可するURL・ファイルを設定出来るwhitelist.xmlの詳細は以下の通りです。
セキュリティ向上のため、whiltelist.xml必ず配置するようにして下さい。
ホワイトリスト定義 XML のサンプルは次の通り。
<!-- whitelist.xml -->
<applican-whitelist>
<!-- default: all scopes are passed. -->
<!-- all scopes (backward compatibility) -->
<allowed>http://www.applican.com/</allowed>
<!-- RegExp rules -->
<allowed format="regexp">https://www[1-9]\.example\.com/.*</allowed>
<!-- matching rules -->
<!-- all scopes -->
<rules scope="default">
<allowed>http://www.applican.com/</allowed>
</rules>
<!-- URL Scheme 'url' query parameter -->
<rules scope="launch_url">
<allowed>http://www.newphoria.co.jp/</allowed>
</rules>
<!-- href="http://www.example.com/?launch_browser=yes" -->
<rules scope="launch_browser">
<allowed>http://www.newphoria.co.jp/</allowed>
<allowed>http://www.newphoria.com/</allowed>
</rules>
<!-- href="http://www.example.com/?launch_webview=yes" -->
<rules scope="launch_webview">
<allowed>http://www.newphoria.co.jp/</allowed>
</rules>
<!-- href="http://www.example.com/?launch_tab=1" -->
<rules scope="launch_tab">
<allowed>http://www.newphoria.co.jp/</allowed>
</rules>
<!-- URL Scheme links -->
<rules scope="urlscheme">
<allowed>twitter://*</allowed>
<allowed>facebook://*</allowed>
<allowed>market://*</allowed>
</rules>
<!-- Applican API -->
<rules scope="api" api="applican.utilities.download" param="url">
<allowed>http://www.newphoria.co.jp/*</allowed>
</rules>
<rules scope="api" api="applican.utilities.download" param="destination">
<allowed>app-file://*</allowed>
<allowed>app-ext-cache://*</allowed>
</rules>
<rule scope="api" api="applican.media">
<allowed>app-ext-cache:///downloaded/music/*</allowed>
</rule>
</applican-whitelist>
このタグ内に <allowed>
タグを複数配置できる。
scope
属性にルール適用の範囲を指定することで、細かい制御が可能になる。
また、scope
に api
が指定された場合は api
属性を指定して、使用する API を明確にする必要がある。
ルールが存在しない場合、ここに記載されたルールが適用される。scope
属性の指定が無い場合はこのスコープが使用される。
<!-- index.html -->
<a href="http://www.applican.com">applican</a>
<!-- whitelist.xml -->
<rules scope="default">
<allowed>http://www.applican.com/</allowed>
</rules>
アプリが起動されたときの URL スキームに含まれる url
クエリーパラメーターに対してルールを適用する。
<!-- other apps or pages -->
<a href="jp.co.newphoria.exampleapp://?url=http%3A%2F%2Fwww.applican.com%2F">Click</a>
<!-- whitelist.xml -->
<rules scope="launch_url">
<allowed>http://www.applican.com/</allowed>
</rules>
launch_browser
クエリーパラメーターに対してルールを適用する。
<!-- index.html -->
<a href="http://www.applican.com/?launch_browser=yes">applican</a>
<!-- whitelist.xml -->
<rules scope="launch_browser">
<allowed>http://www.newphoria.co.jp/</allowed>
</rules>
launch_webview
クエリーパラメーターに対してルールを適用する。
<!-- index.html -->
<a href="local://index2.html?launch_webview=yes">index2</a>
<a href="local://index3.html?launch_webview=yes_without_toolbar">index3</a>
<!-- whitelist.xml -->
<rules scope="launch_webview">
<allowed>local://*</allowed>
</rules>
launch_tab
クエリーパラメーターに対してルールを適用する。
<!-- index.html -->
<a href="local://index.html?launch_tab=2">tab2</a>
<!-- whitelist.xml -->
<rules scope="launch_tab">
<allowed>local://*</allowed>
</rules>
コンテンツ内のリンクから URL スキームで外部アプリを起動しようとした場合にルールを適用する。
<rules scope="urlscheme">
<allowed>twitter://*</allowed>
<allowed>facebook://*</allowed>
<allowed>market://*</allowed>
</rules>
Applican API にルールを適用する。api
属性に適用する API 名を指定する。
<rules scope="api" api="applican.launcher.webview">
<allowed>http://www.newphoria.co.jp/</allowed>
</rules>
この例では Launcher API に対してルールを適用する。
API によってはパラメーターごとにルールを適用する必要があるため、param
属性にパラメーター名も合わせて指定する。
<rules scope="api" api="applican.utilities.download" param="url">
<allowed>http://www.newphoria.co.jp/*</allowed>
</rules>
<rules scope="api" api="applican.utilities.download" param="destination">
<allowed>app-cache://downloads/*</allowed>
</rules>
この例では http://www.newphoria.co.jp/ というサーバーからファイルをダウンロードでき、ダウンロードしたファイルはアプリケーションキャッシュディレクトリーにのみ保存可能である。
format
属性に regexp
を指定することで正規表現によるルールの記述が可能。
<rules>
内に scope="launch_url"
が存在していればそのルールを適用。scope="default"
を適用。<applican-whitelist>
内の <allowed>
を適用。 (従来通り)scope
が launch_browser
、launch_webview
、launch_tab
、urlscheme
の場合も同様の順番で評価される。
<rules>
内に scope="urlscheme" api="applican.XXX.XXX"
が存在していればそのルールを適用。<rules>
内に scope="api"
が存在していればそのルールを適用。scope="default"
を適用。<applican-whitelist>
内の <allowed>
を適用。 (従来通り)<rules>
内に scope="urlscheme" api="applican.XXX.XXX" param="param"
が存在していればそのルールを適用。<rules>
内に scope="urlscheme" api="applican.XXX.XXX"
が存在していればそのルールを適用。<rules>
内に scope="api"
が存在していればそのルールを適用。scope="default"
を適用。<applican-whitelist>
内の <allowed>
を適用。 (従来通り)<allowed>
が指定されていない場合は *
が指定されていると見なされるため、適切に記述する必要がある。
アプリ起動 URL スキームのみにルールを適用し、それ以外は全て通す場合の例。
<applican-whitelist>
<!-- 全て解放 -->
<allowed>*</allowed>
<!-- URL スキームのみ評価 -->
<rules scope="launch_url">
<allowed>http://www.applican.com/*</allowed>
</rules>
</applican-whitelist>
この定義は以下と等価。
<applican-whitelist>
<!-- <allowed> が存在しないため、全て解放 -->
<!-- URL スキームのみ評価 -->
<rules scope="launch_url">
<allowed>http://www.applican.com/*</allowed>
</rules>
</applican-whitelist>
特定の API を使用する場合の例。
<applican-whitelist>
<!-- 全て閉じる -->
<allowed></allowed>
<!-- Download API のみ通す -->
<rules scope="api" api="applican.utilities.download">
<allowed>http://www.applican.com/*</allowed>
</rules>
</applican-whitelist>
<applican-whitelist>
タグ直下に指定されている <allowed>
タグは <rules scope="default">
に含まれているものとして処理される。
<applican-whitelist>
<allowed>http://www.applican.com/*</allowed>
</applican-whitelist>
これは次の定義と等価。
<applican-whitelist>
<rules scope="default">
<allowed>http://www.applican.com/*</allowed>
</rules>
</applican-whitelist>
特別な URL スキーム名も使用することができる。
web.zip を展開したディレクトリー。
アプリケーションキャッシュディレクトリー。
外部アプリケーションキャッシュディレクトリー。iOS は app-cache://
と同じ。
<rule scope="api" api="applican.media">
<allowed>app-ext-cache://downloaded/music/*</allowed>
</rule>
アプリケーションファイルディレクトリー。
外部アプリケーションファイルディレクトリー。iOS は app-file://
と同じ。
それぞれの API においてエラーコールバックが存在する場合は、ホワイトリストによりブロックされた際にエラーコールバックが呼び出されるが、通常のリンクなどでは検出できないため、ブロックされると whitelistblocked
というイベントを発生する。
次のようなコードでホワイトリストによりブロックされたことが分かるようになる。
document.addEventListener("whitelistblocked", function (evt) {
console.log("Whitelist Blocked.");
alert("Whitelist Blocked.\n[url=" + evt.applican_whitelist_url + ", scope=" + evt.applican_whitelist_scope + ", api=" + evt.applican_whitelist_api);
});
applican_whitelist_url
ブロック対象となった URL。
applican_whitelist_scope
ブロックされたスコープ。
applican_whitelist_api
スコープが API の場合、ブロックされた API。
saveToPhotoAlbum()
<rules scope="api" api="applican.camera.savetophotoalbum">
</rules>
<rules scope="api" api="applican.camera.savetophotoalbum">
<rules scope="api">
<rules scope="default">
applican.requestFileSystem()
ホワイトリストの記述必要なし。
DirectoryEntry
全てのメソッドに共通してルールを適用できるが、それぞれのメソッドで指定できる場合はそちらを指定する方が望ましい。
<rules scope="api" api="applican.directoryentry">
</rules>
createReader()
ホワイトリストの記述必要なし。
getDirectory()
options
に create
を指定した場合は param
に create
を指定することでディレクトリ生成について制限をかけることができる。
<rules scope="api" api="applican.directoryentry.getdirectory" param="create">
</rules>
ディレクトリの読み取りのみを行う場合は必要ない。
<rules scope="api" api="applican.directoryentry.getdirectory">
</rules>
options
に create
を指定した場合
<rules scope="api" api="applican.directoryentry.getdirectory" param="create">
<rules scope="api" api="applican.directoryentry.getdirectory">
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
options
に create
を指定しない場合
<rules scope="api" api="applican.directoryentry.getdirectory">
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
getFile()
options
に create
を指定した場合は param
に create
を指定することでファイル生成について制限をかけることができる。
<rules scope="api" api="applican.directoryentry.getfile" param="create">
</rules>
ファイルの読み取りのみを行う場合は必要ない。
<rules scope="api" api="applican.directoryentry.getfile">
</rules>
options
に create
を指定した場合
<rules scope="api" api="applican.directoryentry.getfile" param="create">
<rules scope="api" api="applican.directoryentry.getfile">
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
options
に create
を指定しない場合
<rules scope="api" api="applican.directoryentry.getfile">
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
copyTo()
コピー先に制限をかけることができる。
<rules scope="api" api="applican.directoryentry.copyto">
</rules>
<rules scope="api" api="applican.directoryentry.copyto">
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
moveTo()
移動先に制限をかけることができる。
<rules scope="api" api="applican.directoryentry.moveto">
</rules>
<rules scope="api" api="applican.directoryentry.moveto">
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
remove()
/ removeRecursively()
remove()
および removeRecursively()
ともに以下のルールを適用できる。
<rules scope="api" api="applican.directoryentry.remove">
</rules>
<rules scope="api" api="applican.directoryentry.remove">
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
getParent()
api="applican.directoryentry"
のルールが適用される。
<rules scope="api" api="applican.directoryentry">
</rules>
<rules scope="api" api="applican.directoryentry">
<rules scope="api">
<rules scope="default">
FileEntry
全てのメソッドに共通してルールを適用できるが、それぞれのメソッドで指定できる場合はそちらを指定する方が望ましい。
<rules scope="api" api="applican.fileentry">
</rules>
読み取りだけであれば api="applican.fileentry"
の指定だけで良いが、ファイルに変更が加えられるメソッドについてはそれぞれのルールに従う。
createWriter()
このメソッド呼び出しの結果として FileWriter
が生成されるため、api="applican.filewriter"
のルールが適用される。
<rules scope="api" api="applican.filewriter">
</rules>
<rules scope="api" api="applican.filewriter">
<rules scope="api">
<rules scope="default">
file()
api="applican.fileentry"
のルールが適用される。
<rules scope="api" api="applican.fileentry">
</rules>
<rules scope="api" api="applican.fileentry">
<rules scope="api">
<rules scope="default">
copyTo()
コピー先に制限をかけることができる。
<rules scope="api" api="applican.fileentry.copyto">
</rules>
<rules scope="api" api="applican.fileentry.copyto">
<rules scope="api" api="applican.fileentry">
<rules scope="api">
<rules scope="default">
moveTo()
移動先に制限をかけることができる。
<rules scope="api" api="applican.fileentry.moveto">
</rules>
<rules scope="api" api="applican.fileentry.moveto">
<rules scope="api" api="applican.fileentry">
<rules scope="api">
<rules scope="default">
remove()
ファイルの削除に対して制限をかけることができる
<rules scope="api" api="applican.fileentry.remove">
</rules>
<rules scope="api" api="applican.fileentry.remove">
<rules scope="api" api="applican.fileentry">
<rules scope="api">
<rules scope="default">
getParent()
api="applican.fileentry"
のルールが適用される。
<rules scope="api" api="applican.fileentry">
</rules>
<rules scope="api" api="applican.fileentry">
<rules scope="api">
<rules scope="default">
DirectoryReader
読み取り対象のディレクトリーに対してルールを適用する。
<rules scope="api" api="applican.directoryreader">
</rules>
<rules scope="api" api="applican.directoryreader">
<rules scope="api">
<rules scope="default">
FileWriter
書き込み対象のファイルに対してルールを適用する。
<rules scope="api" api="applican.filewriter">
</rules>
<rules scope="api" api="applican.filewriter">
<rules scope="api">
<rules scope="default">
FileTransfer
FileTransfer
は転送元と転送先のパラメーターが必要であるため、それぞれのメソッドごとにルールを適用する。
upload()
アップロード対象のファイルにルールを適用する場合は param
に fileurl
を指定する。
<rules scope="api" api="applican.filetransfer.upload" param="fileurl">
</rules>
アップロード先のサーバーにルールを適用する場合は param
に encodeuri
を指定する。
<rules scope="api" api="applican.filetransfer.upload" param="encodeuri">
</rules>
<rules scope="api" api="applican.filetransfer.upload" param="fileurl">
および <rules scope="api" api="applican.filetransfer.upload" param="encodeuri">
<rules scope="api" api="applican.filetransfer.upload">
<rules scope="api">
<rules scope="default">
download()
ダウンロード元のサーバーにルールを適用する場合は param
に source
を指定する。
<rules scope="api" api="applican.filetransfer.download" param="source">
</rules>
ダウンロードしたファイルの保存場所にルールを適用する場合は param
に target
を指定する。
<rules scope="api" api="applican.filetransfer.download" param="target">
</rules>
<rules scope="api" api="applican.filetransfer.download" param="source">
および <rules scope="api" api="applican.filetransfer.download" param="target">
<rules scope="api" api="applican.filetransfer.download">
<rules scope="api">
<rules scope="default">
applican.gamesound.loadBGM()
<rules scope="api" api="applican.gamesound.loadbgm">
</rules>
<rules scope="api" api="applican.gamesound.loadbgm">
<rules scope="api">
<rules scope="default">
applican.gamesound.loadSE()
<rules scope="api" api="applican.gamesound.loadse">
</rules>
<rules scope="api" api="applican.gamesound.loadse">
<rules scope="api">
<rules scope="default">
applican.http.get()
<rules scope="api" api="applican.http.get">
</rules>
<rules scope="api" api="applican.http.get">
<rules scope="api">
<rules scope="default">
applican.http.post()
<rules scope="api" api="applican.http.post">
</rules>
<rules scope="api" api="applican.http.post">
<rules scope="api">
<rules scope="default">
applican.launcher.urlScheme()
<rules scope="api" api="applican.launcher.urlscheme">
</rules>
<rules scope="api" api="applican.launcher.urlscheme">
<rules scope="api">
<rules scope="default">
applican.launcher.webview()
<rules scope="api" api="applican.launcher.webview">
</rules>
<rules scope="api" api="applican.launcher.webview">
<rules scope="api">
<rules scope="default">
applican.localNotification.schedule()
options
の url
に対してルールを適用する。
<rules scope="api" api="applican.localnotification.schedule">
</rules>
<rules scope="api" api="applican.localnotification.schedule">
<rules scope="api">
<rules scope="default">
それぞれのメソッドに対して個別にルールを適用しない場合は以下のようなルールだけで良いが、録音機能を使用しない場合はそのように振る舞うようにルールを適用するのが望ましい。
<rules scope="api" api="applican.media">
</rules>
録音機能に制限をかける場合の例。
<rules scope="api" api="applican.media">
</rules>
<rules scope="api" api="applican.media.startrecord">
<allowed></allowed>
</rules>
applican.media.play()
<rules scope="api" api="applican.media.play">
<rules scope="api" api="applican.media">
<rules scope="api">
<rules scope="default">
applican.media.startrecord()
<rules scope="api" api="applican.media.startrecord">
</rules>
<rules scope="api" api="applican.media.startrecord">
<rules scope="api" api="applican.media">
<rules scope="api">
<rules scope="default">
applican.utilities.download()
ダウンロード元と保存先のパラメーターが必要であるため、それぞれのパラメーターごとにルールを適用する。
<rules scope="api" api="applican.utilities.download" param="url">
</rules>
<rules scope="api" api="applican.utilities.download" param="destination">
</rules>
<rules scope="api" api="applican.utilities.download" param="url">
および <rules scope="api" api="applican.utilities.download" param="destination">
<rules scope="api" api="applican.utilities.download">
<rules scope="api">
<rules scope="default">
applican.utilities.unzip()
展開元のファイルと保存先のパラメーターが必要であるため、それぞれのパラメーターごとにルールを適用する。
<rules scope="api" api="applican.utilities.unzip" param="source">
</rules>
<rules scope="api" api="applican.utilities.unzip" param="target">
</rules>
<rules scope="api" api="applican.utilities.unzip" param="source">
および <rules scope="api" api="applican.utilities.unzip" param="target">
<rules scope="api" api="applican.utilities.unzip">
<rules scope="api">
<rules scope="default">
applican.video.play()
<rules scope="api" api="applican.video.play">
</rules>
<rules scope="api" api="applican.video.play">
<rules scope="api">
<rules scope="default">
applican.webSocket.open()
アプリカン API のみで HTML5 の WebSocket には適用されない。
<rules scope="api" api="applican.websocket.open">
</rules>
<rules scope="api" api="applican.websocket.open">
<rules scope="api">
<rules scope="default">