トラッキング位置
Braze SDK で位置を追跡する方法について説明します。
現在地を記録する
連続追跡が無効になっている場合でも、手動でユーザーの現在位置を setLastKnownLocation()
メソッドを使う。
1
2
3
4
5
6
Braze.getInstance(context).getCurrentUser(new IValueCallback<BrazeUser>() {
@Override
public void onSuccess(BrazeUser brazeUser) {
brazeUser.setLastKnownLocation(LATITUDE_DOUBLE_VALUE, LONGITUDE_DOUBLE_VALUE, ALTITUDE_DOUBLE_VALUE, ACCURACY_DOUBLE_VALUE);
}
}
1
2
3
Braze.getInstance(context).getCurrentUser { brazeUser ->
brazeUser.setLastKnownLocation(LATITUDE_DOUBLE_VALUE, LONGITUDE_DOUBLE_VALUE, ALTITUDE_DOUBLE_VALUE, ACCURACY_DOUBLE_VALUE)
}
位置情報の追跡を続ける
Android Marshmallowからは、位置情報の追跡を明示的にオプトインするようユーザーに促す必要がある。そうすれば、Brazeは次のセッションの最初に彼らの位置情報の追跡を開始することができる。これは、AndroidManifest.xml
で位置情報の権限のみを宣言する必要があった以前のバージョンのAndroidとは異なる。
ユーザーの位置情報を継続的に追跡するには、AndroidManifest.xml
ファイルに以下の権限の少なくとも1つを追加して、アプリが位置情報データを収集する意図を宣言する必要がある。
許可 | 説明 |
---|---|
ACCESS_COARSE_LOCATION |
最もバッテリー効率の良い、非GPSプロバイダー(ホームネットワークなど)を使用する。通常、ほとんどの位置情報のニーズにはこれで十分である。実行時権限モデルの下では、位置情報の権限を与えることは、暗黙のうちに、細かい位置情報のデータ収集を許可することになる。 |
ACCESS_FINE_LOCATION |
より正確な位置情報のためのGPSデータを含む。実行時権限モデルの下では、ロケーション権限の付与は、細かいロケーショ ンアクセスもカバーする。 |
AndroidManifest.xml
は次のようになります。
1
2
3
4
5
6
7
8
<manifest ... >
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application ... >
...
</application>
</manifest>
連続トラッキングを無効にする
連続トラッキングは、コンパイル時または実行時に無効にすることができる。
コンパイル時に位置情報の連続追跡を無効にするには、braze.xml
でcom_braze_enable_location_collection
をfalse
に設定する:
1
<bool name="com_braze_enable_location_collection">false</bool>
実行時に位置情報の連続追跡を選択的に無効にするには、次のようにする。 BrazeConfig
:
1
2
3
4
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setIsLocationCollectionEnabled(false)
.build();
Braze.configure(this, brazeConfig);
1
2
3
4
val brazeConfig = BrazeConfig.Builder()
.setIsLocationCollectionEnabled(false)
.build()
Braze.configure(this, brazeConfig)
現在地を記録する
ステップ1:プロジェクトを構成する
Braze の位置情報機能を使用する場合、アプリケーションでは位置情報サービスを使用するための権限がリクエストされます。アップル開発者のレビューをぜひ:ユーザーロケーションサービスへの認可を要求する 。
位置情報の追跡を有効にするには、Xcodeプロジェクトを開封し、アプリを選択する。Generalタブで、BrazeLocation
モジュールを追加する。
AppDelegate.swift
ファイルの先頭にある BrazeLocation
モジュールをインポートします。Braze の構成に BrazeLocationProvider
インスタンスを追加し、構成に対するすべての変更が Braze(configuration:)
を呼び出す前に実行されるようにします。利用可能な構成については、Braze.Configuration.Location
を参照してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import UIKit
import BrazeKit
import BrazeLocation
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(apiKey: brazeApiKey, endpoint: brazeEndpoint)
configuration.logger.level = .info
configuration.location.brazeLocationProvider = BrazeLocationProvider()
configuration.location.automaticLocationCollection = true
configuration.location.geofencesEnabled = true
configuration.location.automaticGeofenceRequests = true
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
return true
}
}
AppDelegate.m
ファイルの先頭にある BrazeLocation
モジュールをインポートします。Braze の構成に BrazeLocationProvider
インスタンスを追加し、構成に対するすべての変更が Braze(configuration:)
を呼び出す前に実行されるようにします。利用可能な構成については、BRZConfigurationLocation
を参照してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#import "AppDelegate.h"
@import BrazeKit;
@import BrazeLocation;
@implementation AppDelegate
#pragma mark - Lifecycle
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:brazeApiKey
endpoint:brazeEndpoint];
configuration.logger.level = BRZLoggerLevelInfo;
configuration.location.brazeLocationProvider = [[BrazeLocationProvider alloc] init];
configuration.location.automaticLocationCollection = YES;
configuration.location.geofencesEnabled = YES;
configuration.location.automaticGeofenceRequests = YES;
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
ステップ2:ユーザーの位置情報を記録する
次に、ユーザーが最後に知った場所をBrazeに記録する。以下の例では、BrazeインスタンスをAppDelegate
の変数として代入していると仮定している。
1
2
AppDelegate.braze?.user.setLastKnownLocation(latitude:latitude,
longitude:longitude)
1
2
3
4
5
AppDelegate.braze?.user.setLastKnownLocation(latitude:latitude,
longitude:longitude,
altitude:altitude,
horizontalAccuracy:horizontalAccuracy,
verticalAccuracy:verticalAccuracy)
1
2
3
4
[AppDelegate.braze.user setLastKnownLocationWithLatitude:latitude
longitude:longitude
horizontalAccuracy:horizontalAccuracy];
1
2
3
4
5
6
[AppDelegate.braze.user setLastKnownLocationWithLatitude:latitude
longitude:longitude
horizontalAccuracy:horizontalAccuracy
altitude:altitude
verticalAccuracy:verticalAccuracy];
詳細については、Braze.User.swift
を参照してください。
現在地を記録する
ユーザーの現在地を取得するには、ジオロケーションAPIの getCurrentPosition()
メソッドを使う。これにより、ユーザーはトラッキングを許可するかしないかを即座に選択することになる(すでに許可している場合を除く)。
1
2
3
4
5
6
7
8
9
10
11
12
13
import * as braze from "@braze/web-sdk";
function success(position) {
var coords = position.coords;
braze.getUser().setLastKnownLocation(
coords.latitude,
coords.longitude,
coords.accuracy,
coords.altitude,
coords.altitudeAccuracy
);
}
navigator.geolocation.getCurrentPosition(success);
Brazeにデータが送信される際、SDKはユーザーのIPアドレスから自動的にユーザーの国を検出できるようになった。詳細については、setLastKnownLocation() を参照のこと。
位置情報の追跡を続ける
ページが読み込まれている間、ユーザーの位置情報の追跡を継続的に行うには、geolocation APIの watchPosition()
メソッドを使う。このメソッドをトラッキング, 追跡すると、ユーザーにトラッキングの許可または不許可を即座に促す(すでに許可している場合を除く)。
もし彼らがオプトインすれば、位置情報が更新されるたびに成功コールバックが呼び出されるようになる。
1
2
3
4
5
6
7
8
9
10
11
12
function success(position) {
var coords = position.coords;
braze.getUser().setLastKnownLocation(
coords.latitude,
coords.longitude,
coords.accuracy,
coords.altitude,
coords.altitudeAccuracy
);
}
navigator.geolocation.watchPosition(success);
トラッキング追跡を無効にする方法については、Mozilla開発者向けドキュメントを参照のこと。