2015-10-28関西モバイルアプリ研究会 #7
Universal Windows Platform
Pull 型で通知を表示するためにBackground Task を使う
id:nobuoka株式会社はてな
自己紹介と前置き
● id:nobuoka Android アプリ開発 Windows アプリ開発 サーバーサイド (Scala)
● UWP 上の pull 型での通知の話 Background Task Toast 通知
やりたいこと
● Web サービスの通知を端末の通知に表示● リアルタイム性はなくてよい
プッシュ型 or プル型
● Push 型 : プッシュ通知 × サーバー側の実装が手間 ○ リアルタイム性がある
● Pull 型 : 定期的にサーバーに問い合わせて変更があれば通知を表示 ○ サーバー側は通知取得 API の用意だけ × リアルタイム性はない
Android での pull 型の実装
● Service を使用● AlarmManager で定期的にサービスを起動
API 21 以降なら JobScheduler が便利?● サービスでサーバーから情報を取得● (必要に応じて) 端末に通知を表示
Windows Universal Platform では?
● Background task を使用● 定期的に実行するようにタスクを登録● タスクでサーバーから情報を取得● (必要に応じて) Toast 通知を表示
Background task の定義
● クラスの作成 (C# や C++ など; JS は不可)
● マニフェストに登録
using Windows.ApplicationModel.Background;
namespace SampleTasks{ public sealed class SampleBackgroundTask : IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { // サーバーから情報を取得 // Toast 通知 } }}
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();});
Background task のデバッグ
● Visual Studio からタスクの起動が可能● 便利!
Background task 雑感
● IntentService 的な感じ● 制限は厳しい
CPU・ネットワークリソースのクォータ タイマーの時間は 15 分刻み Android と比べるとできることが限られる
● JS から登録できるがタスクの実装は C#/C++/VB で書く必要がある → JS メインのアプリではやや面倒