コンテンツにスキップ

位置情報を利用した配信

FANSHIP SDK では位置情報を利用することで、プッシュ通知の配信方法として「GPS 配信」「Wi-Fi 配信」「Bluetooth 配信」を行えるようになります。

また、同時に位置情報の蓄積も行われるので、セグメント機能を用いた配信に利用するといったことなども可能となります。

位置情報を利用をする場合は下記手順で実装してください。


1. meta-data の追加

下記の項目を AndroidManifest.xml に追加してください。

<!-- 使用する位置情報の取得方法を設定してください。※ PUSH配信のみ使用する場合 「""」 空の文字列を設定してください。-->
<meta-data
    android:name="POPINFO_LOCATION_SOURCES"
    android:value="GPS,Wi-Fi,iBeacon" />

<!-- Wi-Fi、Bluetooth による来店検知機能を利用する場合 true に設定してください。 -->
<meta-data
    android:name="POPINFO_USES_ANALYTICS"
    android:value="false" />

※ この例では GPS、Wi-fi、iBeacon をすべて使用する設定となります。


2. 権限の追加

下記の権限を AndroidManifest.xml に追加してください。

<!-- meta-dataで POPINFO_LOCATION_SOURCESに GPS または Wi-Fi または iBeacon を設定する場合に記述してください -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<!-- meta-dataで POPINFO_LOCATION_SOURCESに GPS または Wi-Fi を設定する場合に記述してください -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

<!-- meta-dataで POPINFO_LOCATION_SOURCESに iBeacon を設定する場合に記述してください -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

<!-- targetSdkVersion 31 以上で iBeacon を利用する場合に記述してください。 -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH_SCAN" /> -->

<!-- GPS または Wi-Fi または iBeacon をバックグラウンドでも利用する場合に記述してください。  ※バックグラウンドでも利用する場合、GooglePlay への申請時に別途バックグラウンド位置情報のための申請が必要となります -->
<!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> -->

※ この例では GPS、Wi-fi、iBeacon をすべて使用する設定となります。

targetSdkVersion 31 以上への対応について

targetSdkVersion 31 以上で Bluetooth を利用する場合、新たに android.permission.BLUETOOTH_SCAN の追加が必要となっております。

サンプルコードではコメントアウトをしておりますが、必要に応じてコメントアウトを解除し権限を追加してください。


3. バックグラウンドで位置情報を利用する

バックグラウンドで位置情報へアクセスするために「2. 権限の追加」でコメントアウトされていた権限を追加します。

<!-- GPS または Wi-Fi または iBeacon をバックグラウンドでも利用する場合に記述してください。  ※バックグラウンドでも利用する場合、GooglePlay への申請時に別途バックグラウンド位置情報のための申請が必要となります -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

バックグラウンドで位置情報へアクセスするアプリは、データのアクセスについてアプリ内でユーザーに開示をする必要があります。

meta-data として POPINFO_SKIP_INIT_AGREEMENT を追加し、 false に設定してインフォメーションダイアログを表示してください。

<meta-data
    android:name="POPINFO_SKIP_INIT_AGREEMENT"
    android:value="false" />

バックグラウンドでの位置情報へのアクセスについて

Google の位置情報に関するポリシーに変更が入り、バックグラウンドで位置情報へアクセスするアプリは通常の申請とは別に承認を受ける必要ができました。

参照 : バックグラウンドでの位置情報へのアクセスをリクエストする

この項の設定は承認を受けるために必要となる 「アプリ内での開示」 について、インフォメーションダイアログを使用して開示の文言を表示する方法となります。

※アプリ内での開示に関する要件は 2020年11月 現在のものをベースにしております
※文言の内容は res/values/popinfo_strings.xml よりカスタマイズが可能です

4. ライブラリの追加

GPS を使用する設定の場合、Google Play Services を利用しているためライブラリの追加が必要となります。
build.gradle および、AndroidManifest.xml に下記の設定を追加してください。

dependencies {
    // ...
    implementation 'com.google.android.gms:play-services-location:18.0.0'
}
<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

5. おおよその位置について

Android 12 以上の端末では、位置情報の許諾で 「おおよその位置」 の選択が可能となりました。

「おおよその位置」をユーザーが選択している場合、「GPS 配信」「Wi-Fi 配信」「Bluetooth 配信」は届かなくなるためご注意ください。