위치 추적
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)
}
지속적인 위치 추적
안드로이드 마시멜로부터는 사용자에게 위치 추적에 대한 명시적인 동의 메시지를 표시해야 합니다. 이렇게 하면 다음 세션이 시작될 때 Braze에서 위치 추적을 시작할 수 있습니다. 이는 AndroidManifest.xml
에서 위치 권한만 선언하면 되었던 이전 버전의 Android와는 다릅니다.
사용자의 위치를 지속적으로 추적하려면 AndroidManifest.xml
파일에 다음 권한 중 하나 이상을 추가하여 앱의 위치 데이터 수집 의도를 선언해야 합니다.
권한 | 설명 |
---|---|
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 위치 기능을 사용할 때, 위치 서비스 사용 권한을 요청하는 것은 애플리케이션의 책임입니다. Apple Developer를 검토하세요: 사용자 위치 서비스에 인증 요청하기.
위치 추적을 사용하려면 Xcode 프로젝트를 열고 앱을 선택합니다. 일반 탭에서 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에 기록합니다. 다음 예제에서는 AppDelegate
에 Braze 인스턴스를 변수로 할당했다고 가정합니다.
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()을 참조하세요.
지속적인 위치 추적
페이지를 로드하는 동안 사용자의 위치를 지속적으로 추적하려면 지리적 위치 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 개발자 문서를 참조하세요.