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 メインのアプリではやや面倒

UWP において Pull 型で通知を表示するために Background task を使う

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