メインコンテンツへスキップ
位置情報ベースのセグメンテーションを使用すると、ユーザーがいる場所に基づいてメッセージを送信できます。OneSignalは、国、GPS座標、またはカスタムタグでユーザーをセグメント化できます——物理的な場所に基づいてタイムリーで関連性の高いアウトリーチを作成できます。 ユーザーがアプリを操作し、位置情報追跡が有効になっている場合、座標がほぼリアルタイムで更新され、ジャーニーまたはメッセージ作成ツールを介してメッセージを送信できます。
OneSignalはデフォルトでGPS位置情報を追跡しません。アプリが (1) 正しい権限と依存関係を持ち、(2) OneSignalとの共有を明示的に有効にし、(3) ユーザーが位置情報の権限を付与しない限り、SDKは緯度または経度を収集しません。詳細については、下記の位置情報追跡のセットアップと、ブログ記事 You’re in Control: How Location Actually Works in OneSignal’s SDK をご覧ください。

国別でターゲットする

国はデバイスのIPアドレスによって決定され、ユーザーがアプリを開くたびに自動的に更新されます。 セグメントまたはAPI filtersパラメータでcountryデータフィルターを使用します。

位置情報(緯度、経度、半径)でターゲットする

モバイルアプリがGPS位置情報を収集してOneSignalと共有する場合、SDKは約5分ごとにユーザーの座標を更新します(権限とシステムルールに基づく)。アプリが強制停止された場合、ユーザーが再度開くまで位置情報を追跡できません。

位置情報追跡のセットアップ

位置情報追跡には3つのステップが必要です:
1

アプリに位置情報の権限と依存関係を追加する

アプリのネイティブ位置情報権限を設定し、必要な依存関係を含めます。
LocationManager.startGetLocation: not possible, no location dependency found というエラーが表示される場合、アプリに必要な位置情報依存関係が不足しています。Androidの一般的な修正方法は、app/build.gradleにGoogle Play Servicesの位置情報ライブラリを追加することです:
implementation 'com.google.android.gms:play-services-location:21.0.1'
2

OneSignalとの位置情報共有を有効にする

Location.setShared(true)を呼び出して、SDKがデバイスの座標をOneSignalに送信できるようにします。これがないと、アプリはOneSignalに位置情報データを送信しません。
OneSignal.Location.setShared(true);
すべてのプラットフォームの例については、Mobile SDKリファレンスを参照してください。
3

ユーザーに位置情報の権限をリクエストする

Location.requestPermission()を使用してシステムの位置情報権限プロンプトをトリガーするか、アプリ内メッセージをソフトプレプロンプトとして使用してオプトイン率を向上させます。
OneSignal.Location.requestPermission();
すべてのプラットフォームの例については、Mobile SDKリファレンスを参照してください。
位置情報追跡が有効になると、次のことができます:
  • locationフィルター(半径ターゲティング)を使用してセグメントを作成する。
  • メッセージ作成APIを使用してメッセージをトリガーする。
OneSignal segment builder showing the location radius filter with latitude, longitude, and radius fields

Webプッシュの緯度経度追跡

OneSignalはWebの緯度/経度を収集しません。ただし、タグを使用してWebアプリから位置情報を設定するか、ユーザー更新APIを使用してサーバーから位置情報を設定できます。 タグ付け例:
  1. ブラウザの Geolocation API を使用してWebアプリで位置情報アクセスをリクエストします。
  2. JavaScriptを使用してユーザーの座標を検出します。
  3. タグを使用してこれらの座標をOneSignalに送信します。
OneSignal.User.addTags({
  lat: "37.160",
  long: "-117.773"
});
タグが設定されると、範囲フィルターを使用してジオフェンスセグメントを作成します: セグメント例:タグ "lat" > 37 AND "lat" < 38 AND "long" > -118 AND "long" < -117

都市またはカスタム位置情報でターゲットする

OneSignalは都市またはエリアコードをネイティブに検出しません。都市またはカスタム位置情報でターゲットするには:
  • ユーザーにフォームで都市または地域を入力させます。
  • または、JavaScriptとリバースジオコーディング(例:Google Maps API)を使用して座標から都市を推測します。
  • 都市名をデータタグとして送信します。
OneSignal.User.addTag("city", "San Francisco");

Radarによるジオフェンシング

OneSignalは、主要なジオロケーションプラットフォームであるRadarを通じて高度なジオフェンシングをサポートしています。RadarのSDKとAPIを使用すると、次のことができます:
  • ユーザーが定義されたエリアに入る/出るときに通知をトリガーする。
  • 配達とピックアップアクティビティを追跡する。
  • 場所での存在を確認する。
  • ストアロケーター、位置情報ベースのオファーなどを強化する。
開始するには、Radar統合ドキュメントにアクセスするか、オンボーディングサポートについてRadarに連絡してください。

FAQ

位置情報追跡はWebで機能しますか?

OneSignalはWebブラウザからGPS座標を収集しません。WebプッシュでロケーションベースのセグメントをするにはブラウザのGeolocation APIから座標を収集し、タグとして保存してください。上記のWebプッシュの緯度経度追跡を参照してください。

なぜアプリが位置情報を追跡していないのですか?

3つのセットアップステップがすべて完了しているか確認してください:位置情報の権限と依存関係がアプリに追加されている、Location.setShared(true)が呼び出されている、ユーザーが位置情報の権限を付与している。LocationManager.startGetLocation: not possible, no location dependency foundが表示される場合は、app/build.gradleplay-services-location依存関係を追加してください。詳細については位置情報追跡のセットアップを参照してください。

SDKはどのくらいの頻度で位置情報を更新しますか?

位置情報追跡が有効になっている場合、SDKはアプリの使用中に約5分ごとに座標を更新します。アプリが強制停止された場合、ユーザーが再度アプリを開くまで位置情報の更新が停止します。

都市でユーザーをターゲットできますか?

ネイティブには不可能です。OneSignalは国(IPアドレス経由)とGPS座標(SDK経由)を追跡しますが、都市やエリアコードは追跡しません。リバースジオコーディングサービスを使用して座標から都市を推測し、タグとして保存できます。都市またはカスタム位置情報でターゲットするを参照してください。

関連ページ

Mobile SDK位置情報リファレンス

setShared()、requestPermission()、位置情報イベントリスナーの完全なAPIリファレンス。

位置情報オプトインプロンプト

ネイティブ位置情報権限をリクエストする前に、アプリ内メッセージをソフトプレプロンプトとして使用する。

セグメント

位置情報フィルター、タグ、ユーザープロパティを使用してオーディエンスセグメントを作成する。

Radar統合

Radarによる高度なジオフェンシング、トリップ追跡、位置情報検証。