none
UWPアプリで、プロトコル(URL)の重複 RRS feed

  • 質問

  • アプリにURLプロトコルを追加して、別アプリから起動させることができます。
    (マニフェスト→宣言→追加→プロトコル)

    このURLですが、他のアプリとURL名が重複することがあり得ると思います。

    自社のアプリ同志を連携させたいのですが、自社アプリを呼んだときに違うアプリが起動されるのは困ります。

    このURL重複に対処するにはどうすれば良いのでしょうか?


    2016年3月12日 7:02

回答

すべての返信

  • こんにちは。

    URIを使用した別アプリケーションの起動は拡張機能という位置づけになると思います。

    拡張機能の選択はユーザーが指定するもので、外部アプリケーションから指定することは出来ません。

    逆に、MSDNでは

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

    と注釈されているので、
    特定のアプリケーションから起動されること、特定のアプリケーションを起動できること、を前提に設計してはいけないと思います。

    URI のアクティブ化の処理

    また、UWPアプリでは、ファイルの種類やURIに対する既定のアプリのアプリの設定、変更、照会はできない、とされています。
    対策としては名前空間などと同様に、重複しないようなドメインなどをURIに含めることぐらいになってしまうのではないでしょうか。

    (追記)
    ストアアプリと同じだと思い込んでました。
    biacさんが仰っているようにWindows10からオプションが追加されていたようです。

    2016年3月12日 7:30
    モデレータ
  • 他のアプリとURIが重複しないようなものにすることはTak1waさんのおっしゃる通りですが、もしURIが重複してしまった場合、アプリの起動時に下記のようにユーザーに選択を求める画面が表示されます。プロトコルの表示名(下の画像ではApp2,App3の部分)に分かりやすい名前やアイコンを付けておくとなおよいと思います。




    2016年3月12日 7:55
  • 基本的には他のアプリとURIが重複しないようするべきですが、Windows 10 からは LauncherOptions TargetApplicationPackageFamilyName が追加されています。

    参考:
    WinRT/Metro TIPS:コマンドラインからURIで起動できるアプリを作るには?[ユニバーサルWindowsアプリ開発]
    Windows 10 TPのUniversal application platformで別アプリを起動する - かずきのBlog@hatena


    biac [ http://bluewatersoft.cocolog-nifty.com/ ]


    2016年3月12日 8:34