スポンサーサイト

--.--.--.--.--:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[AdventCalender2012]NFCタグを使ってアプリを起動する(LaunchApp編)

2012.12.17.Mon.01:40
このエントリは Windows 8 Store apps Advent Calendar の17日目のエントリです。

前回、LaunchAppタイプのタグでアプリ起動ができず、CustomURIで逃げてみましたが、ようやく起動できるようになったので今回はNFCのLaunchAppをつかってアプリを起動します。

○用意するもの
・RC-S380 (NFCカードリーダー)
・NFCタグ (今回はFelica Liteを使用。Mifareでもたぶん可能)

1.LaunchApp:WriteTag
LaunchApp:WriteTagはProximityDevice.PublishBinaryMessageで引数に指定するメッセージタイプの一つです。
特定のフォーマットの文字列を、このLaunchAppとして書き込むとアプリを起動することが出来ます。

フォーマットは
 アプリ起動パラメータ[tab]プラットフォーム名[tab]アプリ名[tab]プラットフォーム名[tab]アプリ名・・・
となります。

今回はパラメータなし/Windows8のみとして、タグに書き込む文字列は
 " \tWindows\t"+[アプリ名]
とします。
このときパラメータに当たる部分に半角スペース等空白以外のものを入れないと私の環境では反応しませんでした。
サンプルコードでは「The string can be an empty string ("").」とか書いてあったから完全に騙されたじゃねーか…

アプリ名の部分はAPIを通して取得したものを使用しますので後述のコードを参考にしてください。

2.アプリの作成
今回は面倒なのでタグ書き込みアプリと、起動されるアプリは同じにします。
タグを書き込むコードはこんな感じです。

void publishLaunchApp()
{
var device = ProximityDevice.GetDefault();

if (device == null)
return;

var appName = Package.Current.Id.FamilyName + "!" + CoreApplication.Id;

var launchAppMessage = " \tWindows\t" + appName;

var writer = new DataWriter();
writer.UnicodeEncoding = UnicodeEncoding.Utf16LE;
writer.WriteString(launchAppMessage);
var launchAppPubId = device.PublishBinaryMessage("LaunchApp:WriteTag", writer.DetachBuffer());
}


あとは、ボタン押すなりなんなり適当なタイミングでpublishLaunchApp関数を呼んで、NFCタグをリーダーライターにタッチすれば変な音とともにタグの情報が書き込まれます。

3.アプリを起動する
いったんアプリを終了し、先ほど書き込んだNFCタグをNFCリーダーにタッチします。
すると、
taptolaunch.png

ってのが出てきますので、これをクリックするとアプリが起動します。
個人的にはタッチと同時にアプリが起動すると思ってたんですが、いったんユーザー操作をかますのはWindows8のポリシーですかね…。

4.まとめ

・CustomURIだとおなじURIschemeがあった時にアプリの選択画面が出るが、LaunchApp:WriteTagでタグ情報を書き込むとアプリが直接起動できる
・起動パラメータはなくてもスペース一個入れとけ
・トーストを操作しないといけないので、タッチで直起動とはならない
スポンサーサイト
コメント

管理者のみに表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。