BrazeのWeb SDKでユーザーの位置情報を記録してみる

2022.02.07

Brazeではユーザーの最新のロケーションを記録することにより、定義された場所にいたユーザーに基づいてデータをセグメント化することが可能となっています。

位置情報の収集を有効にするには、IOS/Android/Web の仕様に従います。

今回はWeb SDKを使用したアプリケーションでユーザーの位置情報を保存していきたいと思います。

やってみる

現在地を設定

Webでは Geolocation.getCurrentPosition()を使用してBraze データを送信します。

BrazeのWeb SDKでは、 setLastKnownLocation() を使ってデータを保存できます。

シンタックス

setLastKnownLocation(
  latitude: number, 
  longitude: number, 
  accuracy?: number, 
  altitude?: number, 
  altitudeAccuracy?: number): boolean
  • latitude
    • ユーザーがいる場所の緯度(有効値は-90〜90度)
  • longitude
    • ユーザーの位置の経度(有効な値は-180〜180度です。)
  • accuracy(オプション)
    • ユーザーの緯度・経度の精度(メートル単位
  • altitude(オプション)
    • WGS 84基準楕円体より上または下のユーザー位置の高度(メートル)
  • altitudeAccuracy(オプション)
    • ユーザーの高度の精度(メートル単位)。

サンプルコード

    const options = {
      enableHighAccuracy: true,
      timeout: 5000,
      maximumAge: 0
    };

    const success = (pos) => {
      var crd = pos.coords;

      console.log('Your current position is:');
      console.log(`Latitude : ${crd.latitude}`);
      console.log(`Longitude: ${crd.longitude}`);
      console.log(`More or less ${crd.accuracy} meters.`);

      appboy.getUser().setLastKnownLocation(
        crd.latitude,
        crd.longitude,
        crd.accuracy,
        crd.altitude,
        crd.altitudeAccuracy
      );
    }

    const error = (err) => {
      console.warn(`ERROR(${err.code}): ${err.message}`);
    }

    navigator.geolocation.getCurrentPosition(success, error, options);

継続的な追跡

ページの読み込み中にユーザーの位置を継続的に追跡する場合は、Geolocation.watchPosition() を使用します。

ユーザーの場所が更新されるたびにsuccessのコールバックが呼ばれます。

サンプルコード

const success = (pos) => {
      var crd = pos.coords;

      console.log('Your current position is:');
      console.log(`Latitude : ${crd.latitude}`);
      console.log(`Longitude: ${crd.longitude}`);
      console.log(`More or less ${crd.accuracy} meters.`);

      appboy.getUser().setLastKnownLocation(
        crd.latitude,
        crd.longitude,
        crd.accuracy,
        crd.altitude,
        crd.altitudeAccuracy
      );
}

navigator.geolocation.watchPosition(success);

保存した位置情報の確認

位置情報が保存されると、Brazeのユーザー情報に最新の位置が表示されるようになりました。

位置情報を利用

セグメント

位置情報からユーザーのセグメント化することで、キャンペーンのフィルターとして使用できます。

軽度と緯度の位置を中心とし、半径を指定した範囲内で とかです。

位置情報のフィルターを設定すると、リーチ可能なユーザーの人数も表示されました。

セグメントを作成すると、以下のようにキャンペーンのターゲットとして利用できるようになります。¥

ジオフェンス(参考)

Brazeではジオフェンスという機能があります。 緯度と経度のペアを半径と組み合わせて地球上の特定の位置に円を形成します。

Brazeのダッシュボードでジオフェンスを定義し、ユーザーが世界中でジオフェンスに出入りするときに、リアルタイムでキャンペーンおよびCanvasをトリガーすることができるようです。

なお、ジオフェンスでのトリガーは、一部のBrazeパッケージでのみ使用できる とのことでした。

筆者の環境では使用できなかったので紹介だけに留めておきます。

さいごに

ユーザーの位置情報を保存すると、

  • 特定の地域をターゲットにしてメッセージを送信する
  • ユーザーが特定のエリアに出入りするときにメッセージを送信する(ジオフェンス)

といったことが可能になります。

実店舗に近づいた時にクーポンを発信したり、地域限定のキャンペーンをしたいといったときに使えそうですね。

参考

場所とジオフェンスのよくある質問