SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Windowsストアアプリケーション

Windowsストアアプリのコントラクトの基礎
――検索、共有、設定、リモート再生

速習 Windowsストアアプリケーション 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

共有コントラクト

共有コントラクトの概要

 共有コントラクトを利用すると、アプリケーション間でのデータの受け渡しが実現できます。

 直接アプリケーションどうしでやり取りするのではなく、OSが間に入りデータのやり取りを行います。

 共有コントラクトの実行は通常チャームの共有ボタンから行うのですが、アプリケーションが対応していないと以下のように「このアプリでは共有できません」という寂しい表示になってしまいます。

アプリケーションが共有コントラクトに対応していない表示
アプリケーションが共有コントラクトに対応していない表示

共有コントラクトの追加

 共有コントラクトは、共有対象のデータを渡す側(共有ソース)と受け取る側(共有ターゲット)の2つが存在します。

  • 共有ソース:データを渡す側
  • 共有ターゲット:データを受け取る側

共有ソース

 共有ソースは、DataTransferManagerクラスにDataRequestedイベントハンドラーを設置することで、チャームの共有ボタンが押されたイベントを取得します。

 イベントハンドラー内で、DataRequestクラスに共有したいデータを設定します。

 以下はURLを共有する例です。

共有ソース
DataRequest request = e.Request;
request.Data.Properties.Title = "共有タイトル";
request.Data.Properties.Description = "共有コントラクトを行います";
request.Data.Properties.Thumbnail = file;
request.Data.SetUri(new Uri("http://codezine.jp/"));

 サンプルコードを実行し、URLをメールアプリに渡した画面が以下です。

共有ソースからURLをメールアプリに渡す
共有ソースからURLをメールアプリに渡す

共有ターゲット

 共有コントラクトのデータを受け取る側、共有ターゲットも検索コントラクト同様に新しい項目の追加から行います。

共有ターゲットを追加する
共有ターゲットを追加する

 項目を追加することで検索結果を表示するページが追加され、App.xaml.csにイベントハンドラーが追加されます。マニフェストファイルが追加される点も同様です。

共有コントラクト以外のデータ共有方法

 共有コントラクトは、ストアアプリ同士でデータのやり取りを行う、簡潔で安全な方法です。ただし、データを共有する方法は共有コントラクト以外にも存在します。

 これらも検討して、より条件にあった方法を選択すべきでしょう。

  • クリップボードを利用する
  • クラウドを利用する
  • ファイルピッカーコントラクトを利用する
  • NFCを利用する

クリップボードを利用する

 いわゆる「コピペ」です。クリップボードを利用する場合、ストアアプリとデスクトップアプリでデータの共有が可能という点がポイントです。

クラウドを利用する

 SkyDriveなどのクラウドやWebサーバーにデータをアップロードし、受信側はそれをダウンロードします。

 SkyDriveは、Windowsストアアプリケーションから扱いやすくなっています。ただし、Webに上げたデータは、URLやデータフォーマット(XML、JSON)を知っている必要があり、汎用的とはいい難い方法です。

 すでにWebサービスがあり、そのWebサービスと連携したストアアプリを公開したい場合はこの方法を利用します。

ファイルピッカーコントラクトを利用する

 ファイルピッカーコントラクトで、ローカルの共有可能な領域にデータを保存、取得します。デスクトップアプリからもデータが利用可能になりますが、保存先、保存ファイル名を制限し辛いため、これもアプリ間のデータ受け渡しとしては不便です。

NFCを利用する

 近距離通信を使って、近くにある別の端末にデータを送る場合などに利用します。

次のページ
設定コントラクト

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習 Windowsストアアプリケーション連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6934 2012/12/31 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング