Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

REST API から Windows アプリの操作

$
0
0

Project Roma というのが発表されてもうかなりの時間がたちますが、UWP 同士では GA してて Android/iOS/Microsoft Graph API は Preview な感じです。Microsoft Graph API のカテゴリを見ると Cross-device experience という名前になってますね。

早く GA しないかな。

ということで、Microsoft Graph API は、ただの REST API です。 んで、Cross-device experience で提供されているのは、MS アカウントに紐づいているデバイスのリストの取得と、デバイスに対するコマンドの送信とコマンドの状態確認の API です。

流れとしてはデバイスのリストを取ってから、そこの ID を指定してコマンドを送り付けることになります。

デバイスのリストは以下のエンドポイントに GET で取れます。

https://graph.microsoft.com/beta/me/devices

コマンドは以下のエンドポイントに POST です。

https://graph.microsoft.com/beta/me/devices/デバイスのID/commands

どんな JSON が返ってくるかとかはドキュメントを見てみてください。

クロスデバイス エクスペリエンス - ドキュメント - Microsoft Graph

このコマンドですが以下のような JSON を送ると…

{"type": "LaunchUri",
  "payload": {"uri": "protocolname:?paramName=paramValue"
  }}

protocolname に対応したプロトコルのアプリが起動します。プロトコルに対応するには UWP でさくっといけます。もちろん Desktop Bridge アプリも含まれるので WPF とかで作ったアプリを Windows アプリケーション パッケージ プロジェクトとかで appx にパッケージングすれば Microsoft Graph API から起動が出来ます。

ただ、残念ながら App Service をホストする方法が無さそう…。Windows アプリケーション パッケージ プロジェクトの Package.appxmanifest に AppService の定義をしてもダメだった。

ということでコマンドを受けるところは、純粋な UWP として別立てで作りました。なので、アプリとしては WPF 製の Desktop Bridge のアプリと App Service 用の UWP アプリが個別にインストールされます。 そして、UWP のほうの App Service に WPF 製アプリから繋いで、Microsoft Graph API 経由で来たメッセージを渡してもらって、結果として REST API (Microsoft Graph API) から遠隔操作みたいな感じで動きます。

動作は以下のような感じ。Microsoft Graph API は API 確認用の Microsoft Graph Explorer から叩いています。

youtu.be

まとめ

つまり、Android や iOS 向けには SDK が提供されている Project Roma ですが、それ以外のプラットフォームでも Microsoft Graph API を叩けばアプリを起動したり、コマンドを送り付けたりすることが出来るってことです。

ソースコードは以下のリポジトリにあげてます。

github.com

あ、因みに Microsoft Graph API 使わなくても自前で何か常住プロセス立ててサーバーと通信するようなのを作れば同じことは出来るけど、最近は常駐系のアプリ作りにくい (ストアに出す場合の話し) ので自前で用意しないほうが幸せかも。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>