サーバー構築不要!スマートフォンアプリ向けの新クラウド

トップ >ドキュメント >プッシュ通知:位置情報連動配信

プッシュ通知(Swift_work_in progress)

位置情報連動配信

位置情報連動配信の概要

位置情報のデータ保存とサーバーからのプッシュ通知配信に
ニフクラ mobile backendを利用します。
iOS8から追加されたLocation Notificationと組み合わせることで、
通知を行う位置を動的に更新できる仕組みを作ります。

(アプリの主な動作フロー)

  1. Silent Push通知を配信
  2. Silent Push通知の内容から通知を行う位置を取得
  3. Location Notificationを設定

アプリの完成形

このページでは、以下の設定が済んでいるものとして説明していきます。

  • Swift SDKのインストールと初期化
  • 通常のプッシュ通知設定

位置情報データの登録

位置情報をあらかじめデータストアに登録しておく必要があります。

以下の例では、Locationクラスに位置情報を保存しています。
ダッシュボードから位置情報を設定する場合は
geoフィールドは入力形式を緯度経度に変更してください

データストアの値を編集する操作手順は以下の通りです。

  1. 各レコードの編集するフィールドをダブルクリックすると入力状態になります
  2. 値を入力したら、エンターキーを押して入力した値を保存します

データストアの操作

アプリ側の設定

content-availableが指定されてプッシュ通知が行われた場合、AppDelegateクラスの
application:didReceiveRemoteNotification:fetchCompletionHandler:メソッドが呼びだされます。

TBD

Silent Push通知の内容から通知を行う位置を取得

取得したobjectIdをNCMBObjectのインスタンスにセットして
fetchInBackgroundWithBlockメソッドを呼び出すと、
データストアからobjectIdを基にデータが取得されます。

TBD

Location Notificationを設定

Location Notification設定方法はiOS 10未満とiOS 10以上の場合で異なりますが、両場合を考慮した実装方法を説明していきます。

以下のようにUserNotificationsを利用できるように準備します。

  • Xcode上でプロジェクト設定画面を開き、Build Phasesを選択し、Link Binary With LibrariesにUserNotifications.frameworkを追加します。

フレームワークを追加

  • Location Notificationを設定したいファイルに以下のコードを追加します。
TBD

Location Notification用のNotificationオブジェクトを作成します

TBD

CLCircularRegionの変数を用意し、
取得したデータの位置情報からCLLocationCoordinate2Dを作成します。

このCLLocationCoordinate2Dをregionに設定し、
そのregionをNotificationに設定するとLocation Notificationが行われます。

TBD

リージョンを作成して、リージョンから外に出た場合の通知をOFFにします。

TBD

リージョンを設定してLocation Notificationを登録します。

TBD

ダッシュボードからSilent Push通知を配信する

ダッシュボードからSilent Push通知を配信する場合は、
以下のような設定で配信を行ってください。

  • JSONの欄に、データストアに登録した位置情報データのobjectIdを指定する
{"locationId":"LOCATION_ID"}

  • タイトル、メッセージは空白
  • iOS向けに配信
  • 音声ファイル名のdefaultは削除
  • content-availableを有効にする

参考資料

位置情報連動プッシュ通知を利用してO2Oアプリを作成するチュートリアルを公開しています。
チュートリアルではより詳細な手順を説明しています。

チュートリアル:位置情報に連動したプッシュ通知を送る

お探しの内容が見つからなかった場合はユーザーコミュニティ もご活用ください。(回答保証はいたしかねます)
なお、 Expertプラン以上のお客様はテクニカルサポートにてご質問を承らせて頂きます。

推奨画面サイズ1024×768px以上

ページの先頭へ