SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

UWPアプリ開発の最前線

Windows 10 1803の新機能「PWA」とは?
PWAのUWPアプリ化を試してみる

UWPアプリ開発の最前線 第7回


UWPアプリ化したPWAからUWP APIを使うコード例

 上記の共有ターゲットの動作は、どのようにJavaScriptで実装されているのでしょうか? Build 2018のセッション「Modernizing Twitter for Windows as a Progressive Web App」から紹介します。

 まず、アプリ起動時に、2つの処理を行います(次の画像)。

セッション資料 p.37
セッション資料 p.37

 1つ目は、MSApp.pageHandlesAllApplicationActivationsメソッドの呼び出しです(まだアンドキュメンテッドです)。これをやっておかないと、共有ターゲットとして起動されたときにも必ず既定のページが表示されてしまいます。MSAppはMicrosoftのWebブラウザーに固有のオブジェクトであり、このメソッドはPWA対応のEdgeに固有のもののようです。呼び出す前に、それぞれの存在を確認する必要があります。

 2つ目は、Windowsのactivatedイベントに対するイベントハンドラーの登録です。WebUIApplicationクラスはUWP APIのものですから、呼び出す前に存在を確認する必要があります。

 そのactivatedイベントハンドラーは、次のようになっています。

セッション資料 p.39
セッション資料 p.39

 activatedイベントは、アプリが実行中かどうかにかかわらず、Windowsからアプリがアクティブ化されたときに発生します。上のコードでは、ActivationKind(アクティブ化の種類)がshareTarget(共有ターゲット)であるときは、handleShareEventメソッドを実行します。それ以外のアクティブ化のときは、既定の動作になります(普通に初期画面を表示します)。

 handleShareEventメソッドでは、共有するデータを受け取って、データの種類に応じてツィートを組み立てます。例えば、共有データがテキストの場合は、次のコードのようになります。

セッション資料 p.40
セッション資料 p.40

 上のコードで、変数eはアクティブ化時に渡されたShareTargetActivatedEventArgs型の引数です。そのShareOperation.Dataプロパティに、共有すべきデータが入っています。

 ツィートを組み立てたら、ツィート送信画面を表示します(次の画像の3)。

セッション資料 p.41
セッション資料 p.41

 ユーザーがツィートを送信し終わったら(または送信をキャンセルしたら)、ShareOperationオブジェクトのReportCompletedメソッドを呼び出して、処理が終わったことをWindowsに通知します(上の画像の4)。

まとめ

 今回は、プログレッシブWebアプリ(PWA)を紹介し、PWAをUWPアプリに変換する方法を解説しました。UWPアプリ化することでUWP APIが使えるようになり、Windows 10の様々な機能を利用できます。Webアプリを作っている開発者は、ぜひPWA化を考えてみてください。そして、PWA化できたら、今度はWindows 10の機能を活用できないか検討してみてください。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
UWPアプリ開発の最前線連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/10837 2019/11/10 21:24

イベント

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

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

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

メールバックナンバー