リンクを共有する方法 (HTML)
[ この記事は、Windows ランタイム アプリを作成する Windows 8.x および Windows Phone 8.x 開発者を対象としています。Windows 10 向けの開発を行っている場合は、「最新のドキュメント」をご覧ください]
リンク、つまり Uniform Resource Identifier (URI) はユーザーが共有したいと思う一般的なデータ形式の 1 つです。リンクの共有は、ユーザーがリンクを共有するように明示的に選んだ場合はもちろんですが、次のような場合にもサポートすることをお勧めします。
- ユーザーが選んだコンテンツをオンラインでも利用できる。
- HTML を共有するときに補助的なソースとして使う。
理解しておく必要があること
テクノロジ
必要条件
- Visual Studio と関連するテンプレートについて理解している必要があります。
- JavaScript について理解している必要があります。
手順
ステップ 1: DataTransferManager オブジェクトを取得する
DataTransferManager オブジェクトは、あらゆる共有操作を開始するための出発点となります。
var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
dataTransferManager.addEventListener("datarequested", shareAsyncHandler);
ステップ 2: datarequested イベントのイベント ハンドラーを追加する
ユーザーが "共有" を起動するときに呼び出される DataRequested イベント ハンドラーを追加します。Windows ストア アプリでは、ユーザーが共有チャームを起動すると自動的にこのイベントが発生します。Windows Phone 用の開発を行っている場合、組み込みの共有チャームがないため、ユーザーがハンドラーをタップしトリガーするためのコントロールを追加する必要があります。
dataTransferManager.addEventListener("datarequested", function (e) {
// Code to handle event goes here.
});
ステップ 3: DataRequest オブジェクトを取得する
datarequested イベントが発生すると、アプリは DataRequest オブジェクトを受け取ります。このオブジェクトに含まれている DataPackage を使って、ユーザーが共有するコンテンツを提供することができます。
var request = e.request;
ステップ 4: DataPackage にリンクを追加する
リンクを追加するには、setUri メソッドを使います。
request.data.setUri(new Windows.Foundation.Uri("http://www.fabrikam.com"));
注釈
アクティブ化プロトコル URI を共有するアプリの場合は、URI のほかに、補足情報を DataPackage に追加します。こうすることで、ターゲット アプリは、別の OS (オペレーティング システム) を使っているユーザーも含めてすべてのユーザーに、より良いエクスペリエンスを提供できるようになります。
- コンテンツの適切なタイトルと説明を提供します。
- 共有するコンテンツを説明し、URI をインラインで含む HTML スニペットを含めます。リンクは Windows 8 ユーザー用に動作するものであり、可能であれば、別の OS (オペレーティング システム) のユーザーにも追加の Web リンクを提供するということを強調する文字列を含めることをお勧めします。
- HTML スニペットのテキスト バージョンを含めます。
一部のターゲット アプリは、実際には http:// または https:// URI しか処理できない場合でも、URI をサポートしているように登録される場合があります。代わりのデータ形式を用意すると、ターゲット アプリがシナリオを正常に完了できる可能性が高くなります。
完全な例
リンクをユーザーが共有できるように設定する関数の例を次に示します。 完全なコード例については、コード ギャラリーのサンプルをご覧ください。
function registerForShare() {
var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
dataTransferManager.addEventListener("datarequested", shareLinkHandler);
}
function shareLinkHandler(e) {
var request = e.request;
request.data.properties.title = "Share Link Example";
request.data.properties.description = "A demonstration that shows how to add a link (URI) to share.";
request.data.setUri(new Windows.Foundation.Uri("http://www.fabrikam.com"));
}