Skip to content

위치 추적

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);

현재 위치 로깅하기

연속 위치 추적을 비활성화한 경우에도 사용자의 현재 위치를 수동으로 기록할 수 있습니다. 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)
}

지속적인 위치 추적

사용자의 위치를 지속적으로 추적하려면 AndroidManifest.xml 파일에 다음 권한 중 하나 이상을 추가하여 앱의 위치 데이터 수집 의도를 선언해야 합니다.

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_collectionfalse 으로 설정합니다:

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단계: 프로젝트 구성

위치 추적을 인에이블하려면 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];

필수 조건

이 기능을 사용하려면 먼저 React Native Braze SDK를 통합해야 합니다.

마지막으로 알려진 위치 설정

사용자의 마지막으로 알려진 위치를 수동으로 설정하려면 setLastKnownLocation 메서드를 사용하십시오. 이것은 Braze SDK 외부에서 위치 데이터를 수집하는 경우 유용합니다.

1
Braze.setLastKnownLocation(LATITUDE, LONGITUDE, ALTITUDE, HORIZONTAL_ACCURACY, VERTICAL_ACCURACY);
  • Android에서는 latitudelongitude가 필요합니다. altitude, horizontalAccuracyverticalAccuracy는 선택 사항입니다.
  • iOS에서는 latitude, longitudehorizontalAccuracy이 필요합니다. altitudeverticalAccuracy는 선택 사항입니다.

크로스 플랫폼 호환성을 위해 최소한 latitude, longitudehorizontalAccuracy을 제공하십시오.

사용자 정의 위치 속성 설정

사용자 프로필에 사용자 정의 위치 속성을 설정하려면 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);
New Stuff!