プロトコルのアクティブ化拡張機能
プロトコルのアクティブ化拡張機能の概要
プロトコルのアクティブ化拡張機能を利用することで、特定のプロトコルに対応して起動するアプリケーションとしてストアアプリの登録ができます。
プロトコルとして、例えば以下のような独自プロトコルを利用することができます。
codezineapp://activate;
プロトコルのアクティブ化拡張機能の実装
Package.appxmanifestの編集
プロトコルのアクティブ化拡張機能を追加するには、まずPackage.appxmanifestを編集します。
宣言タブの「使用可能な宣言」で「プロトコル」を追加します。
表示名を「プロトコルのアクティブ化」、名前を「codezineapp」と指定します。
App.xaml.csでファイルを受け取る処理を追加
続いて、プロトコルのアクティブ化拡張機能のターゲットとして、ストアアプリが起動した際の起動処理を追記します。
protected override void OnActivated(IActivatedEventArgs args) { // 起動された条件を確認する。 // ActivationKind.Protocolならプロトコルのアクティブ化拡張機能起動と判定してIActivatedEventArgsをProtocolActivatedEventArgsにキャストする if (args.Kind == ActivationKind.Protocol) { ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs; } }
プロトコルのアクティブ化拡張機能の動作確認
ストアアプリの動作を確認するには、この時点で一度ストアアプリを実行して登録しておく必要があります。
登録した後、InternetExplolerのアドレス欄に以下のURLを入力します。
codezineapp://activate;
確認のダイアログが表示されるので、[許可]をクリックすることでストアアプリが起動します。
それ以外にも、エクスプローラーのアドレス欄に入力して起動することができます。
別のストアアプリからプロトコルのアクティブ化拡張機能に対応したストアアプリを起動する
プロトコルのアクティブ化拡張機能を利用すれば、ストアアプリから別のストアアプリを起動することが可能です。
先ほどのサンプルアプリを起動する場合のコードは、以下のようになります。
string uriToLaunch = "codezineapp://activate"; var uri = new Uri(uriToLaunch); var success = await Windows.System.Launcher.LaunchUriAsync(uri); if (success) { // URI launched } else { // URI launch failed }
これは、ストアアプリからインターネットエクスプローラー(もしくは既定のブラウザ)を起動する際の処理に似ています。
LaunchUriAsyncは、第二引数にLauncherOptionsをオプションとして指定することもできます。
プロトコルのアクティブ化拡張機能を用いたストアアプリの起動は、意図しないストアアプリからの起動も可能となりますので、受け取った値などのチェックをしっかり行い、セキュリティ上の問題がないように実装する必要があります。