URI のアクティブ化を処理する方法 (HTML)

アプリは、特定の URI (Uniform Resource Identifier) スキーム名の既定のハンドラーとして登録することができます。 デスクトップ アプリと Windows ランタイム アプリの両方を、URI スキーム名の既定のハンドラーに登録できます。 アプリを URI スキーム名の既定のハンドラーとして選ぶと、アプリはその種類の URI を起動するたびにアクティブ化されます。

URI スキーム名に登録するのは、その種類の URI スキームのすべての URI 起動を処理する場合のみにすることをお勧めします。 URI スキーム名に登録する場合は、その URI スキームのためにアプリをアクティブ化した際に期待される機能をエンド ユーザーに提供する必要があります。 たとえば、mailto: URI スキーム名に登録したアプリでは、新しいメールを開いて、ユーザーが新しいメールを書くことができるようにする必要があります。 URI の関連付けについて詳しくは、「ファイルの種類と URI のガイドラインとチェック リスト」をご覧ください。

以下の手順では、カスタムの URI スキーム名 alsdk:// を登録する方法と、ユーザーによって alsdk:// URI が起動されたときにアプリをアクティブ化する方法について説明します。

  

Windows Phone ストア アプリでは、組み込みのアプリとオペレーティング システムで使うために、特定の URI とファイル拡張子が予約されています。予約されている URI またはファイル拡張子にアプリを登録しようとしても無視されます。詳しくは、このページの一覧をご覧ください。

手順

ステップ 1: パッケージ マニフェストに拡張点を指定する

アプリは、パッケージ マニフェストに一覧表示される URI スキーム名のアクティブ化イベントだけを受け取ります。アプリが alsdk URI スキーム名を処理することを示す方法は次のとおりです。

  1. ソリューション エクスプローラーで、package.appxmanifest をダブルクリックして開きます。

    パッケージ マニフェストで指定することができる各フィールドについて、以下で簡単に説明します。

    フィールド 説明

    名前

    同じ表示名、ロゴ、InfoTip、編集フラグを共有するファイルの種類のグループの名前を選びます。このグループ名は、アプリの更新後も維持される名前にします。

      名前はすべて小文字である必要があります。
     

    予約および禁止されているファイルの種類

    予約または禁止されいるため、アプリを登録できない URI スキームを以下に示します (アルファベット順)。

      

    Windows ストア アプリの場合

    application.manifestapplication.referencebatfileblobcerfilechm.filecmdfilecomfilecplfiledllfiledrvfileexefileexplorer.assocactionid.burnselectionexplorer.assocactionid.closesessionexplorer.assocactionid.erasediscexplorer.assocactionid.zipselectionexplorer.assocprotocol.search-msexplorer.burnselectionexplorer.closesessionexplorer.erasediscexplorer.zipselectionfilefonfilehlpfilehtafileinffileinsfileinternetshortcutjsefilelnkfilemicrosoft.powershellscript.1ms-accountpictureproviderms-appdatams-appxms-autoplaymsi.packagemsi.patchms-windows-storeocxfilepiffileregfilescrfilescriptletfileshbfileshcmdfileshsfilesmbsysfilettffileunknownusertileprovidervbefilevbsfilewindows.gadgetwsffilewsfilewshfile

      

    Windows Phone ストア アプリの場合

    Windows Phone では、組み込みのアプリ用に次の URI スキームが予約されています。

    bing、callto、dtmf、http、https、mailto、maps、ms-excel、ms-powerpoint、ms-settings-airplanemode、ms-settings-bluetooth、ms-settings-cellular、ms-settings-emailandaccounts、ms-settings-location、ms-settings-lock、ms-settings-wifi、ms-word、office、onenote、tel、wallet、xbls、zune

    Windows Phone では、オペレーティング システム用に次の URI スキームが予約されています。

    Explorer.AssocActionId.BurnSelection、Explorer.AssocActionId.CloseSession、Explorer.AssocActionId.EraseDisc、Explorer.AssocActionId.ZipSelection、Explorer.AssocProtocol.search-ms、Explorer.BurnSelection、Explorer.CloseSession、Explorer.EraseDisc、Explorer.ZipSelection、File、Iehistory、Ierss、Javascript、Jscript、LDAP、Res、rlogin、StickyNotes、telnet、tn3270、Vbscript、windowsmediacenterapp、windowsmediacenterssl、windowsmediacenterweb、WMP11.AssocProtocol.MMS

    表示名

    コントロール パネル[既定のプログラムを設定する] で URI スキーム名を識別するための表示名を指定します。

    ロゴ

    コントロール パネル[既定のプログラムを設定する] で URI スキーム名を識別するために使われるロゴを指定します。ロゴを指定しない場合は、アプリの小さいロゴが使われます。

    可能な表示 (Windows のみ)

    この URI スキーム名に対して起動されたときにアプリのウィンドウに必要なスペースの量を示すには、[Desired View] フィールドを指定します。[Desired View] に指定できる値は、DefaultUseLessUseHalfUseMore、または UseMinimum です。

      ターゲット アプリの最終的なウィンドウ サイズは、複数の異なる要素が考慮されて決定されます。たとえば、ソース アプリの設定、画面上のアプリの数、画面の向きなどです。目的の表示を設定しても、ターゲット アプリの特定のウィンドウ動作が保証されるわけではありません。
     

    Windows 8.1:  [Desired View] は Windows 8.1 と Windows Server 2012 R2 までサポートされません。

    Windows Phone:  [Desired View] は、Windows Phone ではサポートされていません。

     

  2. [宣言] タブをクリックします。

  3. ドロップダウン リストから [プロトコル] を選んで、[追加] をクリックします。

  4. [名前] に「alsdk」と入力します。

  5. [ロゴ] に「images\Icon.png」と入力します。

  6. Ctrl + S キーを押して、変更を package.appxmanifest に保存します。

これにより、次のような Extension 要素がパッケージ マニフェストに追加されます。windows.protocol カテゴリは、アプリが alsdk URI スキーム名を処理することを示しています。


<Package xmlns="https://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="https://schemas.microsoft.com/appx/2013/manifest">
   <Applications>
      <Application Id="AutoLaunch.App">
         <Extensions>
            <Extension Category="windows.protocol">
               <Protocol Name="alsdk"/>
               <Logo>images\logo.png</Logo>                                     
               <DisplayName>SDK Sample URI Scheme</DisplayName>
            </Extension>                      
         </Extensions>
      </Application>
   </Applications>
</Package>

ステップ 2: 適切なアイコンを追加する

URI スキーム名の既定となるアプリは、そのアイコンがシステムのさまざまな場所に表示されます。アイコンは、たとえば [既定のプログラム] コントロール パネルに表示されます。

これらのすべての場所でロゴが適切に表示されるように、適切なアイコンをプロジェクトと共に含めることをお勧めします。Windows ストア アプリの場合、画像フォルダーには小サイズのロゴとアイコン用に 16、32、48、256 ピクセル版の画像を含めます。Windows Phone ストア アプリの場合は、代わりに 63/129/336 ピクセル版を含めます。カラー プレートが組み込まれたアプリのタイルのロゴと外観が調和するようにし、パディングせずにロゴを端まで拡張します。アイコンは、白い背景でテストします。 サンプルのアイコンについては、関連付けによる起動のサンプル (Windows) に関するページをご覧ください。

ソリューション エクスプローラーで images フォルダー内にあるファイルを表示したようす。Icon.targetsize と smallTile-sdk の両方に 16、32、48、256 の各ピクセルのバージョンがあります。

ステップ 3: activated イベントに登録する

URI のアクティブ化を処理するには、activated イベントに登録します。

WinJS.Application.addEventListener("activated", onActivatedHandler, false);

ステップ 4: activated イベントを処理する

手順 1. で登録した activated イベント ハンドラーは、すべてのアクティブ化イベントを受け取ります。kind プロパティは、アクティブ化イベントの種類を示しています。次の例では、protocol アクティブ化イベントを処理するように設定されています。

function onActivatedHandler(eventArgs) {
   if (eventArgs.detail.kind == Windows.ApplicationModel.Activation.ActivationKind.protocol) 
   {
       // TODO: Handle URI activation.

       // The received URI is eventArgs.detail.uri.rawUri
   }
}

注釈

URI スキーム名は、悪意のあるものも含め、あらゆるアプリや Web サイトから使われる可能性があります。そのため、その URI で受け取るデータは、信頼できないソースからのデータである可能性があります。URI で受け取るパラメーターに基づいて永続的な操作を実行しないことをお勧めします。たとえば、アプリを起動するとユーザーのアカウント ページが表示されるようにするために URI パラメーターを使うことはかまいませんが、ユーザーのアカウントを直接変更するためにプロトコル パラメーターを使うことは決してしないことをお勧めします。

  アプリの新しい URI スキーム名を作成する場合は、RFC 4395 のガイダンスに従う必要があります。これにより確実に名前が URI スキームの標準に準拠するようになります。

 

  

プロトコル コントラクトを介して起動した場合、Windows Phone ストア アプリでは、戻るボタンが使われたとき、アプリの以前のコンテンツに戻るのではなく、アプリを起動した画面に戻るようにする必要があります。

新しい URI ターゲットを開くアクティブ化イベントごとにアプリで新しい XAML フレームを作成することをお勧めします。こうすると、新しい XAML フレームのナビゲーション バックスタックに、中断されたときに現在のウィンドウに表示されていた以前のコンテンツが含まれなくなります。

起動コントラクトとプロトコル コントラクトで単一 XAML フレームを使うことにしたアプリは、新しいページに移動する前にフレームのナビゲーション ジャーナルにあるページをクリアする必要があります。 プロトコル コントラクトによって起動されたときは、アプリの先頭に戻ることができる UI を含めることを検討してください。

完全な例

関連付けによる起動のサンプル (Windows) に関するページをご覧ください。

関連トピック

概念

既定のプログラム

ファイルの種類と URI の関連付けのモデル

Windows 8 Release Preview および Windows Server 2012 RC 互換性クックブック (ユーザー モデル情報) に関するページ

タスク

URI に応じて既定のアプリを起動する方法

ファイルのアクティブ化を処理する方法

ガイドライン

ファイルの種類と URI のガイドラインとチェック リスト

辞書/リファレンス

Windows.UI.WebUI.WebUIProtocolActivatedEventArgs

WinJS.Application.onactivated