Skip to content

위치 추적

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

지속적인 위치 추적

사용자의 위치를 지속적으로 추적하려면 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];

현재 위치 기록하기

사용자의 현재 위치를 가져오려면 지리적 위치 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);
이 페이지가 얼마나 도움이 되었나요?
New Stuff!