위치 추적
Braze SDK를 통해 위치를 추적하는 방법을 알아보세요.
현재 위치 로깅하기
사용자의 현재 위치를 가져오려면 지리 위치 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로 전송되면 소프트웨어 개발 키트에서 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 개발자 문서를 참조하세요.
현재 위치 로깅하기
연속 위치 추적을 비활성화한 경우에도 사용자의 현재 위치를 수동으로 기록할 수 있습니다. 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 마시멜로부터는 사용자에게 위치 추적을 명시적으로 옵트인하라는 메시지를 표시해야 합니다. 이렇게 하면 다음 세션이 시작될 때 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 개발자를 검토하세요: 사용자 위치 서비스에 인증 요청하기.
위치 추적을 인에이블하려면 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를 참조하세요.
필수 조건
이 기능을 사용하려면 먼저 React Native Braze SDK를 통합해야 합니다.
마지막으로 알려진 위치 설정
사용자의 마지막으로 알려진 위치를 수동으로 설정하려면 setLastKnownLocation 메서드를 사용하십시오. 이것은 Braze SDK 외부에서 위치 데이터를 수집하는 경우 유용합니다.
1
Braze.setLastKnownLocation(LATITUDE, LONGITUDE, ALTITUDE, HORIZONTAL_ACCURACY, VERTICAL_ACCURACY);
- Android에서는
latitude및longitude가 필요합니다.altitude,horizontalAccuracy및verticalAccuracy는 선택 사항입니다. - iOS에서는
latitude,longitude및horizontalAccuracy이 필요합니다.altitude및verticalAccuracy는 선택 사항입니다.
크로스 플랫폼 호환성을 위해 최소한 latitude, longitude 및 horizontalAccuracy을 제공하십시오.
사용자 정의 위치 속성 설정
사용자 프로필에 사용자 정의 위치 속성을 설정하려면 setLocationCustomAttribute 메서드를 사용하십시오.
1
Braze.setLocationCustomAttribute("favorite_restaurant", 40.7128, -74.0060, optionalCallback);
위치 초기화 요청 (Android 전용)
사용자가 위치 권한을 부여한 후 requestLocationInitialization을 호출하여 Android에서 Braze 위치 기능을 초기화하십시오. 이 메서드는 iOS에서 지원되지 않으며 iOS 지오펜스 또는 위치 기능에 필요하지 않습니다.
1
Braze.requestLocationInitialization();
지오펜스
지오펜스는 iOS와 Android 모두에서 지원됩니다. 기본적으로 Braze SDK는 위치가 사용 가능할 때 지오펜스를 자동으로 요청하고 모니터링할 수 있습니다. 대부분의 통합에 대해 이 자동 구성을 신뢰할 수 있습니다.
지오펜스 수동 요청
특정 GPS 좌표에 대한 지오펜스 업데이트를 수동으로 요청하려면 requestGeofences을 사용하십시오. 이것은 iOS와 Android 모두에서 사용할 수 있습니다. 이 메서드를 사용하는 경우 SDK가 수동 요청을 덮어쓰지 않도록 기본 구성에서 자동 지오펜스 요청을 비활성화하십시오.
1
Braze.requestGeofences(LATITUDE, LONGITUDE);
GitHub 에서 이 페이지를 편집합니다.