지오펜스
Braze SDK에 지오펜스를 설정하는 방법을 알아보세요. 지오펜스는 특정 글로벌 위치를 중심으로 원을 형성하는 가상의 지리적 영역으로 위도, 경도, 반경을 결합하여 표현합니다.
필수 조건
이 기능을 사용하려면 먼저 Android Braze SDK를 통합해야 합니다. 또한 무음 푸시 알림을 설정해야 합니다.
지오펜스 설정하기
1단계: Braze에서 인에이블먼트하기
다음 위치 중 한 곳에서 앱에 지오펜스를 인에이블먼트할 수 있습니다:
위치 페이지에서 지오펜스를 인에이블먼트하려면 다음과 같이 하세요:
- Braze에서 오디언스 > 위치로 이동합니다.
- 작업 공간에서 지오펜싱이 인에이블된 앱의 수는 매핑 아래에 나열됩니다. 예를 들어 지오펜싱이 일부 앱에만 인에이블먼트된 경우 읽을 수 있습니다: 지오펜싱이 인에이블된 앱 5개 중 2개. 추가 앱을 인에이블하려면 지도 아래에서 현재 개수를 선택하세요.
- 지오펜스를 인에이블먼트할 앱을 선택한 다음 완료를 선택합니다 .

앱 설정 페이지에서 지오펜스를 인에이블하려면 다음과 같이 하세요:
- Braze에서 설정 > 앱 설정으로 이동합니다.
- 지오펜스를 인에이블하려는 앱을 선택합니다.
- 지오펜스 인에이블먼트에 체크한 다음 저장을 선택합니다 .

2단계: 업데이트 build.gradle
앱 수준 build.gradle에 android-sdk-location을 추가합니다. 또한 Google Play 서비스 설정 가이드를 사용하여 Google Play 서비스 위치 패키지를 추가합니다.
1
2
3
4
dependencies {
implementation "com.braze:android-sdk-location:+"
implementation "com.google.android.gms:play-services-location:${PLAY_SERVICES_VERSION}"
}
3단계: 매니페스트 업데이트
AndroidManifest.xml에 부팅, 세부 위치 및 백그라운드 위치 권한을 추가합니다.
1
2
3
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
백그라운드 위치 액세스 권한은 Android 10에 추가되었으며 모든 Android 10 이상 기기에서 앱이 백그라운드에 있는 동안 지오펜스가 작동하는 데 필요합니다.
AndroidManifest.xml 의 application 요소에 Braze 부팅 리시버를 추가합니다:
1
2
3
4
5
<receiver android:name="com.braze.BrazeBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
4단계: Braze 위치 수집 활성화
아직 Braze 위치 수집을 활성화하지 않았다면 braze.xml 파일을 업데이트하여 com_braze_enable_location_collection을 포함하고 해당 값이 true로 설정되어 있는지 확인합니다.
1
<bool name="com_braze_enable_location_collection">true</bool>
Braze Android SDK 버전 3.6.0부터 Braze 위치 수집은 기본적으로 비활성화됩니다.
Braze 위치 수집이 활성화된 경우 Braze 지오펜스가 활성화됩니다. 기본 위치 수집을 옵트아웃하고 싶지만 지오펜스를 계속 사용하려면 braze.xml에서 com_braze_geofences_enabled 키의 값을 true로 설정하여 com_braze_enable_location_collection 값과 독립적으로 이 기능을 선택적으로 활성화할 수 있습니다.
1
<bool name="com_braze_geofences_enabled">true</bool>
5단계: 최종 사용자로부터 위치 권한 얻기
Android M 이상 버전의 경우 위치 정보를 수집하거나 지오펜스를 등록하기 전에 최종사용자에게 위치 권한을 요청해야 합니다.
다음 호출을 추가하여 사용자가 앱에 위치 권한을 부여할 때 Braze에 알립니다.
1
Braze.getInstance(context).requestLocationInitialization();
1
Braze.getInstance(context).requestLocationInitialization()
이렇게 하면 SDK가 Braze 서버에 지오펜스를 요청하고 지오펜스 추적을 초기화합니다.
예제 구현은 샘플 애플리케이션의 RuntimePermissionUtils.java를 참조하세요.
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
public class RuntimePermissionUtils {
private static final String TAG = BrazeLogger.getBrazeLogTag(RuntimePermissionUtils.class);
public static final int DROIDBOY_PERMISSION_LOCATION = 40;
public static void handleOnRequestPermissionsResult(Context context, int requestCode, int[] grantResults) {
switch (requestCode) {
case DROIDBOY_PERMISSION_LOCATION:
// In Android Q, we require both FINE and BACKGROUND location permissions. Both
// are requested simultaneously.
if (areAllPermissionsGranted(grantResults)) {
Log.i(TAG, "Required location permissions granted.");
Toast.makeText(context, "Required location permissions granted.", Toast.LENGTH_SHORT).show();
Braze.getInstance(context).requestLocationInitialization();
} else {
Log.i(TAG, "Required location permissions NOT granted.");
Toast.makeText(context, "Required location permissions NOT granted.", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
private static boolean areAllPermissionsGranted(int[] grantResults) {
for (int grantResult : grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
}
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
object RuntimePermissionUtils {
private val TAG = BrazeLogger.getBrazeLogTag(RuntimePermissionUtils::class.java!!)
val DROIDBOY_PERMISSION_LOCATION = 40
fun handleOnRequestPermissionsResult(context: Context, requestCode: Int, grantResults: IntArray) {
when (requestCode) {
DROIDBOY_PERMISSION_LOCATION ->
// In Android Q, we require both FINE and BACKGROUND location permissions. Both
// are requested simultaneously.
if (areAllPermissionsGranted(grantResults)) {
Log.i(TAG, "Required location permissions granted.")
Toast.makeText(context, "Required location permissions granted.", Toast.LENGTH_SHORT).show()
Braze.getInstance(context).requestLocationInitialization()
} else {
Log.i(TAG, "Required location permissions NOT granted.")
Toast.makeText(context, "Required location permissions NOT granted.", Toast.LENGTH_SHORT).show()
}
else -> {
}
}
}
private fun areAllPermissionsGranted(grantResults: IntArray): Boolean {
for (grantResult in grantResults) {
if (grantResult != PackageManager.PERMISSION_GRANTED) {
return false
}
}
return true
}
}
앞의 샘플 코드는 다음을 통해 사용할 수 있습니다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
boolean hasAllPermissions = PermissionUtils.hasPermission(getApplicationContext(), Manifest.permission.ACCESS_BACKGROUND_LOCATION)
&& PermissionUtils.hasPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION);
if (!hasAllPermissions) {
// Request both BACKGROUND and FINE location permissions
requestPermissions(new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION},
RuntimePermissionUtils.DROIDBOY_PERMISSION_LOCATION);
}
} else {
if (!PermissionUtils.hasPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION)) {
// Request only FINE location permission
requestPermissions(new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION},
RuntimePermissionUtils.DROIDBOY_PERMISSION_LOCATION);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val hasAllPermissions = PermissionUtils.hasPermission(applicationContext, Manifest.permission.ACCESS_BACKGROUND_LOCATION)
&& PermissionUtils.hasPermission(applicationContext, Manifest.permission.ACCESS_FINE_LOCATION)
if (!hasAllPermissions) {
// Request both BACKGROUND and FINE location permissions
requestPermissions(arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_BACKGROUND_LOCATION),
RuntimePermissionUtils.DROIDBOY_PERMISSION_LOCATION)
}
} else {
if (!PermissionUtils.hasPermission(applicationContext, Manifest.permission.ACCESS_FINE_LOCATION)) {
// Request only FINE location permission
requestPermissions(arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION),
RuntimePermissionUtils.DROIDBOY_PERMISSION_LOCATION)
}
}
}
6단계: 지오펜스 업데이트 수동 요청(선택 사항)
기본적으로 Braze는 기기의 위치를 자동으로 검색하고 수집된 위치를 기반으로 지오펜스를 요청합니다. 그러나 대신 근거리 Braze 지오펜스를 검색하는 데 사용할 GPS 좌표를 수동으로 제공할 수 있습니다. Braze 지오펜스를 수동으로 요청하려면 자동 Braze 지오펜스 요청을 비활성화하고 요청을 위한 GPS 좌표를 제공해야 합니다.
Step 6.1: 자동 지오펜스 요청 비활성화
자동 Braze 지오펜스 요청은 braze.xml 파일에서 com_braze_automatic_geofence_requests_enabled를 false로 설정하여 비활성화할 수 있습니다.
1
<bool name="com_braze_automatic_geofence_requests_enabled">false</bool>
이 작업은 다음을 통해 런타임에서 수행할 수 있습니다.
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
.setAutomaticGeofenceRequestsEnabled(false);
Braze.configure(getApplicationContext(), brazeConfigBuilder.build());
1
2
3
val brazeConfigBuilder = BrazeConfig.Builder()
.setAutomaticGeofenceRequestsEnabled(false)
Braze.configure(applicationContext, brazeConfigBuilder.build())
Step 6.2: GPS 좌표로 Braze 지오펜스 수동 요청
Braze 지오펜스는 requestGeofences() 메서드를 통해 수동으로 요청됩니다.
1
Braze.getInstance(getApplicationContext()).requestGeofences(latitude, longitude);
1
Braze.getInstance(applicationContext).requestGeofences(33.078947, -116.601356)
지오펜스는 세션당 한 번만 요청할 수 있으며, SDK를 통해 자동으로 요청하거나 이 메서드를 사용하여 수동으로 요청할 수 있습니다.
푸시 투 동기화 인에이블먼트 사용
Braze는 백그라운드 푸시를 사용하여 지오펜스를 기기와 동기화합니다. 이 기능은 앱의 일부로 추가 통합이 필요하지 않으므로 대부분의 경우 코드 변경이 필요하지 않습니다.
그러나 애플리케이션이 중지된 경우 백그라운드 푸시를 받으면 백그라운드에서 애플리케이션이 실행되고 Application.onCreate() 메서드가 호출됩니다. 커스텀 Application.onCreate() 구현이 있는 경우 자동 서버 호출 및 백그라운드 푸시로 트리거하지 않으려는 기타 작업을 연기해야 합니다.
iOS 14부터, 지오펜스는 대략적인 위치 권한만 부여한 사용자에게 신뢰할 수 있게 작동하지 않습니다.
필수 조건
이 기능을 사용하려면 먼저 Swift Braze SDK를 통합해야 합니다.
지오펜스 설정
1단계: Braze에서 활성화
다음 위치 중 한 곳에서 앱에 지오펜스를 인에이블먼트할 수 있습니다:
위치 페이지에서 지오펜스를 인에이블먼트하려면 다음과 같이 하세요:
- Braze에서 오디언스 > 위치로 이동합니다.
- 작업 공간에서 지오펜싱이 인에이블된 앱의 수는 매핑 아래에 나열됩니다. 예를 들어 지오펜싱이 일부 앱에만 인에이블먼트된 경우 읽을 수 있습니다: 지오펜싱이 인에이블된 앱 5개 중 2개. 추가 앱을 인에이블하려면 지도 아래에서 현재 개수를 선택하세요.
- 지오펜스를 인에이블먼트할 앱을 선택한 다음 완료를 선택합니다 .

앱 설정 페이지에서 지오펜스를 인에이블하려면 다음과 같이 하세요:
- Braze에서 설정 > 앱 설정으로 이동합니다.
- 지오펜스를 인에이블하려는 앱을 선택합니다.
- 지오펜스 인에이블먼트에 체크한 다음 저장을 선택합니다 .

2단계: 앱의 위치 서비스를 활성화하세요
기본적으로, Braze 위치 서비스는 활성화되어 있지 않습니다. 앱에서 활성화하려면, 다음 단계를 완료하세요. 단계별 튜토리얼은 튜토리얼:에서 확인하세요. Braze 위치 및 지오펜스입니다.
2.1 단계: BrazeLocation 모듈 추가
Xcode에서 일반 탭을 엽니다. 프레임워크, 라이브러리 및 포함된 콘텐츠 아래에 BrazeLocation 모듈을 추가합니다.

2.2 단계: Info.plist 업데이트
info.plist에서, 애플리케이션이 위치를 추적해야 하는 이유를 설명하는 String 값을 다음 키 중 하나에 할당합니다. 이 문자열은 사용자가 위치 서비스 요청을 받을 때 표시되므로, 앱의 이 기능을 활성화하는 것의 가치를 명확히 설명해야 합니다.
NSLocationAlwaysAndWhenInUseUsageDescriptionNSLocationWhenInUseUsageDescription

Apple은 NSLocationAlwaysUsageDescription를 더 이상 지원하지 않습니다. 자세한 정보는 Apple의 개발자 문서를 참조하세요.
3단계: 코드에서 지오펜스를 활성화하세요
앱의 코드에서 location.geofencesEnabled을 true로 설정하여 configuration 객체에서 Braze 인스턴스를 초기화할 때 지오펜스를 활성화합니다. 다른 location 구성 옵션은 Braze Swift SDK 참조를 참조하세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
configuration.location.brazeLocationProvider = BrazeLocationProvider()
configuration.location.automaticLocationCollection = true
configuration.location.geofencesEnabled = true
configuration.location.automaticGeofenceRequests = true
// Additional configuration customization...
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
1
2
3
4
5
6
7
8
9
10
11
12
13
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;
// Additional configuration customization...
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
3.1 단계: 백그라운드 보고 활성화(선택 사항)
기본적으로, 지오펜스 이벤트는 앱이 포그라운드에 있거나 Always 권한이 있는 경우에만 모니터링됩니다. 이 권한은 모든 애플리케이션 상태를 모니터링합니다.
그러나 앱이 백그라운드에 있거나 When In Use 권한이 있는 경우에도 지오펜스 이벤트를 모니터링하도록 선택할 수 있습니다.
이 추가 지오펜스 이벤트를 모니터링하려면 Xcode 프로젝트를 열고 서명 & 기능으로 이동합니다. 백그라운드 모드에서 위치 업데이트를 체크합니다.

다음으로, 앱의 코드에서 allowBackgroundGeofenceUpdates을 활성화합니다. 이렇게 하면 Braze가 위치 업데이트를 지속적으로 모니터링하여 앱의 “사용 중” 상태를 확장할 수 있습니다. 이 설정은 앱이 백그라운드에 있을 때만 작동합니다. 앱이 다시 열리면 모든 기존 백그라운드 프로세스가 일시 중지되고 포그라운드 프로세스가 우선시됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// Additional configuration customization...
// Enable background geofence reporting with `When In Use` authorization.
configuration.location.allowBackgroundGeofenceUpdates = true
// Determines the number of meters required to trigger a new location update.
configuration.location.distanceFilter = 8000
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
1
2
3
4
5
6
7
8
9
10
11
12
13
14
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:brazeApiKey
endpoint:brazeEndpoint];
// Additional configuration customization...
// Enable background geofence reporting with `When In Use` authorization.
configuration.location.allowBackgroundGeofenceUpdates = YES;
// Determines the number of meters required to trigger a new location update.
configuration.location.distanceFilter = 8000;
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
배터리 소모 및 속도 제한을 방지하기 위해 distanceFilter를 앱의 특정 요구 사항에 맞는 값으로 구성합니다. distanceFilter를 더 높은 값으로 설정하면 앱에서 사용자의 위치를 너무 자주 요청하는 것을 방지할 수 있습니다.
4단계: 권한 요청
사용자에게 권한을 요청할 때 When In Use 또는 Always 권한 중 하나를 요청합니다.
When In Use 인증을 요청하려면 requestWhenInUseAuthorization() 방법을 사용합니다:
1
2
var locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()
1
2
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestWhenInUseAuthorization];
기본적으로 requestAlwaysAuthorization()은 앱에 When In Use 권한만 부여하고, 일정 시간이 지나면 사용자에게 Always 권한 부여를 요청하는 프롬프트를 다시 표시합니다.
그러나 먼저 requestWhenInUseAuthorization()을 호출한 다음 초기 When In Use 권한을 받은 후 requestAlwaysAuthorization()를 호출하여 사용자에게 즉시 프롬프트를 표시하도록 선택할 수 있습니다.
Always 권한은 한 번만 즉시 요청할 수 있습니다.
1
2
var locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
1
2
CLLocationManager *locationManager = [[CLLocationManager alloc] init];
[locationManager requestAlwaysAuthorization];
5단계: 백그라운드 푸시 확인
Braze는 백그라운드 푸시 알림을 사용하여 지오펜스를 기기와 동기화합니다. 서버에서 지오펜스 업데이트가 제대로 처리되도록 무음 푸시 알림 설정에 대한 지침을 따르십시오.
Braze 지오펜스 동기화 알림을 수신할 때 애플리케이션이 원치 않는 작업을 수행하지 않도록 하려면 무음 푸시 무시 기사를 따르십시오.
지오펜스 수동 요청
Braze SDK가 백엔드에서 지오펜스를 요청할 때, 사용자의 현재 위치를 보고하고 보고된 위치를 기반으로 최적의 관련성이 있다고 판단되는 지오펜스를 수신합니다.
SDK가 가장 관련성 높은 지오펜스를 수신하기 위해 보고하는 위치를 제어하려면 원하는 좌표를 제공하여 지오펜스를 수동으로 요청할 수 있습니다.
1단계: automaticGeofenceRequests를 false로 설정
configuration 오브젝트에서 init(configuration)로 전달되는 자동 지오펜스 요청을 비활성화할 수 있습니다. automaticGeofenceRequests를 false로 설정합니다.
1
2
3
4
5
6
7
let configuration = Braze.Configuration(
apiKey: "{BRAZE_API_KEY}",
endpoint: "{BRAZE_ENDPOINT}"
)
configuration.automaticGeofencesRequest = false
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
1
2
3
4
5
6
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:{BRAZE_API_KEY}
endpoint:{BRAZE_ENDPOINT}];
configuration.automaticGeofencesRequest = NO;
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
2단계: requestGeofences을(를) 수동으로 호출하십시오.
코드에서 적절한 위도와 경도로 지오펜스를 요청하십시오.
1
AppDelegate.braze?.requestGeofences(latitude: latitude, longitude: longitude)
1
2
[AppDelegate.braze requestGeofencesWithLatitude:latitude
longitude:longitude];
자주 묻는 질문(FAQ)
내 기기에서 지오펜스를 수신하지 못하는 이유는 무엇입니까?
기기에서 지오펜스가 수신되고 있는지 확인하려면 먼저 SDK 디버거 도구를 사용하여 SDK의 로그를 확인하십시오. 그런 다음 서버에서 지오펜스가 성공적으로 수신되고 있는지와 주목할 만한 오류가 있는지 확인할 수 있습니다.
아래는 기기에서 지오펜스가 수신되지 않을 수 있는 다른 가능한 이유입니다:
iOS 운영 체제의 제한
iOS 운영 체제는 주어진 앱에 대해 최대 20개의 지오펜스를 저장할 수 있습니다. 지오펜스를 활성화하면 Braze는 사용 가능한 20개의 슬롯 중 일부를 사용합니다.
앱의 다른 지오펜스 관련 기능에 대한 우발적이거나 원치 않는 중단을 방지하기 위해 대시보드에서 개별 앱에 대한 위치 지오펜스를 활성화해야 합니다. 위치 서비스가 올바르게 작동하려면 앱이 사용 가능한 모든 지오펜스 지점을 사용하고 있지 않은지 확인합니다.
사용량 제한
Braze는 불필요한 요청을 피하기 위해 세션당 1개의 지오펜스 새로고침 한도를 가지고 있습니다.
Braze와 비-Braze 지오펜스 기능을 모두 사용하는 경우 어떻게 작동합니까?
위에서 언급했듯이, iOS는 단일 앱이 최대 20개의 지오펜스를 저장할 수 있도록 허용합니다. 이 저장소는 Braze와 비-Braze 지오펜스가 공유하며 CLLocationManager에 의해 관리됩니다.
예를 들어, 앱에 20개의 비-Braze 지오펜스가 포함되어 있다면 Braze 지오펜스를 추적할 저장소가 없게 됩니다(또는 그 반대의 경우). 새로운 지오펜스를 수신하려면 Apple의 위치 API를 사용하여 기기에서 기존 지오펜스 중 일부의 모니터링을 중지해야 합니다.
기기가 오프라인일 때 지오펜스 기능을 사용할 수 있습니까?
기기는 새로고침이 발생할 때만 인터넷에 연결되어 있어야 합니다. 서버에서 지오펜스를 성공적으로 수신한 후에는 기기가 오프라인일지라도 지오펜스 진입 또는 종료를 기록할 수 있습니다. 이는 기기의 위치가 인터넷 연결과 별개로 작동하기 때문입니다.
예를 들어, 기기가 세션 시작 시 지오펜스를 성공적으로 수신하고 등록한 후 오프라인 상태가 되었다고 가정해 보십시오. 그것이 등록된 지오펜스 중 하나에 들어가면, Braze 캠페인을 트리거할 수 있습니다.
내 앱이 백그라운드에서 실행 중이거나 종료되었을 때 지오펜스가 모니터링되지 않는 이유는 무엇인가요?
Always 권한 없이 Apple은 앱이 사용 중이지 않을 때 위치 서비스가 실행되는 것을 제한합니다. 이는 운영 체제에 의해 시행되며 Braze SDK의 제어 범위를 벗어납니다. Braze는 앱이 백그라운드에서 서비스를 실행할 수 있도록 별도의 구성을 제공하지만, 사용자의 명시적인 권한을 받지 않고 종료된 앱에 대한 이러한 제한을 우회할 방법은 없습니다.
필수 조건
이 기능을 사용하기 전에 .NET MAUI Braze SDK를 통합해야 합니다. 추가로, 무음 푸시 알림을 설정해야 합니다.
필수 조건
이것은 지오펜스를 사용하기 위해 필요한 최소 SDK 버전입니다:
지오펜스 설정
1단계: Braze에서 활성화
다음 위치 중 한 곳에서 앱에 지오펜스를 인에이블먼트할 수 있습니다:
위치 페이지에서 지오펜스를 인에이블먼트하려면 다음과 같이 하세요:
- Braze에서 오디언스 > 위치로 이동합니다.
- 작업 공간에서 지오펜싱이 인에이블된 앱의 수는 매핑 아래에 나열됩니다. 예를 들어 지오펜싱이 일부 앱에만 인에이블먼트된 경우 읽을 수 있습니다: 지오펜싱이 인에이블된 앱 5개 중 2개. 추가 앱을 인에이블하려면 지도 아래에서 현재 개수를 선택하세요.
- 지오펜스를 인에이블먼트할 앱을 선택한 다음 완료를 선택합니다 .

앱 설정 페이지에서 지오펜스를 인에이블하려면 다음과 같이 하세요:
- Braze에서 설정 > 앱 설정으로 이동합니다.
- 지오펜스를 인에이블하려는 앱을 선택합니다.
- 지오펜스 인에이블먼트에 체크한 다음 저장을 선택합니다 .

다음으로, Android 또는 iOS에 대한 플랫폼별 지침을 따르세요:
2단계: 종속성 추가
다음 NuGet 패키지 참조를 프로젝트에 추가하세요:
BrazePlatform.BrazeAndroidLocationBinding
3단계: AndroidManifest.xml 업데이트
다음 권한을 AndroidManifest.xml에 추가하세요:
1
2
3
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
백그라운드 위치 접근 권한은 앱이 백그라운드에 있을 때 지오펜스가 작동하도록 필요합니다. Android 10+ 장치에서.
4단계: Braze 위치 수집 구성
Braze 구성에서 위치 수집이 활성화되어 있는지 확인하세요. 자동 위치 수집 없이 지오펜스를 활성화하려면, Braze.xml에서 다음을 설정하세요:
1
2
<bool name="com_braze_enable_location_collection">true</bool>
<bool name="com_braze_geofences_enabled">true</bool>
5단계: 런타임에 위치 권한 요청
지오펜스를 등록하기 전에 사용자에게 위치 권한을 요청해야 합니다. C# 코드에서 다음 패턴을 사용하세요:
1
2
3
4
5
6
7
8
9
10
11
12
using AndroidX.Core.App;
using AndroidX.Core.Content;
private void RequestLocationPermission()
{
// ...existing code for checking and requesting permissions...
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
// ...existing code for handling permission result...
}
권한이 부여된 후, Braze 위치 수집을 초기화하세요:
1
Braze.GetInstance(this).RequestLocationInitialization();
Step 6: 지오펜스 업데이트 수동 요청(선택 사항)
특정 위치에 대한 지오펜스를 수동으로 요청하려면:
1
Braze.GetInstance(this).RequestGeofences(latitude, longitude);
지오펜스는 세션당 한 번만 요청할 수 있으며, SDK를 통해 자동으로 요청하거나 이 메서드를 사용하여 수동으로 요청할 수 있습니다.
2단계: 종속성 추가
다음 NuGet 패키지 참조를 프로젝트에 추가하세요:
Braze.iOS.BrazeLocation
3단계: Info.plist에서 위치 사용 구성
귀하의 Info.plist에서 위치 서비스에 대한 사용 설명 문자열을 추가하세요:
1
2
3
4
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app uses your location to enable geofences and location-based messaging.</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app uses your location to enable geofences and location-based messaging.</string>
Apple은 NSLocationAlwaysUsageDescription을 사용 중단했습니다. 위의 키를 iOS 14+에서 사용하세요.
4단계: Braze 구성에서 지오펜스를 활성화하세요.
앱 시작 코드 (e.g., App.xaml.cs)에서 Braze를 지오펜스가 활성화된 상태로 구성하세요:
1
2
3
4
5
6
7
8
9
10
using BrazeKit;
using BrazeLocation;
var configuration = new BRZConfiguration("<BRAZE_API_KEY>", "<BRAZE_ENDPOINT>");
configuration.Location.BrazeLocationProvider = new BrazeLocationProvider();
configuration.Location.AutomaticLocationCollection = true;
configuration.Location.GeofencesEnabled = true;
configuration.Location.AutomaticGeofenceRequests = true;
// ...other configuration...
var braze = new Braze(configuration);
5단계: 백그라운드 위치 업데이트 활성화 (선택 사항)
백그라운드에서 지오펜스를 모니터링하려면, 위치 업데이트 백그라운드 모드를 활성화하고 다음 구성을 Info.plist에 추가하세요:
1
2
3
4
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
그런 다음, Braze 구성에서 다음을 설정하세요:
1
2
configuration.Location.AllowBackgroundGeofenceUpdates = true;
configuration.Location.DistanceFilter = 8000; // meters
배터리 소모를 피하기 위해 DistanceFilter를 앱의 필요에 맞는 값으로 설정하세요.
Step 6: 위치 권한 요청
사용자에게 When In Use 또는 Always 권한을 요청하세요:
1
2
3
4
5
6
using CoreLocation;
var locationManager = new CLLocationManager();
locationManager.RequestWhenInUseAuthorization();
// or
locationManager.RequestAlwaysAuthorization();
Always 권한이 없으면, iOS는 앱이 사용 중이지 않을 때 위치 서비스의 실행을 제한합니다. 이는 운영 체제에 의해 시행되며 Braze SDK로 우회할 수 없습니다.
지오펜스는 React Native SDK에서 iOS와 Android 모두에서 지원됩니다. requestLocationInitialization 메소드는 Android 전용이며 iOS에서는 필요하지 않습니다. requestGeofences 메소드는 두 플랫폼 모두에서 사용할 수 있습니다. 기본적으로 SDK는 위치가 사용 가능할 때 지오펜스를 자동으로 요청하고 모니터링할 수 있습니다. 이 자동 구성을 신뢰하거나 requestGeofences를 호출하여 수동으로 요청할 수 있습니다.
필수 조건
이 기능을 사용하려면 먼저 React Native Braze SDK를 통합해야 합니다. Android에서는 지오펜스 동기화를 위해 조용한 푸시 알림 설정이 필요합니다.
지오펜스 설정
1단계: Braze에서 활성화
다음 위치 중 한 곳에서 앱에 지오펜스를 인에이블먼트할 수 있습니다:
위치 페이지에서 지오펜스를 인에이블먼트하려면 다음과 같이 하세요:
- Braze에서 오디언스 > 위치로 이동합니다.
- 작업 공간에서 지오펜싱이 인에이블된 앱의 수는 매핑 아래에 나열됩니다. 예를 들어 지오펜싱이 일부 앱에만 인에이블먼트된 경우 읽을 수 있습니다: 지오펜싱이 인에이블된 앱 5개 중 2개. 추가 앱을 인에이블하려면 지도 아래에서 현재 개수를 선택하세요.
- 지오펜스를 인에이블먼트할 앱을 선택한 다음 완료를 선택합니다 .

앱 설정 페이지에서 지오펜스를 인에이블하려면 다음과 같이 하세요:
- Braze에서 설정 > 앱 설정으로 이동합니다.
- 지오펜스를 인에이블하려는 앱을 선택합니다.
- 지오펜스 인에이블먼트에 체크한 다음 저장을 선택합니다 .

2단계: 네이티브 Android 설정 완료
React Native SDK가 네이티브 Braze Android SDK를 사용하므로, 프로젝트에 대한 네이티브 Android 지오펜스 설정을 완료하십시오. 이 단계의 iOS에 해당하는 내용은 네이티브 Swift SDK 지오펜스 가이드(단계 2.2에서 3.1)에 포함되어 있습니다. 단계 2.1(브레이즈 위치 모듈 추가)은 BrazeLocation이 Braze React Native SDK에 이미 암묵적으로 포함되어 있기 때문에 React Native에서는 필요하지 않습니다.
- 업데이트
build.gradle:android-sdk-location및 Google Play 서비스 위치를 추가하십시오. Android 지오펜스를 참조하십시오. - 매니페스트 업데이트: 위치 권한 및 Braze 부트 수신기를 추가하십시오. Android 지오펜스를 참조하십시오.
- Braze 위치 수집 활성화:
braze.xml파일을 업데이트하십시오. Android 지오펜스를 참조하십시오.
3단계: 네이티브 iOS 설정 완료
React Native SDK는 네이티브 Braze iOS SDK를 사용하므로, 프로젝트에 대한 네이티브 iOS 지오펜스 설정을 완료하려면 2.2단계부터 시작하여 네이티브 Swift SDK 지침을 따르십시오: Info.plist에 위치 사용 설명을 업데이트하고(2.2단계), Braze 구성에서 지오펜스를 활성화하십시오 automaticGeofenceRequests = true(3단계); 선택적으로 백그라운드 보고를 활성화하십시오(3.1단계). 2.1단계(브레이즈 위치 모듈 추가)는 필요하지 않습니다. BrazeLocation은 이미 Braze React Native SDK에 암묵적으로 포함되어 있습니다. iOS 지오펜스, 2.2단계에서 3.1단계까지를 참조하십시오.
4단계: JavaScript에서 지오펜스 요청하기
Android에서: 사용자가 위치 권한을 부여한 후, requestLocationInitialization()를 호출하여 Braze 위치 기능을 초기화하고 Braze 서버에서 지오펜스를 요청하십시오. 이 메서드는 iOS에서 지원되지 않으며 iOS에 필요하지 않습니다.
iOS에서: 동등한 것은 네이티브 Swift 또는 Objective-C Braze 구성에서 automaticGeofenceRequests 구성을 활성화하는 것입니다(3단계 참조). 그것이 활성화되면, SDK는 위치가 사용 가능할 때 자동으로 지오펜스를 요청하고 모니터링합니다. requestLocationInitialization에 해당하는 JavaScript 호출은 필요하지 않습니다.
1
2
3
4
import Braze from '@braze/react-native-sdk';
// Android only: call this after the user grants location permission
Braze.requestLocationInitialization();
5단계: 지오펜스를 수동으로 요청하기(선택 사항)
iOS와 Android 모두에서, requestGeofences을 사용하여 특정 GPS 좌표에 대한 지오펜스 업데이트를 수동으로 요청할 수 있습니다. 기본적으로 Braze는 장치의 위치를 자동으로 검색하고 지오펜스를 요청합니다. 대신 좌표를 수동으로 제공하려면:
- 자동 지오펜스 요청 비활성화. Android에서는
com_braze_automatic_geofence_requests_enabled을false로 설정하십시오braze.xml에서. iOS에서는 Braze 구성에서automaticGeofenceRequests를false로 설정하십시오. - 원하는 위도와 경도로
requestGeofences을 호출하십시오:
1
2
3
import Braze from '@braze/react-native-sdk';
Braze.requestGeofences(33.078947, -116.601356);
지오펜스는 세션당 한 번만 요청할 수 있으며, SDK를 통해 자동으로 요청하거나 이 메서드를 사용하여 수동으로 요청할 수 있습니다.
GitHub 에서 이 페이지를 편집합니다.