![Page 1: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/1.jpg)
2015-10-28関西モバイルアプリ研究会 #7
Universal Windows Platform
Pull 型で通知を表示するためにBackground Task を使う
id:nobuoka株式会社はてな
![Page 2: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/2.jpg)
自己紹介と前置き
● id:nobuoka Android アプリ開発 Windows アプリ開発 サーバーサイド (Scala)
● UWP 上の pull 型での通知の話 Background Task Toast 通知
![Page 3: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/3.jpg)
やりたいこと
● Web サービスの通知を端末の通知に表示● リアルタイム性はなくてよい
![Page 4: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/4.jpg)
プッシュ型 or プル型
● Push 型 : プッシュ通知 × サーバー側の実装が手間 ○ リアルタイム性がある
● Pull 型 : 定期的にサーバーに問い合わせて変更があれば通知を表示 ○ サーバー側は通知取得 API の用意だけ × リアルタイム性はない
![Page 5: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/5.jpg)
Android での pull 型の実装
● Service を使用● AlarmManager で定期的にサービスを起動
API 21 以降なら JobScheduler が便利?● サービスでサーバーから情報を取得● (必要に応じて) 端末に通知を表示
![Page 6: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/6.jpg)
Windows Universal Platform では?
● Background task を使用● 定期的に実行するようにタスクを登録● タスクでサーバーから情報を取得● (必要に応じて) Toast 通知を表示
![Page 7: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/7.jpg)
Background task の定義
● クラスの作成 (C# や C++ など; JS は不可)
● マニフェストに登録
using Windows.ApplicationModel.Background;
namespace SampleTasks{ public sealed class SampleBackgroundTask : IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { // サーバーから情報を取得 // Toast 通知 } }}
![Page 8: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/8.jpg)
Background task の登録
● JS からも登録可能● 対象クラスとトリガーを指定 (名前や条件も)
var b = Windows.ApplicationModel.Background;// TimeTrigger で必要b.BackgroundExecutionManager.requestAccessAsync().then(function () { var builder = new b.BackgroundTaskBuilder(); // 対象クラス builder.taskEntryPoint = "SampleTasks.SampleBackgroundTask"; builder.name = "your_task_name"; builder.setTrigger(new b.TimeTrigger(15, false)); return builder.register();});
![Page 9: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/9.jpg)
Background task のデバッグ
● Visual Studio からタスクの起動が可能● 便利!
![Page 10: UWP において Pull 型で通知を表示するために Background task を使う](https://reader036.vdocuments.pub/reader036/viewer/2022071715/58ef9b471a28ab762f8b4587/html5/thumbnails/10.jpg)
Background task 雑感
● IntentService 的な感じ● 制限は厳しい
CPU・ネットワークリソースのクォータ タイマーの時間は 15 分刻み Android と比べるとできることが限られる
● JS から登録できるがタスクの実装は C#/C++/VB で書く必要がある → JS メインのアプリではやや面倒