フォアグラウンドでのジオフェンス通知の処理 (HTML)
このトピックでは、アプリを使ってフォアグラウンドで Geofence 通知を処理する手順について説明します。
ロードマップ: このトピックと他のトピックとの関連については、以下をご覧ください。
はじめに
ジオフェンスを作成すると、ジオフェンス イベントが発生したときの処理ロジックを追加する必要があります。 セットアップした MonitoredStates に応じて、次の場合にイベントを受け取ります。
- ユーザーが関心領域に入りました。
- ユーザーが関心領域から離れました。
- ジオフェンスが期限切れになったか、除去されました。除去イベントではバックグラウンド アプリがアクティブ化されないことに注意してください。
実行中のアプリからイベントを直接リッスンすることも、バックグラウンド タスクの登録を行い、イベントが発生するとバックグラウンド通知を受け取ることもできます。バックグラウンド タスクとジオフェンスについて詳しくは、「バックグラウンドでのジオフェンス イベントのリッスン」、「バックグラウンド タスクからのジオフェンス通知の処理」、「ジオフェンスのガイドライン」をご覧ください。
ジオフェンスの状態変更イベントに登録
アプリでジオフェンスの状態変更についてフォアグラウンド通知を受け取るには、イベント ハンドラーを登録する必要があります。 これは一般にジオフェンスの作成時にセットアップします。
function initialize() {
// other initialization logic
Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.addEventListener("geofencestatechanged", onGeofenceStateChanged);
}
ジオフェンスのイベント ハンドラーの実装
次の手順は、イベント ハンドラーの実装です。 ここで実行するアクションは、ジオフェンスの利用目的に応じて変わります。
public async void OnGeofenceStateChanged(GeofenceMonitor sender, object e)
{
var reports = sender.ReadReports();
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
foreach (GeofenceStateChangeReport report in reports)
{
GeofenceState state = report.NewState;
Geofence geofence = report.Geofence;
if (state == GeofenceState.Removed)
{
// remove the geofence from the geofences collection
GeofenceMonitor.Current.Geofences.Remove(geofence);
}
else if (state == GeofenceState.Entered)
{
// Your app takes action based on the entered event
// NOTE: You might want to write your app to take particular
// action based on whether the app has internet connectivity.
}
else if (state == GeofenceState.Exited)
{
// Your app takes action based on the exited event
// NOTE: You might want to write your app to take particular
// action based on whether the app has internet connectivity.
}
}
});
}
関連トピック
ロードマップ
タスク
リファレンス
その他のリソース