Braze 소프트웨어 개발 키트 통합
Braze SDK를 통합하는 방법을 알아보세요. 각 SDK는 자체 공개 GitHub 리포지토리에서 호스팅되며, 여기에는 Braze 기능을 테스트하거나 자체 애플리케이션과 함께 구현하는 데 사용할 수 있는 완전히 빌드 가능한 샘플 앱이 포함되어 있습니다. 자세히 알아보려면 참조, 리포지토리 및 샘플 앱을 참조하세요. SDK에 대한 자세한 내용은 시작하기를 참조하세요: 통합 개요.
SDK를 통합한 후에는 SDK 인증을 인에이블하여 무단 SDK 요청을 방지함으로써 추가적인 보안 계층을 적용할 수 있습니다. 소프트웨어 개발 키트 인증은 웹, Android, 스위프트, React Native, Flutter, Unity, Cordova, .NET MAUI(Xamarin), 엑스포에서 사용할 수 있습니다.
웹 Braze SDK에 대하여
웹 Braze SDK를 사용하면 분석을 수집하고 웹 사용자에게 풍부한 인앱 메시지, 푸시 및 콘텐츠 카드 메시지를 표시할 수 있습니다. 자세한 내용은 Braze JavaScript 참조 설명서를 참조하십시오.
이 가이드는 Braze Web SDK 4.0.0+의 코드 샘플을 사용합니다. 최신 웹 SDK 버전으로 업그레이드하려면 SDK 업그레이드 가이드를 참조하세요.
웹 SDK 통합
다음 방법을 사용하여 웹 Braze SDK를 통합할 수 있습니다. 추가 옵션은 기타 통합 방법을 참조하십시오.
- 코드 기반 통합: 선호하는 패키지 관리자 또는 Braze CDN을 사용하여 코드베이스에 웹 Braze SDK를 직접 통합하십시오. 이렇게 하면 SDK가 로드되고 구성되는 방식을 완전히 제어할 수 있습니다.
- Google 태그 관리자: 사이트의 코드를 수정하지 않고 웹 Braze SDK를 통합할 수 있는 코드 없는 솔루션입니다. 자세한 내용은 Braze SDK와 함께하는 Google 태그 관리자를 참조하십시오.
NPM 통합 방법을 사용하는 것을 권장합니다. 이점으로는 SDK 라이브러리를 웹사이트에 로컬로 저장하고, 광고 차단기 확장 프로그램으로부터 면역을 제공하며, 번들러 지원의 일환으로 로드 시간을 단축하는 데 기여하는 것이 포함됩니다.
1단계: Braze 라이브러리 설치
다음 방법 중 하나를 사용하여 Braze 라이브러리를 설치할 수 있습니다. 그러나 웹사이트가 Content-Security-Policy을 사용하는 경우 계속하기 전에 콘텐츠 보안 정책을 검토하십시오.
대부분의 광고 차단기가 Braze 웹 SDK를 차단하지 않지만, 일부 더 제한적인 광고 차단기는 문제를 일으키는 것으로 알려져 있습니다.
사이트에서 NPM 또는 Yarn 패키지 관리자를 사용하는 경우 Braze NPM 패키지를 종속성으로 추가할 수 있습니다.
이제 v3.0.0부터 Typescript 정의가 포함됩니다. 2.x에서 3.x로 업그레이드할 때 참고할 사항은 체인지로그를 참조하세요.
1
2
3
npm install --save @braze/web-sdk
# or, using yarn:
# yarn add @braze/web-sdk
설치가 완료되면 일반적인 방법으로 라이브러리의 import 또는 require 작업을 수행할 수 있습니다.
1
2
3
import * as braze from "@braze/web-sdk";
// or, using `require`
const braze = require("@braze/web-sdk");
라이브러리를 비동기적으로 로드하는 CDN 호스팅 스크립트를 참조하여 Braze 웹 SDK를 HTML에 직접 추가합니다.
Safari의 기본 교차 사이트 추적 방지 설정은 CDN 통합 방법을 사용할 때 배너 및 콘텐츠 카드와 같은 인앱 메시지 유형이 표시되지 않도록 할 수 있습니다. 이 문제를 피하려면 NPM 통합 방법을 사용하여 Safari가 이러한 메시지를 교차 사이트 트래픽으로 분류하지 않도록 하고 모든 지원되는 브라우저에서 웹 사용자가 이를 볼 수 있도록 하십시오.
2단계: SDK 초기화
Braze 웹 SDK가 웹사이트에 추가된 후, Braze 대시보드 내의 설정 > 앱 설정에서 찾은 API 키 및 SDK 엔드포인트 URL로 라이브러리를 초기화하십시오. braze.initialize()에 대한 옵션의 전체 목록과 다른 JavaScript 방법은 Braze JavaScript 설명서를 참조하십시오.
웹 SDK 요청을 위한 커스텀 도메인은 지원되지 않습니다: 웹 SDK baseUrl는 Braze SDK 엔드포인트여야 합니다(예: sdk.iad-05.braze.com). Braze는 고객 소유 도메인을 통해 CNAME 레코드를 사용하여 웹 SDK 트래픽을 라우팅하는 것을 지원하지 않습니다. 웹 SDK 요청이 귀하의 도메인에서 시작되도록 하려면 Braze 지원팀에 문의하십시오.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// initialize the SDK
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE",
enableLogging: false, // set to `true` for debugging
allowUserSuppliedJavascript: false, // set to `true` to support custom HTML messages
});
// Enable automatic display of in-app messages
// Required if you want in-app messages to display automatically when triggered
braze.automaticallyShowInAppMessages();
// if you use Content Cards
braze.subscribeToContentCardsUpdates(function(cards){
// cards have been updated
});
// optionally set the current user's external ID before starting a new session
// you can also call `changeUser` later in the session after the user logs in
if (isLoggedIn){
braze.changeUser(userIdentifier);
}
// `openSession` should be called last - after `changeUser` and `automaticallyShowInAppMessages`
braze.openSession();
인앱 메시지 표시: 트리거될 때 인앱 메시지를 자동으로 표시하려면 braze.automaticallyShowInAppMessages()를 호출해야 합니다. 이 호출이 없으면 인앱 메시지가 자동으로 표시되지 않습니다. 메시지 표시를 수동으로 관리하려면 이 호출을 제거하고 대신 braze.subscribeToInAppMessage()를 사용하십시오. 자세한 정보는 인앱 메시지 전달를 참조하십시오.
익명 사용자의 세션 누락 문제 해결
“세션 누락” 동작이 보이거나 웹에서 익명으로 남아 있는 사용자의 세션을 추적할 수 없는 경우, 초기화 중에 braze.openSession()을 호출하는지 확인하십시오.
- 시나리오: 익명 사용자는 Braze ID를 반환할 수 있지만 세션 데이터는 비어 있거나 누락됩니다.
- 원인: 구현이
braze.openSession()를 호출하지 않습니다. - 해결: 항상 초기화 후
braze.openSession()를 호출하십시오(외부 ID를 설정한 경우braze.changeUser()후에 호출).
자세한 정보는 단계 2: SDK 초기화.
모바일 또는 웹 디바이스의 익명 사용자도 MAU에 포함될 수 있습니다. 따라서 조건부로 SDK를 로드하거나 초기화하여 이러한 사용자를 MAU 수에서 제외할 수 있습니다.
필수 조건
이 통합 방법을 사용하기 전에 Google Tag Manager에 대한 계정과 컨테이너를 생성해야 합니다.
1단계: 태그 템플릿 갤러리를 엽니다
Google Tag Manager에서 작업 공간을 선택한 다음 템플릿을 선택합니다. 태그 템플릿 창에서 갤러리 검색을 선택합니다.

2단계: 초기화 태그 템플릿을 추가합니다
템플릿 갤러리에서 braze-inc을 검색한 다음 Braze 초기화 태그를 선택합니다.

작업 공간에 추가 > 추가를 선택합니다.

3단계: 태그를 구성합니다
템플릿 섹션에서 새로 추가한 템플릿을 선택합니다.

연필 아이콘을 선택하여 태그 구성 드롭다운을 엽니다.

필수 최소 정보를 입력하세요:
| 필드 | 설명 |
|---|---|
| API 키 | Braze 대시보드의 Braze API 키에서 찾을 수 있는 정보입니다. 설정 > 앱 설정 아래에 있습니다. |
| API 엔드포인트 | Your REST endpoint URL. Your endpoint will depend on the Braze URL for your instance. |
| SDK 버전 | MAJOR.MINOR웹 Braze SDK의 가장 최근 버전이 체인지로그에 나열되어 있습니다. 예를 들어 최신 버전이 4.1.2인 경우 4.1을 입력합니다. 자세한 내용은 SDK 버전 관리에 대한 정보를 참조하세요. |
추가 초기화 설정을 위해 Braze 초기화 옵션을 선택하고 필요한 옵션을 선택하십시오.

4단계: 초기화 옵션 선택
Braze 초기화 태그는 다음 옵션을 노출합니다. 이들 대부분은 웹 SDK InitializationOptions에 직접 매핑되며, 일부는 초기화 중 태그가 호출할 웹 SDK 메서드에 해당합니다. 통합 요구 사항에 맞는 옵션을 선택하십시오:
| GTM 옵션 | 웹 SDK 구성 또는 메서드 | 설명 |
|---|---|---|
| HTML 인앱 메시지 허용 | allowUserSuppliedJavascript |
HTML 인앱 메시지, 배너 및 사용자 제공 JavaScript 클릭 작업을 활성화합니다. 사용자 정의 HTML을 사용하는 HTML 인앱 메시지 및 배너에 필요합니다. HTML 및 JavaScript 콘텐츠를 신뢰할 때만 이 기능을 활성화하십시오. 사용자 제공 JavaScript 실행을 허용합니다. |
| 앱 버전 번호 | appVersion, appVersionNumber |
세분화를 위한 앱 버전(예: 1.2.3.4). |
| 새 세션 자동 열기 | braze.openSession() |
SDK가 초기화된 후 이 메서드를 호출하여 새 세션을 엽니다. |
| 새 인앱 메시지 자동 표시 | braze.automaticallyShowInAppMessages() |
초기화 후 이 메서드를 호출하여 서버에서 도착한 새 인앱 메시지를 자동으로 표시합니다. |
| 자동 푸시 토큰 유지 관리 비활성화 | disablePushTokenMaintenance |
새 세션에서 Braze 백엔드와 푸시 토큰을 동기화하지 않도록 SDK를 중지합니다. |
| 자동 서비스 종사자 등록 비활성화 | manageServiceWorkerExternally |
서비스 종사자를 직접 등록하고 제어하는 경우 사용하십시오. |
| 쿠키 비활성화 | noCookies |
사용자/세션 데이터에 쿠키 대신 localStorage를 사용합니다. 교차 서브도메인 인식을 방지합니다. |
| 폰트 어썸 비활성화 | doNotLoadFontAwesome |
SDK가 CDN에서 Font Awesome을 로드하지 않도록 방지합니다. 사이트에 자체 Font Awesome이 있는 경우 사용하십시오. |
| SDK 인증 활성화 | enableSdkAuthentication |
SDK 인증을 활성화합니다. |
| 웹 SDK 로깅 활성화 | enableLogging |
디버깅을 위한 콘솔 로깅을 활성화합니다. 프로덕션 전에 제거하십시오. |
| 트리거된 메시지 간 최소 간격 | minimumIntervalBetweenTriggerActionsInSeconds |
트리거 작업 간 최소 초(기본값: 30). |
| 새 탭에서 카드 열기 | openCardsInNewTab |
기본 피드 UI를 사용할 때 콘텐츠 카드 링크를 새 탭에서 엽니다. |
| 서비스 종사자 위치 | serviceWorkerLocation |
서비스 종사자 파일의 사용자 지정 경로(기본값: /service-worker.js). |
| 세션 타임아웃 (초) | sessionTimeoutInSeconds |
세션 타임아웃(초) (기본값: 1800). |
Google Tag Manager Braze 초기화 태그를 사용할 때 커스텀 HTML 인앱 메시지를 활성화하려면 Braze 초기화 옵션에서 HTML 인앱 메시지 허용을 선택하세요. 이 체크박스는 braze.initialize()의 allowUserSuppliedJavascript 초기화 옵션에 매핑되며 true로 설정됩니다. Google Tag Manager Braze 초기화 태그는 옵션 이름 대신 이 레이블을 사용합니다.
GTM 템플릿에서 노출되지 않은 옵션(예: contentSecurityNonce, localization 또는 devicePropertyAllowlist)의 경우 런타임 초기화를 대신 사용하세요.
5단계: 모든 페이지에서 트리거로 설정
초기화 태그는 사이트의 모든 페이지에서 실행되어야 합니다. 이것은 Braze SDK 메서드를 사용하고 웹 푸시 분석을 기록할 수 있게 해줍니다.
Step 6: 통합을 확인하세요
다음 옵션 중 하나를 사용하여 통합을 확인할 수 있습니다:
- Option 1: Google Tag Manager의 디버깅 툴를 사용하여 Braze 초기화 태그가 구성된 페이지나 이벤트에서 올바르게 트리거되는지 확인할 수 있습니다.
- Option 2: 웹 페이지에서 Braze로 전송된 네트워크 요청을 확인하세요. 추가로, 전역
window.braze라이브러리가 이제 정의되어야 합니다.
봇 트래픽 필터링
MAU는 봇 사용자의 비율을 포함할 수 있으며, 이는 월간 활성 사용자 수를 부풀립니다. Braze 웹 SDK는 일부 일반 웹 크롤러(예: 검색 엔진 봇 및 소셜 미디어 미리보기 봇)에 대한 내장 감지를 포함하지만, SDK 업데이트만으로는 모든 새로운 봇을 일관되게 감지할 수 없으므로 강력한 솔루션으로 봇을 감지하는 데 적극적으로 대처하는 것이 특히 중요합니다.
SDK 측의 봇 감지의 한계
웹 SDK는 알려진 크롤러를 필터링하는 기본 사용자 에이전트 기반 봇 감지를 포함합니다. 그러나 이 접근 방식에는 한계가 있습니다:
- 새로운 봇이 지속적으로 등장합니다: AI 회사 및 기타 행위자들은 감지를 피하기 위해 자신을 위장할 수 있는 새로운 봇을 정기적으로 생성합니다.
- 사용자 에이전트 스푸핑: 정교한 봇은 합법적인 브라우저 사용자 에이전트를 모방할 수 있습니다.
- 커스텀 봇: 비기술적 사용자는 이제 대규모 언어 모델(LLM)을 사용하여 쉽게 봇을 생성할 수 있어 봇 행동이 예측 불가능해집니다.
봇 필터링 구현
아래에 설명된 솔루션은 일반적인 제안입니다. 봇 필터링 로직을 귀하의 고유한 환경 및 트래픽 패턴에 맞게 조정하십시오.
가장 강력한 솔루션은 Braze SDK를 초기화하기 전에 자체 봇 필터링 로직을 구현하는 것입니다. 일반적인 접근 방식에는 다음이 포함됩니다:
사용자 상호작용 요구
사용자가 쿠키 동의 배너를 수락하거나 스크롤하거나 클릭하는 등의 의미 있는 상호작용을 수행할 때까지 SDK 초기화를 지연하는 것을 고려하십시오. 이 접근 방식은 구현이 더 쉽고 봇 트래픽을 필터링하는 데 매우 효과적일 수 있습니다.
사용자 상호작용까지 SDK 초기화를 지연하면 배너와 콘텐츠 카드도 해당 상호작용이 발생할 때까지 표시되지 않을 수 있습니다.
커스텀 봇 감지
특정 봇 트래픽 패턴에 기반한 커스텀 감지를 구현하세요, 예를 들어:
- 트래픽에서 식별한 패턴에 대한 사용자 에이전트 문자열 분석
- 헤드리스 브라우저 지표 확인
- 서드파티 봇 감지 서비스 사용
- 귀하의 사이트에 특정한 행동 신호 모니터링
조건부 초기화 예시:
1
2
3
4
5
6
7
8
// Only initialize Braze if your custom bot detection determines this is not a bot
if (!isLikelyBot()) {
braze.initialize('YOUR-API-KEY-HERE', {
baseUrl: "YOUR-SDK-ENDPOINT-HERE"
});
braze.automaticallyShowInAppMessages();
braze.openSession();
}
Best practices
- MAU 데이터와 웹 트래픽 패턴을 정기적으로 분석하여 새로운 봇 행동을 식별하세요.
- 정상 사용자가 추적되지 않도록 봇 필터링을 철저히 테스트하세요.
- 환경에서 관찰한 봇 트래픽 패턴에 따라 필터링 로직을 업데이트하세요.
선택적 구성
로깅
로깅을 빠르게 활성화하려면 웹사이트 URL에 ?brazeLogging=true를 매개변수로 추가하면 됩니다. 또는 기본 또는 사용자 지정 로깅을 사용 설정할 수 있습니다. 모든 플랫폼에 대한 중앙 집중식 개요는 상세 로깅를 참조하세요.
기본 로깅
SDK가 초기화되기 전에 기본 디버깅 메시지를 JavaScript 콘솔에 기록하려면 enableLogging를 사용하세요.
1
enableLogging: true
방법은 다음과 유사해야 합니다:
1
2
3
4
5
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
enableLogging: true
});
braze.openSession();
SDK가 초기화된 후 기본 디버깅 메시지를 JavaScript 콘솔에 기록하려면 braze.toggleLogging()를 사용하세요. 방법은 다음과 유사해야 합니다:
1
2
3
4
5
6
braze.initialize('API-KEY', {
baseUrl: 'API-ENDPOINT',
});
braze.openSession();
...
braze.toggleLogging();
기본 로그는 모든 사용자에게 표시되므로 코드를 프로덕션에 출시하기 전에 비활성화하거나 setLogger로 전환합니다.
사용자 지정 로깅
JavaScript 콘솔에 커스텀 디버깅 메시지를 기록하려면 setLogger을 사용하세요. 기본 로그와 달리 이러한 로그는 사용자에게 표시되지 않습니다.
1
setLogger(loggerFunction: (message: STRING) => void): void
STRING 를 단일 문자열 매개변수로 메시지로 바꿉니다. 방법은 다음과 유사해야 합니다:
1
2
3
4
5
braze.initialize('API-KEY');
braze.setLogger(function(message) {
console.log("Braze Custom Logger: " + message);
});
braze.openSession();
SDK 업그레이드하기
이 가이드는 Braze Web SDK 4.0.0+의 코드 샘플을 사용합니다. 최신 웹 SDK 버전으로 업그레이드하려면 SDK 업그레이드 가이드를 참조하세요.
예를 들어, 콘텐츠 전송 네트워크에서 Braze Web SDK를 참조할 때, https://js.appboycdn.com/web-sdk/a.a/braze.min.js (기본 통합 지침에서 권장하는 대로) 사용자는 사이트를 새로 고칠 때 자동으로 소규모 업데이트(버그 수정 및 하위 호환 기능, 위의 예에서 a.a.a에서 a.a.z 버전)를 받습니다.
그러나 주요 변경 사항을 출시할 때는 통합에 영향을 미치지 않도록 Braze Web SDK를 수동으로 업그레이드해야 합니다. 또한, SDK를 다운로드하여 직접 호스팅하는 경우 자동으로 버전 업데이트를 받지 않으며 최신 기능과 버그 수정을 받으려면 수동으로 업그레이드해야 합니다.
RSS 리더 또는 원하는 서비스를 사용하여 릴리스 피드를 따라 최신 릴리스를 최신 상태로 유지할 수 있습니다. 웹 SDK 릴리스 내역에 대한 전체 설명은 체인지로그를 참조하세요. Braze 웹 SDK를 업그레이드하려면:
https://js.appboycdn.com/web-sdk/[OLD VERSION NUMBER]/braze.min.js의 버전 번호를 변경하거나 패키지 매니저의 종속성에서 Braze 라이브러리 버전을 업데이트합니다.- 웹 푸시가 통합된 경우 사이트의 서비스 종사자 파일을 업데이트합니다. 기본적으로 사이트의 루트 디렉토리 내
/service-worker.js에 있지만 일부 통합에서는 위치를 사용자 지정할 수 있습니다. 서비스 워커 파일을 호스팅하려면 루트 디렉터리에 액세스해야 합니다.
적절한 기능을 위해 이 두 파일을 서로 조정하여 업데이트해야 합니다.
기타 통합 방법
가속 모바일 페이지 (AMP)
See more
1단계: AMP 웹 푸시 스크립트 포함
다음 비동기 스크립트 태그를 기억합니다.
1
<script async custom-element="amp-web-push" src="https://cdn.ampproject.org/v0/amp-web-push-0.1.js"></script>
2단계: 구독 위젯 추가
사용자가 푸시를 구독하고 탈퇴할 수 있도록 하는 HTML 본문에 위젯을 추가하세요.
1
2
3
4
5
6
7
8
9
<!-- A subscription widget -->
<amp-web-push-widget visibility="unsubscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.subscribe">Subscribe to Notifications</button>
</amp-web-push-widget>
<!-- An unsubscription widget -->
<amp-web-push-widget visibility="subscribed" layout="fixed" width="250" height="80">
<button on="tap:amp-web-push.unsubscribe">Unsubscribe from Notifications</button>
</amp-web-push-widget>
3단계: helper-iframe 및 permission-dialog 추가
AMP 웹 푸시 구성 요소는 푸시 구독을 처리하기 위해 팝업을 생성하므로, 이 기능을 활성화하려면 다음 도우미 파일을 프로젝트에 추가해야 합니다:
4단계: 서비스 워커 파일 만들기
웹사이트의 루트 디렉토리에 service-worker.js 파일을 생성하고 다음 스니펫을 추가하세요:
5단계: AMP 웹 푸시 HTML 요소 구성
다음 amp-web-push HTML 요소를 HTML 본문에 추가하세요. apiKey 및 baseUrl를 쿼리 매개변수로 service-worker-URL에 추가해야 한다는 점을 염두에 두세요.
1
2
3
4
5
6
7
<amp-web-push
layout="nodisplay"
id="amp-web-push"
helper-iframe-url="FILE_PATH_TO_YOUR_HELPER_IFRAME"
permission-dialog-url="FILE_PATH_TO_YOUR_PERMISSION_DIALOG"
service-worker-url="FILE_PATH_TO_YOUR_SERVICE_WORKER?apiKey={YOUR_API_KEY}&baseUrl={YOUR_BASE_URL}"
>
비동기 모듈 정의 (AMD)
지원 비활성화
사이트에서 RequireJS 또는 다른 AMD 모듈 로더를 사용하는 경우, 이 목록의 다른 옵션 중 하나를 통해 Braze 웹 SDK를 로드하려는 경우, AMD 지원이 포함되지 않은 라이브러리 버전을 로드할 수 있습니다. 이 라이브러리 버전은 다음 CDN 위치에서 로드할 수 있습니다:
모듈 로더
RequireJS 또는 기타 AMD module-loaders를 사용하는 경우 라이브러리 사본을 자체 호스팅하고 다른 리소스와 마찬가지로 참조하는 것이 좋습니다.
1
2
3
4
5
6
require(['path/to/braze.min.js'], function(braze) {
braze.initialize('YOUR-API-KEY-HERE', { baseUrl: 'YOUR-SDK-ENDPOINT' });
// Required if you want in-app messages to display automatically
braze.automaticallyShowInAppMessages();
braze.openSession();
});
Electron
Electron은 웹 푸시 알림을 공식적으로 지원하지 않습니다(이 GitHub 이슈 참조). Braze에서 테스트하지 않은 다른 오픈 소스 해결 방법을 시도해 볼 수 있습니다.
Jest 프레임워크
Jest를 사용할 때 SyntaxError: Unexpected token 'export' 와 유사한 오류가 표시될 수 있습니다. 이 문제를 해결하려면 Braze SDK를 무시하도록 package.json에서 구성을 조정합니다.
1
2
3
4
5
"jest": {
"transformIgnorePatterns": [
"/node_modules/(?!@braze)"
]
}
SSR 프레임워크
Next.js과 같은 서버 사이드 렌더링 (SSR) 프레임워크를 사용하는 경우, SDK는 브라우저 환경에서 실행되도록 설계되었기 때문에 오류가 발생할 수 있습니다. SDK를 동적으로 가져오면 이러한 문제를 해결할 수 있습니다.
SDK에서 필요한 부분을 별도의 파일로 내보낸 다음, 해당 파일을 구성요소에 동적으로 가져오는 방식으로 트리 셰이킹의 이점을 유지할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// MyComponent/braze-exports.js
// export the parts of the SDK you need here
export { initialize, openSession } from "@braze/web-sdk";
// MyComponent/MyComponent.js
// import the functions you need from the braze exports file
useEffect(() => {
import("./braze-exports.js").then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
또는 웹팩을 사용하여 앱을 번들링하는 경우 매직 코멘트를 활용하여 SDK의 필요한 부분만 동적으로 가져올 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
// MyComponent.js
useEffect(() => {
import(
/* webpackExports: ["initialize", "openSession"] */
"@braze/web-sdk"
).then(({ initialize, openSession }) => {
initialize("YOUR-API-KEY-HERE", {
baseUrl: "YOUR-SDK-ENDPOINT",
enableLogging: true,
});
openSession();
});
}, []);
Tealium iQ
Tealium iQ는 기본적인 턴키 방식의 Braze 통합을 제공합니다. 통합을 구성하려면 Tealium 태그 관리 인터페이스에서 Braze를 검색하고 대시보드에서 웹 SDK API 키를 제공합니다.
자세한 내용이나 심층적인 Tealium 구성 지원이 필요하면, 통합 설명서를 확인하거나 Tealium 계정 매니저에게 문의하세요.
Vite
Vite를 사용할 때 순환 종속성 또는 Uncaught TypeError: Class extends value undefined is not a constructor or null에 대한 경고가 표시되는 경우 Braze SDK를 종속성 검색에서 제외해야 할 수 있습니다.
1
2
3
optimizeDeps: {
exclude: ['@braze/web-sdk']
},
기타 태그 관리자
Braze는 사용자 지정 HTML 태그 내의 통합 지침에 따라 다른 태그 관리 솔루션과도 호환될 수 있습니다. 이 솔루션을 평가하는 데 도움이 필요하면 Braze 담당자에게 문의하세요.
안드로이드 SDK 통합
1단계: Gradle 빌드 구성 업데이트
프로젝트의 리포지토리 구성(예: settings.gradle, settings.gradle.kts 또는 최상위 build.gradle)에서 mavenCentral()를 리포지토리 목록에 추가하세요. 이 구문은 Groovy와 Kotlin DSL 모두에 동일합니다.
1
2
3
repositories {
mavenCentral()
}
다음으로, Braze를 종속성에 추가하세요. 다음 예제에서 SDK_VERSION을 현재 버전의 Android Braze SDK로 교체하세요. 전체 버전 목록은 변경 로그를 참조하세요.
- Kotlin DSL(
build.gradle.kts)의 경우,implementation("...")구문을 사용하세요. - Groovy(
build.gradle)의 경우,implementation '...'구문을 사용하세요. - 버전 카탈로그의 경우,
gradle/libs.versions.toml파일에 항목을 추가하고 생성된 접근자를 사용하여 참조하세요.
Braze UI 구성 요소를 사용할 계획이 없다면, 종속성에 다음을 추가하세요.
1
2
3
4
dependencies {
implementation 'com.braze:android-sdk-base:SDK_VERSION' // (Required) Adds dependencies for the base Braze SDK.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
implementation("com.braze:android-sdk-base:SDK_VERSION") // (Required) Adds dependencies for the base Braze SDK.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
당신의 gradle/libs.versions.toml 파일에서:
1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-base = { group = "com.braze", name = "android-sdk-base", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
그런 다음, build.gradle 또는 build.gradle.kts 파일에 다음 종속성을 추가하세요. 이 구문은 Groovy와 Kotlin DSL 모두에 동일합니다.
1
2
3
4
dependencies {
implementation(libs.braze.android.sdk.base) // (Required) Adds dependencies for the base Braze SDK.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
Braze UI 구성 요소를 사용할 계획이라면, 종속성에 다음을 추가하세요.
1
2
3
4
dependencies {
implementation 'com.braze:android-sdk-ui:SDK_VERSION' // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation 'com.braze:android-sdk-location:SDK_VERSION' // (Optional) Adds dependencies for Braze location services.
}
1
2
3
4
dependencies {
implementation("com.braze:android-sdk-ui:SDK_VERSION") // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation("com.braze:android-sdk-location:SDK_VERSION") // (Optional) Adds dependencies for Braze location services.
}
당신의 gradle/libs.versions.toml 파일에서:
1
2
3
4
5
6
[versions]
braze = "SDK_VERSION"
[libraries]
braze-android-sdk-ui = { group = "com.braze", name = "android-sdk-ui", version.ref = "braze" }
braze-android-sdk-location = { group = "com.braze", name = "android-sdk-location", version.ref = "braze" }
그런 다음, build.gradle 또는 build.gradle.kts 파일에 다음 종속성을 추가하세요. 이 구문은 Groovy와 Kotlin DSL 모두에 동일합니다.
1
2
3
4
dependencies {
implementation(libs.braze.android.sdk.ui) // (Required) Adds dependencies for the Braze SDK and Braze UI components.
implementation(libs.braze.android.sdk.location) // (Optional) Adds dependencies for Braze location services.
}
2단계: 당신의 braze.xml을 구성하세요.
2019년 12월부터 커스텀 엔드포인트는 더 이상 제공되지 않으며, 기존 커스텀 엔드포인트가 있는 경우 계속 사용할 수 있습니다. 자세한 내용은 사용 가능한 엔드포인트 목록을 참조하십시오.
프로젝트의 res/values 폴더에 braze.xml 파일을 생성하세요. 특정 데이터 클러스터에 있거나 기존 커스텀 엔드포인트가 있는 경우 braze.xml 파일에서도 엔드포인트를 지정해야 합니다.
해당 파일의 내용은 다음 코드 스니펫과 유사해야 합니다. Braze 대시보드의 설정 관리 페이지에서 식별자로 YOUR_APP_IDENTIFIER_API_KEY을(를) 대체하십시오. dashboard.braze.com에 로그인하여 클러스터 주소를 찾으십시오.
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
3단계: AndroidManifest.xml에 권한 추가
다음으로, AndroidManifest.xml에 다음 권한을 추가하세요:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Android M의 출시와 함께 Android는 설치 시점에서 런타임 권한 모델로 전환되었습니다. 그러나 이 두 권한 모두 일반 권한이며 앱 매니페스트에 나열된 경우 자동으로 부여됩니다. 자세한 내용은 Android의 권한 설명서를 참조하십시오.
4단계: 지연 초기화 활성화(선택 사항)
지연 초기화를 사용하려면 최소 Braze SDK 버전이 필요합니다:
지연 초기화가 활성화되면 모든 네트워크 연결이 취소되어 SDK가 Braze 서버에 데이터를 전송할 수 없습니다.
Step 4.1: braze.xml 업데이트
지연 초기화는 기본적으로 비활성화되어 있습니다. 활성화하려면 다음 옵션 중 하나를 사용하십시오:
프로젝트의 braze.xml 파일에서 com_braze_enable_delayed_initialization를 true로 설정하십시오.
1
<bool name="com_braze_enable_delayed_initialization">true</bool>
런타임에서 지연 초기화를 활성화하려면 다음 메서드를 사용하십시오.
1
Braze.enableDelayedInitialization(context);
1
Braze.enableDelayedInitialization(context)
지연 초기화가 활성화되고 푸시 알림에 딥 링크 작업이 포함된 경우, 딥 링크가 해결되지 않습니다.
Step 4.2: 푸시 분석 구성(선택 사항)
지연 초기화가 활성화되면 푸시 분석이 기본적으로 대기열에 추가됩니다. 그러나 푸시 분석을 명시적으로 대기열에 추가하거나 버리기를 선택할 수 있습니다.
명시적으로 대기열에 추가
푸시 분석을 명시적으로 대기열에 추가하려면 다음 옵션 중 하나를 선택하십시오:
당신의 braze.xml 파일에서 com_braze_delayed_initialization_analytics_behavior를 QUEUE로 설정하십시오:
1
<string name="com_braze_delayed_initialization_analytics_behavior">QUEUE</string>
당신의 Braze.enableDelayedInitialization() 메서드에 QUEUE를 추가하십시오:
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.QUEUE)
버리기
푸시 분석을 버리려면 다음 옵션 중 하나를 선택하십시오:
당신의 braze.xml 파일에서 com_braze_delayed_initialization_analytics_behavior를 DROP로 설정하십시오:
1
<string name="com_braze_delayed_initialization_analytics_behavior">DROP</string>
Braze.enableDelayedInitialization() 메서드에 DROP를 추가하십시오:
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP);
1
Braze.enableDelayedInitialization(context, DelayedInitializationAnalyticsBehavior.DROP)
Step 4.3: SDK를 수동으로 초기화하십시오
선택한 지연 기간 후, Braze.disableDelayedInitialization() 메서드를 사용하여 SDK를 수동으로 초기화하십시오.
1
Braze.disableDelayedInitialization(context);
1
Braze.disableDelayedInitialization(context)
5단계: 사용자 세션 추적 활성화
사용자 세션 추적을 활성화하면 openSession(), closeSession(), ensureSubscribedToInAppMessageEvents(), 및 InAppMessageManager 등록에 대한 호출이 자동으로 처리될 수 있습니다.
활동 생명주기 콜백을 등록하려면 onCreate() 클래스의 Application 메서드에 다음 코드를 추가하세요.
1
2
3
4
5
6
7
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
}
1
2
3
4
5
6
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
}
사용 가능한 매개변수 목록은 BrazeActivityLifecycleCallbackListener을 참조하세요.
테스트 세션 추적
SDK 문제를 진단하기 위해 SDK 디버거를 사용할 수도 있습니다.
테스트 중 문제가 발생하면 상세 로깅을 활성화한 다음 logcat을 사용하여 활동에서 누락된 openSession 및 closeSession 호출을 감지하세요.
- Braze에서 개요로 이동하여 앱을 선택한 다음 데이터 표시 드롭다운에서 오늘을 선택하세요.

- 앱을 열고 Braze 대시보드를 새로고침하세요. 측정기준이 1만큼 증가했는지 확인하세요.
- 앱을 탐색하고 Braze에 단 하나의 세션만 기록되었는지 확인하세요.
- 앱을 최소 10초 동안 백그라운드로 보내고, 다시 포그라운드로 가져오세요. 새 세션이 기록되었는지 확인하세요.
선택적 구성
런타임 구성
코드에서 Braze 옵션을 설정하려면 braze.xml 파일 대신 런타임 구성을 사용하세요. 두 곳에 값이 존재하는 경우 런타임 값이 대신 사용됩니다. 런타임에 모든 필수 설정이 제공된 후에는 braze.xml 파일을 삭제할 수 있습니다.
다음 예제에서는 빌더 객체가 생성된 후 Braze.configure()에 전달됩니다. 사용 가능한 런타임 옵션 중 일부만 표시됩니다—전체 목록은 KDoc를 참조하세요.
1
2
3
4
5
6
7
8
BrazeConfig brazeConfig = new BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build();
Braze.configure(this, brazeConfig);
1
2
3
4
5
6
7
8
val brazeConfig = BrazeConfig.Builder()
.setApiKey("api-key-here")
.setCustomEndpoint("YOUR_CUSTOM_ENDPOINT_OR_CLUSTER")
.setSessionTimeout(60)
.setHandlePushDeepLinksAutomatically(true)
.setGreatNetworkDataFlushInterval(10)
.build()
Braze.configure(this, brazeConfig)
다른 예제를 찾고 있나요? 우리의 안녕하세요 Braze 샘플 앱를 확인하세요.
구글 광고 ID
[구글 광고 ID (GAID)<1>는 구글 플레이 서비스에서 제공하는 광고를 위한 선택적 사용자 특정, 익명, 고유 및 재설정 가능한 ID입니다. GAID를 통해 사용자는 자신의 식별자를 재설정하고 Google Play 앱 내에서 관심 기반 광고를 옵트아웃할 수 있으며, 개발자는 간단한 표준 시스템으로 앱에서 지속적으로 수익을 창출할 수 있습니다.
Google 광고 ID는 Braze SDK에서 자동으로 수집되지 않으며, Braze.setGoogleAdvertisingId() 메서드를 통해 수동으로 설정해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
new Thread(new Runnable() {
@Override
public void run() {
try {
AdvertisingIdClient.Info idInfo = AdvertisingIdClient.getAdvertisingIdInfo(getApplicationContext());
Braze.getInstance(getApplicationContext()).setGoogleAdvertisingId(idInfo.getId(), idInfo.isLimitAdTrackingEnabled());
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
suspend fun fetchAndSetAdvertisingId(
context: Context,
scope: CoroutineScope = GlobalScope
) {
scope.launch(Dispatchers.IO) {
try {
val idInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
Braze.getInstance(context).setGoogleAdvertisingId(
idInfo.id,
idInfo.isLimitAdTrackingEnabled
)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
Google은 비 UI 스레드에서 광고 ID를 수집하도록 요구합니다.
위치 추적
Braze 위치 수집을 활성화하려면 com_braze_enable_location_collection을 true로 설정하십시오 braze.xml 파일에서:
1
<bool name="com_braze_enable_location_collection">true</bool>
Braze Android SDK 버전 3.6.0부터 Braze 위치 수집은 기본적으로 비활성화됩니다.
로깅
기본적으로 Braze Android SDK 로그 수준은 INFO로 설정되어 있습니다. 이러한 로그를 억제하거나 VERBOSE, DEBUG 또는 WARN과 같은 여러 로그 수준을 설정할 수 있습니다 .
로그 활성화
앱의 문제를 해결하거나 Braze 지원과의 처리 시간을 단축하려면 SDK에 대한 자세한 로그를 활성화할 수 있습니다. 상세 로그를 Braze 지원팀에 보낼 때 애플리케이션을 실행하자마자 로깅을 시작하여 문제가 발생하고 한참 후에 종료해야 합니다. 중앙 집중식 개요를 보려면 자세한 로깅을 참조하십시오. 로그 출력을 해석하는 방법을 배우려면 자세한 로그 읽기를 참조하십시오.
상세 로그는 개발 환경 전용이므로 앱을 출시하기 전에 비활성화하는 것이 좋습니다.
Application.onCreate()에서 다른 호출 전에 상세 로그를 활성화하여 최대한 완전한 로그를 작성합니다.
앱에서 직접 로그를 활성화하려면 다른 메서드보다 먼저 애플리케이션의 onCreate() 메서드에 다음을 추가합니다.
1
BrazeLogger.setLogLevel(Log.MIN_LOG_LEVEL);
1
BrazeLogger.logLevel = Log.MIN_LOG_LEVEL
MIN_LOG_LEVEL을 최소 로그 수준으로 설정하려는 로그 수준의 상수로 바꿉니다. 설정된 MIN_LOG_LEVEL 이상(>=) 수준의 모든 로그는 Android의 기본 Log 메서드로 전달됩니다. 설정된 MIN_LOG_LEVEL 수준 아래(<)의 모든 로그는 삭제됩니다.
| 상수 | 값 | 설명 |
|---|---|---|
VERBOSE |
2 | 디버깅 및 개발을 위한 가장 자세한 메시지를 기록합니다. |
DEBUG |
3 | 디버깅 및 개발을 위한 설명 메시지를 기록합니다. |
INFO |
4 | 일반적인 하이라이트에 대한 정보 메시지를 기록합니다. |
WARN |
5 | 잠재적으로 유해한 상황을 식별하기 위한 경고 메시지를 기록합니다. |
ERROR |
6 | 애플리케이션 실패 또는 심각한 문제를 나타내는 오류 메시지를 기록합니다. |
ASSERT |
7 | 개발 중 조건이 거짓일 때 어설션 메시지를 기록합니다. |
예를 들어 다음 코드는 2, 3, 4, 5, 6, 7의 로그 수준을 Log 메서드에 전달합니다.
1
BrazeLogger.setLogLevel(Log.VERBOSE);
1
BrazeLogger.logLevel = Log.VERBOSE
braze.xml에서 로그를 활성화하려면 파일에 다음을 추가합니다.
1
<integer name="com_braze_logger_initial_log_level">MIN_LOG_LEVEL</integer>
MIN_LOG_LEVEL을 최소 로그 수준으로 설정하려는 로그 수준의 값으로 바꿉니다. 설정된 MIN_LOG_LEVEL 이상(>=) 수준의 모든 로그는 Android의 기본 Log 메서드로 전달됩니다. 설정된 MIN_LOG_LEVEL 수준 아래(<)의 모든 로그는 삭제됩니다.
| 상수 | 값 | 설명 |
|---|---|---|
VERBOSE |
2 | 디버깅 및 개발을 위한 가장 자세한 메시지를 기록합니다. |
DEBUG |
3 | 디버깅 및 개발을 위한 설명 메시지를 기록합니다. |
INFO |
4 | 일반적인 하이라이트에 대한 정보 메시지를 기록합니다. |
WARN |
5 | 잠재적으로 유해한 상황을 식별하기 위한 경고 메시지를 기록합니다. |
ERROR |
6 | 애플리케이션 실패 또는 심각한 문제를 나타내는 오류 메시지를 기록합니다. |
ASSERT |
7 | 개발 중 조건이 거짓일 때 어설션 메시지를 기록합니다. |
예를 들어 다음 코드는 2, 3, 4, 5, 6, 7의 로그 수준을 Log 메서드에 전달합니다.
1
<integer name="com_braze_logger_initial_log_level">2</integer>
상세 로그 확인
로그가 VERBOSE로 설정되어 있는지 확인하려면 로그의 어딘가에 V/Braze가 있는지 확인합니다. 그러면 상세 로그가 활성화된 것입니다. 예를 들어, 다음과 같습니다.
1
2077-11-19 16:22:49.591 ? V/Braze v9.0.01 .bo.app.d3: Request started
로그 억제
Braze Android SDK에 대한 모든 로그를 억제하려면 애플리케이션의 onCreate() 메서드에서 로그 수준을 BrazeLogger.SUPPRESS로 설정하십시오 _다른 메서드_보다 먼저.
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS);
1
BrazeLogger.setLogLevel(BrazeLogger.SUPPRESS)
여러 API 키
여러 API 키의 가장 일반적인 사용 사례는 디버그 및 릴리스 빌드 배리언트에 대한 API 키를 분리하는 것입니다.
빌드에서 여러 API 키 사이를 쉽게 전환하려면 각 관련 빌드 배리언트에 대해 별도의 braze.xml 파일을 만드는 것이 좋습니다. 빌드 배리언트는 빌드 유형과 제품 버전의 조합입니다. 기본적으로 새로운 Android 프로젝트는 debug 및 release 빌드 유형으로 구성되며 제품 맛이 없습니다.
각 관련 빌드 변형에 대해 braze.xml을 src/<build variant name>/res/values/ 디렉토리에 새로 만드십시오. 빌드 변형이 컴파일되면 새 API 키를 사용합니다.
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">REPLACE_WITH_YOUR_BUILD_VARIANT_API_KEY</string>
</resources>
코드에서 API 키를 설정하는 방법을 배우려면 런타임 구성를 참조하십시오.
독점 인앱 메시지 TalkBack
Android 접근성 가이드라인을 준수하여 Braze Android SDK는 기본적으로 Android Talkback을 제공합니다. 인앱 메시지의 내용만 소리 내어 읽도록 하려면—앱 제목 표시줄이나 탐색과 같은 다른 화면 요소를 포함하지 않고—TalkBack에 대한 독점 모드를 활성화할 수 있습니다.
인앱 메시지에 대한 독점 모드를 활성화하려면:
1
<bool name="com_braze_device_in_app_message_accessibility_exclusive_mode_enabled">true</bool>
1
2
3
val brazeConfigBuilder = BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true)
Braze.configure(this, brazeConfigBuilder.build())
1
2
3
BrazeConfig.Builder brazeConfigBuilder = new BrazeConfig.Builder()
brazeConfigBuilder.setIsInAppMessageAccessibilityExclusiveModeEnabled(true);
Braze.configure(this, brazeConfigBuilder.build());
R8 및 ProGuard
코드 축소 구성은 Braze 통합에 자동으로 포함됩니다.
Braze 코드를 난독화하는 클라이언트 앱은 Braze가 스택 추적을 해석할 수 있도록 릴리스 매핑 파일을 저장해야 합니다. 모든 Braze 코드를 계속 유지하려면 ProGuard 파일에 다음을 추가합니다.
1
2
-keep class bo.app.** { *; }
-keep class com.braze.** { *; }
스위프트 SDK 통합
스위프트 패키지 매니저(SPM), CocoaPods 또는 수동 통합 방법을 사용하여 Braze 스위프트 SDK를 통합하고 사용자 정의할 수 있습니다. 다양한 SDK 기호에 대한 자세한 정보는 Braze Swift 참조 설명서를 참조하십시오.
필수 조건
시작하기 전에, 최신 Braze Swift SDK 버전이 지원되는지 확인하십시오.
1단계: Braze 스위프트 SDK 설치
Braze 스위프트 SDK를 설치하기 위해 스위프트 패키지 매니저(SwiftPM) 또는 CocoaPods를 사용하는 것을 권장합니다. 대안으로, SDK를 수동으로 설치할 수 있습니다.
1.1단계: SDK 버전 가져오기
프로젝트를 열고 프로젝트 설정으로 이동합니다. Swift 패키지 탭을 선택하고 패키지 목록 아래에 있는 추가 버튼을 클릭합니다.

버전 7.4.0부터 Braze Swift SDK는 정적 XCFrameworks 및 동적 XCFrameworks와 같은 추가 배포 채널을 제공합니다. 이 형식 중 하나를 대신 사용하려면 해당 리포지토리의 설치 지침을 따릅니다.
텍스트 필드에 iOS Swift SDK 리포지토리 URL(https://github.com/braze-inc/braze-swift-sdk)을 입력합니다. 종속성 규칙 섹션에서 SDK 버전을 선택합니다. 마지막으로 패키지 추가를 클릭합니다.

1.2단계: 패키지를 선택하십시오
Braze Swift SDK는 기능을 독립형 라이브러리로 분리하여 개발자가 프로젝트에 가져올 기능을 더 잘 제어할 수 있도록 합니다.
| 패키지 | 세부 정보 |
|---|---|
BrazeKit |
분석 및 푸시 알림을 지원하는 기본 SDK 라이브러리입니다. |
BrazeLocation |
위치 분석 및 지오펜스 모니터링을 지원하는 위치 라이브러리를 제공합니다. |
BrazeUI |
인앱 메시지, 콘텐츠 카드 및 배너를 위한 Braze 제공 사용자 인터페이스 라이브러리입니다. 기본 UI 구성 요소를 사용하려는 경우 이 라이브러리를 가져오십시오. |
확장 라이브러리에 대하여
BrazeNotificationService 및 BrazePushStory는 추가 기능을 제공하는 확장 모듈이므로 기본 애플리케이션 대상에 직접 추가해서는 안 됩니다. 대신 링크된 가이드에 따라 각각의 대상 확장에 개별적으로 통합합니다.
| 패키지 | 세부 정보 |
|---|---|
BrazeNotificationService |
풍부한 푸시 알림을 지원하는 알림 서비스 확장 라이브러리입니다. |
BrazePushStory |
푸시 스토리를 지원하는 알림 콘텐츠 확장 라이브러리입니다. |
필요에 가장 적합한 패키지를 선택하고 패키지 추가를 클릭합니다. 최소한 BrazeKit를 선택해야 합니다.

1.1단계: CocoaPods 설치
전체 안내서는 CocoaPods의 시작하기 가이드를 참조하십시오. 그렇지 않으면, 빠르게 시작하기 위해 다음 명령을 실행할 수 있습니다:
1
$ sudo gem install cocoapods
문제가 발생하면 CocoaPods의 문제 해결 가이드를 확인하십시오.
1.2단계: Podfile 구성
다음으로, Xcode 프로젝트 디렉토리에 Podfile라는 파일을 만드십시오.
버전 7.4.0부터 Braze Swift SDK는 정적 XCFrameworks 및 동적 XCFrameworks와 같은 추가 배포 채널을 제공합니다. 이 형식 중 하나를 대신 사용하려면 해당 리포지토리의 설치 지침을 따릅니다.
포드파일에 다음 줄을 추가합니다:
1
2
3
target 'YourAppTarget' do
pod 'BrazeKit'
end
BrazeKit에는 분석 및 푸시 알림을 지원하는 기본 SDK 라이브러리가 포함되어 있습니다.
포드 업데이트에서 부 버전 업데이트보다 작은 내용을 자동으로 가져올 수 있도록 Braze 버전을 설정하는 것이 좋습니다. pod 'BrazeKit' ~> Major.Minor.Build와 유사합니다. 최신 Braze SDK 버전을 자동으로 통합하려면 주요 변경 사항이 있어도 Podfile에서 pod 'BrazeKit'를 사용하면 됩니다.
추가 라이브러리에 대하여
Braze Swift SDK는 기능을 독립형 라이브러리로 분리하여 개발자가 프로젝트에 가져올 기능을 더 잘 제어할 수 있도록 합니다. BrazeKit 외에도 다음 라이브러리를 Podfile에 추가할 수 있습니다.
| 라이브러리 | 세부 정보 |
|---|---|
pod 'BrazeLocation' |
위치 분석 및 지오펜스 모니터링을 지원하는 위치 라이브러리를 제공합니다. |
pod 'BrazeUI' |
인앱 메시지, 콘텐츠 카드 및 배너를 위한 Braze 제공 사용자 인터페이스 라이브러리입니다. 기본 UI 구성 요소를 사용하려는 경우 이 라이브러리를 가져오십시오. |
확장 라이브러리
BrazeNotificationService 및 BrazePushStory는 추가 기능을 제공하는 확장 모듈이며, 메인 애플리케이션 대상에 직접 추가해서는 안 됩니다. 대신, 이러한 모듈 각각에 대해 별도의 확장 대상을 생성하고 해당 대상으로 Braze 모듈을 가져와야 합니다.
| 라이브러리 | 세부 정보 |
|---|---|
pod 'BrazeNotificationService' |
풍부한 푸시 알림을 지원하는 알림 서비스 확장 라이브러리입니다. |
pod 'BrazePushStory' |
푸시 스토리를 지원하는 알림 콘텐츠 확장 라이브러리입니다. |
1.3단계: SDK 설치
Braze SDK CocoaPod을 설치하려면 터미널에서 Xcode 앱 프로젝트 디렉토리로 이동한 후 다음 명령어를 실행합니다.
1
pod install
이때 CocoaPods에서 생성한 새 Xcode 프로젝트 워크스페이스를 열 수 있어야 합니다. Xcode 프로젝트 대신 이 Xcode 워크스페이스를 사용해야 합니다.

CocoaPods를 사용하여 SDK 업데이트
CocoaPod를 업데이트하려면 프로젝트 디렉토리에서 다음 명령을 실행하면 됩니다:
1
pod update
1.1단계: Braze SDK 다운로드
GitHub의 Braze SDK 릴리스 페이지로 이동한 다음, braze-swift-sdk-prebuilt.zip을 다운로드합니다.

1.2단계: 프레임워크 선택
Braze Swift SDK에는 다양한 독립형 XCFrameworks가 포함되어 있어 모든 기능을 통합할 필요 없이 원하는 기능을 자유롭게 통합할 수 있습니다. 다음 표를 참조하여 XCFrameworks를 선택합니다.
| 패키지 | 필수 항목인가요? | 설명 |
|---|---|---|
BrazeKit |
예 | 분석 및 푸시 알림을 지원하는 기본 SDK 라이브러리입니다. |
BrazeLocation |
아니요 | 위치 분석 및 지오펜스 모니터링을 지원하는 위치 라이브러리입니다. |
BrazeUI |
아니요 | 인앱 메시지, 콘텐츠 카드 및 배너를 위한 Braze 제공 사용자 인터페이스 라이브러리입니다. 기본 UI 구성 요소를 사용하려는 경우 이 라이브러리를 가져오십시오. |
BrazeNotificationService |
아니요 | 리치 푸시 알림을 지원하는 알림 서비스 확장 라이브러리입니다. 이 라이브러리를 기본 애플리케이션 대상에 직접 추가하지 말고 BrazeNotificationService 라이브러리를 별도로 추가합니다. |
BrazePushStory |
아니요 | 푸시 스토리를 지원하는 알림 콘텐츠 확장 라이브러리입니다. 이 라이브러리를 기본 애플리케이션 대상에 직접 추가하지 말고 BrazePushStory 라이브러리를 별도로 추가합니다. |
BrazeKitCompat |
아니요 | Appboy-iOS-SDK 버전 4.X.X에서 사용 가능했던 모든 Appboy 및 ABK* 클래스 및 메서드가 포함된 호환성 라이브러리. 사용법에 대한 자세한 내용은 마이그레이션 가이드의 최소 마이그레이션 시나리오를 참조하세요. |
BrazeUICompat |
아니요 | Appboy-iOS-SDK 버전 4.X.X부터 AppboyUI 라이브러리에서 사용 가능했던 모든 ABK* 클래스 및 메서드가 포함된 호환성 라이브러리. 사용법에 대한 자세한 내용은 마이그레이션 가이드의 최소 마이그레이션 시나리오를 참조하세요. |
SDWebImage |
아니요 | 최소 마이그레이션 시나리오에서 BrazeUICompat 에서만 사용하는 종속성입니다. |
1.3단계: 파일 준비
정적 XCFrameworks를 사용할지 동적 XCFrameworks를 사용할지 결정한 다음, 파일을 준비합니다.
- XCFrameworks의 임시 디렉토리를 생성합니다.
braze-swift-sdk-prebuilt에서dynamic디렉토리를 열고BrazeKit.xcframework를 디렉토리로 이동합니다. 디렉터리는 다음과 비슷해야 합니다:1 2
temp_dir └── BrazeKit.xcframework
- 각 선택한 XCFrameworks를 임시 디렉토리로 이동합니다. 디렉터리는 다음과 비슷해야 합니다:
1 2 3 4 5
temp_dir ├── BrazeKit.xcframework ├── BrazeKitCompat.xcframework ├── BrazeLocation.xcframework └── SDWebImage.xcframework
1.4단계: 프레임워크 통합
다음으로, 이전에 준비한 동적 또는 정적 XCFrameworks를 통합합니다.
Xcode 프로젝트에서 빌드 대상을 선택한 다음, 일반을 선택합니다. 프레임워크, 라이브러리 및 임베디드 콘텐츠에서 이전에 준비한 파일을 끌어다 놓습니다.

Swift SDK 12.0.0부터는 Braze XCFrameworks의 정적 및 동적 변형 모두에 대해 항상 Embed & Sign을 선택해야 합니다. 이것은 프레임워크 리소스가 앱 번들에 올바르게 포함되도록 보장합니다.
GIF 지원을 활성화하려면 SDWebImage.xcframework를 추가하세요. 이는 braze-swift-sdk-prebuilt/static 또는 braze-swift-sdk-prebuilt/dynamic에 위치합니다.
Objective-C 프로젝트의 일반적인 오류
Xcode 프로젝트에 Objective-C 파일만 포함된 경우 프로젝트를 빌드하려고 할 때 ‘누락된 기호’ 오류가 발생할 수 있습니다. 이러한 오류를 해결하려면 프로젝트를 열고 파일 트리에 빈 Swift 파일을 추가합니다. 그러면 빌드 툴체인에 Swift 런타임이 강제로 임베드되고 빌드 시간 동안 적절한 프레임워크에 링크됩니다.
1
FILE_NAME.swift
FILE_NAME 을 띄어쓰기가 없는 문자열로 바꿉니다. 파일은 다음과 비슷하게 보일 것입니다:
1
empty_swift_file.swift
2단계: 지연 초기화 설정(선택 사항)
Braze Swift SDK의 초기화를 지연할 수 있습니다. 이는 앱이 구성 로드를 하거나 SDK 시작 전에 사용자 동의를 기다려야 할 때 유용합니다. 지연 초기화는 Braze 푸시 알림과 SDK 초기화 전에 수신된 푸시 토큰이 큐에 추가되고 SDK가 초기화되면 처리되도록 보장합니다.
지연 초기화를 사용하려면 최소 Braze SDK 버전이 필요합니다:
2.1 단계: 지연 초기화 준비하기
앱의 생명 주기에서 가능한 한 빨리 Braze.prepareForDelayedInitialization()을 호출하세요. 이상적으로는 application(_:didFinishLaunchingWithOptions:) 이전에 호출해야 합니다. 이것은 SDK가 초기화되기 전에 수신된 푸시 알림이 나중에 올바르게 캡처되고 처리되도록 보장합니다.
이것은 Braze의 푸시 알림에만 적용됩니다. 다른 푸시 알림은 시스템 대리자에 의해 정상적으로 처리됩니다.
1
2
3
4
5
6
7
8
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor var appDelegate: AppDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
// Prepare the SDK for delayed initialization
Braze.prepareForDelayedInitialization()
// ... Additional non-Braze setup code
return true
}
}
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Prepare the SDK for delayed initialization
[Braze prepareForDelayedInitialization];
// ... Additional non-Braze setup code
return YES;
}
지연 초기화를 사용할 때 푸시 알림 자동화가 암묵적으로 활성화됩니다. 푸시 자동화 구성을 pushAutomation 매개변수를 전달하여 사용자 정의할 수 있습니다.
2.2 단계: 푸시 분석 동작 구성(선택 사항)
지연 초기화가 활성화되면 푸시 분석이 기본적으로 큐에 추가됩니다. 그러나 푸시 분석을 명시적으로 큐에 추가하거나 드롭할 수도 있습니다.
명시적으로 큐에 추가하기
푸시 분석을 명시적으로 큐에 추가하려면(기본 동작) .queue을 analyticsBehavior 매개변수에 전달하세요. 초기화 전에 대기 중인 푸시 분석 이벤트는 초기화 시 서버로 처리되고 전송됩니다.
1
Braze.prepareForDelayedInitialization(analyticsBehavior: .queue)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorQueue];
삭제
SDK 초기화 전에 수신된 푸시 분석을 삭제하려면 .drop을 analyticsBehavior 매개변수로 전달하십시오. 이 옵션을 사용하면 SDK가 초기화되지 않은 동안 발생하는 모든 푸시 분석 이벤트는 무시됩니다.
1
Braze.prepareForDelayedInitialization(analyticsBehavior: .drop)
1
[Braze prepareForDelayedInitializationWithAnalyticsBehavior:BRZPushEnqueueBehaviorDrop];
2.3 단계: 푸시 자동화 사용자 정의(선택 사항)
pushAutomation 매개변수를 전달하여 푸시 자동화 구성을 사용자 정의할 수 있습니다. 기본적으로 모든 자동화 기능이 활성화되어 있으며 requestAuthorizationAtLaunch는 제외됩니다.
1
2
3
4
5
6
7
8
// Enable all push automation
featuresBraze.prepareForDelayedInitialization(pushAutomation: true)
// Or customize specific automation options
let automation = Braze.Configuration.Push.Automation()
automation.automaticSetup = true
automation.requestAuthorizationAtLaunch = false
Braze.prepareForDelayedInitialization(pushAutomation: automation)
1
2
3
4
5
6
7
8
// Enable all push automation features
[Braze prepareForDelayedInitializationWithPushAutomation:[[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES]];
// Or customize specific automation options
BRZConfigurationPushAutomation *automation = [[BRZConfigurationPushAutomation alloc] init];
automation.automaticSetup = YES;
automation.requestAuthorizationAtLaunch = NO;
[Braze prepareForDelayedInitializationWithPushAutomation:automation analyticsBehavior:BRZPushEnqueueBehaviorQueue];
2.4 단계: SDK 초기화
선택한 지연 기간(예: 서버에서 구성 가져오기 후 또는 사용자 동의 후) 후에 SDK를 정상적으로 초기화하십시오:
1
2
3
4
5
6
7
8
9
10
func initializeBraze() {
let configuration = Braze.Configuration(apiKey: "YOUR-API-KEY", endpoint: "YOUR-ENDPOINT")
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = true
let braze = Braze(configuration: configuration)
// Store the Braze instance for later use
AppDelegate.braze = braze
}
1
2
3
4
5
6
7
8
9
10
- (void)initializeBraze {
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"YOUR-API-KEY" endpoint:@"YOUR-ENDPOINT"];
// Enable push automation to match the delayed initialization configuration
configuration.push.automation = [[BRZConfigurationPushAutomation alloc] initWithAutomationEnabled:YES];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
// Store the Braze instance for later use
AppDelegate.braze = braze;
}
SDK가 초기화되면 모든 대기 중인 푸시 알림, 푸시 토큰 및 딥 링크가 자동으로 처리됩니다.
3단계: 앱 대리자를 업데이트하세요
다음은 기본적으로 생성되지 않는 AppDelegate를 프로젝트에 이미 추가했다고 가정합니다. 지연 초기화 기능을 사용하지 않는 경우입니다. AppDelegate을 사용할 계획이 없다면, 앱 시작 시 브레이즈 SDK를 가능한 한 빨리 초기화하십시오. 지연 초기화 기능을 사용하는 경우, SDK 초기화에 대한 2.4단계를 참조하고 이 단계를 무시하십시오.
Braze Swift SDK에 포함된 기능을 가져오기 위해 다음 코드를 AppDelegate.swift 파일에 추가합니다.
1
import BrazeKit
다음으로, AppDelegate 클래스에 정적 속성정보를 추가하여 애플리케이션의 수명 동안 Braze 인스턴스에 대한 강력한 참조를 유지합니다.
1
2
3
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
}
마지막으로, AppDelegate.swift에서 다음 스니펫을 application:didFinishLaunchingWithOptions: 메서드에 추가하십시오:
1
2
3
4
5
6
let configuration = Braze.Configuration(
apiKey: "YOUR-APP-IDENTIFIER-API-KEY",
endpoint: "YOUR-BRAZE-ENDPOINT"
)
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
YOUR-APP-IDENTIFIER-API-KEY 및 YOUR-BRAZE-ENDPOINT을(를) 앱 설정 페이지에서 올바른 값으로 업데이트하십시오. 앱 식별자 API 키를 찾을 수 있는 위치에 대한 자세한 내용은 API 식별자 유형을 참조하세요.
다음 코드 줄을 AppDelegate.m 파일에 추가하십시오:
1
@import BrazeKit;
다음으로, AppDelegate.m 파일에 정적 변수를 추가하여 애플리케이션의 수명 동안 Braze 인스턴스에 대한 참조를 유지합니다.
1
2
3
4
5
6
7
8
9
10
11
static Braze *_braze;
@implementation AppDelegate
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
@end
마지막으로, AppDelegate.m 파일 내에서 application:didFinishLaunchingWithOptions: 메서드 내에 다음 스니펫을 추가합니다.
1
2
3
4
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:"YOUR-APP-IDENTIFIER-API-KEY"
endpoint:"YOUR-BRAZE-ENDPOINT"];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
AppDelegate.braze = braze;
YOUR-APP-IDENTIFIER-API-KEY 및 YOUR-BRAZE-ENDPOINT을(를) 설정 관리 페이지에서 올바른 값으로 업데이트하십시오. 앱 식별자 API 키를 찾을 수 있는 위치에 대한 자세한 내용은 API 설명서를 참조하세요.
선택적 구성
로깅
모든 플랫폼에서 중앙 집중식 개요를 보려면 상세 로깅을 참조하십시오. 로그 출력을 해석하는 방법을 배우려면 상세 로그 읽기를 참조하십시오.
로그 레벨
브레이즈 스위프트 SDK의 기본 로그 수준은 .error입니다. 로그가 활성화될 때 최소 지원 수준이기도 합니다. 다음은 로그 수준의 전체 목록입니다:
| Swift | Objective-C | 설명 |
|---|---|---|
.debug |
BRZLoggerLevelDebug |
로그 디버깅 정보 + .info + .error. |
.info |
BRZLoggerLevelInfo |
일반 SDK 정보(사용자 변경 사항 등) + .error를 기록합니다. |
.error |
BRZLoggerLevelError |
로그 오류. |
.disabled |
BRZLoggerLevelDisabled |
로깅이 발생하지 않습니다. |
로그 수준 설정
런타임에 Braze.Configuration 객체에서 로그 수준을 할당할 수 있습니다. 자세한 사용 내용은 Braze.Configuration.Logger를 참조하십시오.
1
2
3
4
5
6
7
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// Enable logging of general SDK information (such as user changes, etc.)
configuration.logger.level = .info
let braze = Braze(configuration: configuration)
1
2
3
4
5
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:self.APIKey
endpoint:self.apiEndpoint];
// Enable logging of general SDK information (such as user changes, etc.)
[configuration.logger setLevel:BRZLoggerLevelInfo];
Braze *braze = [[Braze alloc] initWithConfiguration:configuration];
Cordova SDK 통합
필수 조건
시작하기 전에, 최신 Braze Cordova 소프트웨어 개발 키트가 귀하의 환경을 지원하는지 확인하십시오.
1단계: 프로젝트에 SDK 추가
아래 방법만을 사용하여 Braze Cordova 소프트웨어 개발 키트를 추가하십시오. 다른 방법으로 설치를 시도하지 마십시오. 이는 보안 침해로 이어질 수 있습니다.
Cordova 6 이상을 사용하는 경우 GitHub에서 직접 SDK를 추가할 수 있습니다. 또는 GitHub 리포지토리의 ZIP 파일을 다운로드하여 SDK를 수동으로 추가할 수도 있습니다.
위치 수집 및 지오펜스를 사용하지 않는다면 GitHub의 master 브랜치를 사용합니다.
1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#master
위치 수집 및 지오펜스를 사용하려면 GitHub의 geofence-branch를 사용합니다.
1
cordova plugin add https://github.com/braze-inc/braze-cordova-sdk#geofence-branch
이 단계를 반복하면 언제든지 geofence-branch와 master사이에서 전환할 수 있습니다.
2단계: 프로젝트 구성
다음으로 프로젝트의 config.xml 파일에 있는 platform 요소에 다음 환경설정을 추가합니다.
1
2
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="CUSTOM_API_ENDPOINT" />
1
2
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="CUSTOM_API_ENDPOINT" />
다음을 교체합니다:
| 값 | 설명 |
|---|---|
BRAZE_API_KEY |
Braze REST API 키입니다. |
CUSTOM_API_ENDPOINT |
사용자 지정 API 엔드포인트. 이 엔드포인트는 Braze 대시보드의 올바른 앱 그룹으로 Braze 인스턴스 데이터를 라우팅하는 데 사용됩니다. |
config.xml 파일의 platform 요소는 다음과 유사해야 합니다:
1
2
3
4
<platform name="ios">
<preference name="com.braze.ios_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.ios_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
1
2
3
4
<platform name="android">
<preference name="com.braze.android_api_key" value="BRAZE_API_KEY" />
<preference name="com.braze.android_api_endpoint" value="sdk.fra-01.braze.eu" />
</platform>
플랫폼별 구문
다음 섹션에서는 iOS 또는 Android에서 Cordova를 사용할 때의 플랫폼별 구문을 다룹니다.
정수
정수 환경설정은 다음 예제에서와 같이 문자열 표현으로 읽습니다.
1
2
3
4
<platform name="ios">
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_session_timeout" value="5" />
</platform>
Cordova 8.0.0 이상 프레임워크가 환경설정을 처리하는 방식으로 인해 다음 예제와 같이 정수 전용 환경설정(예: 발신자 ID)은 str_이 앞에 오는 문자열로 설정해야 합니다.
1
2
3
4
<platform name="android">
<preference name="com.braze.android_fcm_sender_id" value="str_64422926741" />
<preference name="com.braze.android_default_session_timeout" value="str_10" />
</platform>
부울
부울 환경설정은 다음 예제와 같이 YES 및 NO 키워드를 문자열 표현으로 사용하여 SDK에서 읽습니다.
1
2
3
4
<platform name="ios">
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO" />
</platform>
부울 환경설정은 다음 예제와 같이 true 및 false 키워드를 문자열 표현으로 사용하여 SDK에서 읽습니다.
1
2
3
4
<platform name="android">
<preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
</platform>
선택적 구성
프로젝트의 config.xml 파일에 있는 platform 요소에 다음 기본 설정 중 하나를 추가할 수 있습니다:
| 방법 | 설명 |
|---|---|
|ios_api_key |
애플리케이션의 API 키를 설정합니다. |
|ios_api_endpoint |
애플리케이션의 SDK 엔드포인트를 설정합니다. |
|ios_disable_automatic_push_registration |
자동 푸시 등록을 비활성화할지 여부를 설정합니다. |
|ios_disable_automatic_push_handling |
자동 푸시 처리를 비활성화할지 여부를 설정합니다. |
ios_enable_idfa_automatic_collection |
Braze 소프트웨어 개발 키트가 IDFA 정보를 자동으로 수집할지 여부를 설정합니다. 자세한 내용은 Braze IDFA 메서드 설명서를 참조하십시오. |
enable_location_collection |
자동 위치 수집의 인에이블먼트 여부를 설정합니다(사용자가 허용하는 경우). The geofence-branch |
|geofences_enabled |
지오펜스 인에이블먼트 여부를 설정합니다. |
|ios_session_timeout |
애플리케이션의 Braze 세션 시간 초과를 초 단위로 설정합니다. 기본값은 10초입니다. |
sdk_authentication_enabled |
소프트웨어 개발 키트 인증 기능 인에이블먼트 여부를 설정합니다. |
|display_foreground_push_notifications |
애플리케이션이 전경에 있을 때 푸시 알림을 표시할지 여부를 설정합니다. |
|ios_disable_un_authorization_option_provisional |
를 비활성화할지UNAuthorizationOptionProvisional 여부를 설정합니다. |
trigger_action_minimum_time_interval_seconds |
트리거 간 최소 시간 간격을 초 단위로 설정합니다. 기본값은 30초입니다. |
|ios_push_app_group |
iOS 푸시 확장 프로그램의 앱 그룹 ID를 설정합니다. |
|ios_forward_universal_links |
소프트웨어 개발 키트가 유니버설 링크를 자동으로 인식하여 시스템 메서드로 전달할지 여부를 설정합니다. iOS에서 푸시 알림의 딥링크가 작동하기 위해 필요합니다. 기본값은 비활성화됨. |
|ios_log_level |
.Braze.Configuration.Logger에 대한 최소 로깅 수준을 설정합니다. |
|ios_use_uuid_as_device_id |
무작위로 생성된 UUID를 기기 ID로 사용할지 여부를 설정합니다. |
ios_flush_interval_seconds |
자동 데이터 플러시 간격을 초 단위로 설정합니다. 기본값은 10초입니다. |
ios_use_automatic_request_policy |
요청 정책이 자동으로Braze.Configuration.Api 적용될지 수동으로 적용될지를 설정합니다. |
should_opt_in_when_push_authorized |
사용자의 알림 구독 상태가 푸시 권한이 승인될 때 자동으로 optedIn설정되어야 하는지 여부를 지정합니다. |
자세한 내용은 GitHub를 참조하세요: Braze iOS 코르도바 플러그인.
| 방법 | 설명 | |
|---|---|---|
android_api_key |
애플리케이션의 API 키를 설정합니다. | |
|android_api_endpoint |
애플리케이션의 SDK 엔드포인트를 설정합니다. | |
|android_small_notification_icon |
알림 작은 아이콘을 설정합니다. | |
|android_large_notification_icon |
알림 큰 아이콘을 설정합니다. | |
|android_notification_accent_color |
16진수 표기법을 사용하여 알림 강조 색상을 설정합니다. | |
|android_default_session_timeout |
애플리케이션의 Braze 세션 시간 초과를 초 단위로 설정합니다. 기본값은 10초입니다. | |
android_handle_push_deep_links_automatically |
Braze 소프트웨어 개발 키트가 푸시 딥링크를 자동으로 처리할지 여부를 설정합니다. Android에서 푸시 알림의 딥링크가 작동하기 위해 필요합니다. 기본값은 비활성화됨. | |
android_log_level |
애플리케이션의 로그 수준을 설정합니다. 기본 로그 수준은 4이며, 최소한의 정보를 기록합니다. 디버깅을 위한 상세 로깅의 인에이블먼트를 수행하려면 로그 레벨 2를 사용하십시오. | |
|firebase_cloud_messaging_registration_enabled |
푸시 알림에 Firebase Cloud Messaging을 사용할지 여부를 설정합니다. | |
|android_fcm_sender_id |
Firebase 클라우드 메시징 발신자 ID를 설정합니다. | |
|enable_location_collection |
자동 위치 수집의 인에이블먼트 여부를 설정합니다(사용자가 허용하는 경우). | |
geofences_enabled |
지오펜스 인에이블먼트 여부를 설정합니다. | |
|android_disable_auto_session_tracking |
Android Cordova 플러그인이 세션을 자동으로 추적하지 못하도록 비활성화합니다. 자세한 내용은 자동 세션 추적 비활성화 | 를 참조하십시오. |
|sdk_authentication_enabled |
소프트웨어 개발 키트 인증 기능 인에이블먼트 여부를 설정합니다. | |
trigger_action_minimum_time_interval_seconds |
트리거 간 최소 시간 간격을 초 단위로 설정합니다. 기본값은 30초입니다. | |
|is_session_start_based_timeout_enabled |
세션 시간 초과 동작이 세션 시작 이벤트를 기준으로 할지, 세션 종료 이벤트를 기준으로 할지를 설정합니다. | |
|default_notification_channel_name |
Braze 기본값에 대해NotificationChannel.getName 를 통해 표시되는 NotificationChannel사용자용 이름을 설정합니다. |
|
default_notification_channel_description |
Braze 기본값에 대해NotificationChannel.getDescription 를 통해 표시되는 NotificationChannel사용자용 설명을 설정합니다. |
|
|does_push_story_dismiss_on_click |
푸시 스토리가 클릭 시 자동으로 닫히도록 설정합니다. | |
is_fallback_firebase_messaging_service_enabled |
대체용 Firebase 클라우드 메시징 서비스 사용을 인에이블할지 여부를 설정합니다. | |
|fallback_firebase_messaging_service_classpath |
대체용 Firebase 클라우드 메시징 서비스의 클래스 경로를 설정합니다. | |
is_content_cards_unread_visual_indicator_enabled |
콘텐츠 카드의 미열람 시각적 표시줄 인에이블먼트 여부를 설정합니다. | |
|is_firebase_messaging_service_on_new_token_registration_enabled |
Braze 소프트웨어 개발 키트가 토큰을 자동으로 등록할지com.google.firebase.messaging.FirebaseMessagingService.onNewToken 여부를 설정합니다. |
|
|is_push_deep_link_back_stack_activity_enabled |
푸시 알림에 대한 딥링크를 자동으로 추적할 때 Braze가 백 스택에 활동을 추가할지 여부를 설정합니다. | |
|push_deep_link_back_stack_activity_class_name |
푸시 알림에 대한 딥링크를 자동으로 추적할 때 Braze가 백 스택에 추가할 활동을 설정합니다. | |
|should_opt_in_when_push_authorized |
푸시 권한이 부여될 때 Braze가 사용자를 자동으로 옵트인하도록 설정합니다. |
다음은 추가 구성이 포함된 config.xml 파일 예시입니다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<platform name="ios">
<preference name="com.braze.ios_disable_automatic_push_registration" value="NO"/"YES" />
<preference name="com.braze.ios_disable_automatic_push_handling" value="NO"/"YES" />
<preference name="com.braze.ios_enable_idfa_automatic_collection" value="YES"/"NO" />
<preference name="com.braze.enable_location_collection" value="NO"/"YES" />
<preference name="com.braze.geofences_enabled" value="NO"/"YES" />
<preference name="com.braze.ios_session_timeout" value="5" />
<preference name="com.braze.sdk_authentication_enabled" value="YES"/"NO" />
<preference name="com.braze.display_foreground_push_notifications" value="YES"/"NO" />
<preference name="com.braze.ios_disable_un_authorization_option_provisional" value="NO"/"YES" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
<preference name="com.braze.ios_push_app_group" value="PUSH_APP_GROUP_ID" />
<preference name="com.braze.ios_forward_universal_links" value="YES"/"NO" />
<preference name="com.braze.ios_log_level" value="2" />
<preference name="com.braze.ios_use_uuid_as_device_id" value="YES"/"NO" />
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
<preference name="com.braze.ios_use_automatic_request_policy" value="YES"/"NO" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES"/"NO" />
</platform>
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
<platform name="android">
<preference name="com.braze.android_small_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_large_notification_icon" value="RESOURCE_ENTRY_NAME_FOR_ICON_DRAWABLE" />
<preference name="com.braze.android_notification_accent_color" value="str_ACCENT_COLOR_INTEGER" />
<preference name="com.braze.android_default_session_timeout" value="str_SESSION_TIMEOUT_INTEGER" />
<preference name="com.braze.android_handle_push_deep_links_automatically" value="true"/"false" />
<preference name="com.braze.android_log_level" value="str_LOG_LEVEL_INTEGER" />
<preference name="com.braze.firebase_cloud_messaging_registration_enabled" value="true"/"false" />
<preference name="com.braze.android_fcm_sender_id" value="str_YOUR_FCM_SENDER_ID" />
<preference name="com.braze.enable_location_collection" value="true"/"false" />
<preference name="com.braze.geofences_enabled" value="true"/"false" />
<preference name="com.braze.android_disable_auto_session_tracking" value="true"/"false" />
<preference name="com.braze.sdk_authentication_enabled" value="true"/"false" />
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="str_MINIMUM_INTERVAL_INTEGER" />
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false"/"true" />
<preference name="com.braze.default_notification_channel_name" value="DEFAULT_NAME" />
<preference name="com.braze.default_notification_channel_description" value="DEFAULT_DESCRIPTION" />
<preference name="com.braze.does_push_story_dismiss_on_click" value="true"/"false" />
<preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true"/"false" />
<preference name="com.braze.fallback_firebase_messaging_service_classpath" value="FALLBACK_FIREBASE_MESSAGING_CLASSPATH" />
<preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true"/"false" />
<preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true"/"false" />
<preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true"/"false" />
<preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="DEEPLINK_BACKSTACK_ACTIVITY_CLASS_NAME" />
<preference name="com.braze.should_opt_in_when_push_authorized" value="true"/"false" />
</platform>
자동 세션 추적 비활성화 (Android 전용)
기본적으로 Android Cordova 플러그인은 세션을 자동으로 추적합니다. 자동 세션 추적을 사용하지 않으려면 프로젝트의 config.xml 파일에 있는 platform 요소에 다음 환경 설정을 추가하세요:
1
2
3
<platform name="android">
<preference name="com.braze.android_disable_auto_session_tracking" value="true" />
</platform>
세션 추적을 다시 시작하려면 BrazePlugin.startSessionTracking() 으로 전화하세요. 다음 Activity.onStart() 이후에 시작된 세션만 추적됩니다.
Flutter Braze 소프트웨어 개발 키트 정보
Android 및 iOS에서 Braze Flutter 소프트웨어 개발 키트를 통합한 후에는 Dart로 작성된 Flutter 앱 내에서 Braze API를 사용할 수 있습니다. 이 플러그인은 기본적인 분석 기능을 제공하며, 이를 통해 단일 코드베이스에서 iOS 및 Android용 인앱 메시지와 콘텐츠 카드를 통합할 수 있습니다.
Flutter SDK 통합
필수 조건
Braze Flutter SDK를 통합하기 전에 다음을 완료해야 합니다:
| Prerequisite | 설명 |
|---|---|
| Braze API 앱 식별자 | 앱 식별자를 찾으려면 설정 > API 및 식별자 > 앱 식별자로 이동하세요. 자세한 내용은 API 식별자 유형을 참조하십시오. |
| Braze REST endpoint | Your REST endpoint URL. Your endpoint will depend on the Braze URL for your instance. |
| Flutter SDK | 공식 Flutter 소프트웨어 개발 키트를 설치하고 Braze Flutter SDK의 최소 지원 버전을 충족하는지 확인하십시오. |
1단계: Braze 라이브러리 통합
명령줄에서 Braze Flutter SDK 패키지를 추가합니다. 그러면 pubspec.yaml 에 적절한 줄이 추가됩니다.
1
flutter pub add braze_plugin
2단계: 완전한 네이티브 소프트웨어 개발 키트 설정
Braze 서버에 연결하려면 프로젝트의 android/res/values 폴더에서 braze.xml 파일을 생성합니다. 다음 코드를 붙여넣고 API 식별자 키와 엔드포인트를 사용자 값으로 바꿉니다.
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
AndroidManifest.xml 파일에 필요한 권한을 추가합니다:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
AppDelegate.swift 파일 상단에 Braze SDK 가져오기를 추가합니다:
1
2
import BrazeKit
import braze_plugin
같은 파일의 application(_:didFinishLaunchingWithOptions:) 메서드에서 Braze 구성 오브젝트를 생성하고 API 키와 엔드포인트를 앱의 값으로 바꿉니다. 그런 다음 구성을 사용하여 Braze 인스턴스를 생성하고 AppDelegate 에 정적 속성을 생성하여 쉽게 액세스할 수 있도록 합니다:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static var braze: Braze? = nil
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "<BRAZE_API_KEY>",
endpoint: "<BRAZE_ENDPOINT>"
)
// - Enable logging or customize configuration here
configuration.logger.level = .info
let braze = BrazePlugin.initBraze(configuration)
AppDelegate.braze = braze
return true
}
AppDelegate.m 파일 상단에 있는 BrazeKit를 가져옵니다.
1
@import BrazeKit;
같은 파일의 application:didFinishLaunchingWithOptions: 메서드에서 Braze 구성 오브젝트를 생성하고 API 키와 엔드포인트를 앱의 값으로 바꿉니다. 그런 다음 구성을 사용하여 Braze 인스턴스를 생성하고 AppDelegate 에 정적 속성을 생성하여 쉽게 액세스할 수 있도록 합니다:
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
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration =
[[BRZConfiguration alloc] initWithApiKey:@"<BRAZE_API_KEY>"
endpoint:@"<BRAZE_ENDPOINT>"];
// - Enable logging or customize configuration here
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazePlugin initBraze: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;
}
3단계: 플러그인 설정하기
플러그인을 Dart 코드로 가져오려면 다음을 사용하세요:
1
import 'package:braze_plugin/braze_plugin.dart';
그런 다음, 샘플 앱에서와 같이 new BrazePlugin()을 호출하여 Braze 플러그인 인스턴스를 초기화합니다.
정의되지 않은 동작을 피하기 위해 Dart 코드 내에서 BrazePlugin해당 객체의 인스턴스를 단 하나만 할당하고 사용하십시오.
통합 테스트
대시보드에서 세션 통계를 확인하여 SDK가 통합되었는지 확인할 수 있습니다. 어느 플랫폼에서든 애플리케이션을 실행하면 대시보드( 개요 섹션)에 새 세션이 표시됩니다.
앱에서 다음 코드를 호출하여 특정 사용자에 대한 세션을 시작하십시오.
1
2
BrazePlugin braze = BrazePlugin();
braze.changeUser("{some-user-id}");
대시보드의 ‘오디언스 > 사용자 검색’에서 를 {some-user-id}사용하여 사용자를 검색하세요. 여기에서 세션 및 디바이스 데이터가 기록되었는지 확인할 수 있습니다.
React Native Braze SDK에 대한 설명
React Native Braze SDK를 통합하면 기본 분석 기능을 제공하고 iOS 및 Android 모두에 대해 하나의 코드베이스로 인앱 메시지 및 콘텐츠 카드를 통합할 수 있습니다.
새 아키텍처 호환성
다음 최소 SDK 버전은 React Native의 새 아키텍처를 사용하는 모든 앱과 호환됩니다:
SDK 버전 6.0.0부터 Braze는 React Native Turbo 모듈을 사용하며, 이는 새 아키텍처와 레거시 브리지 아키텍처 모두와 호환됩니다. 즉, 추가 설정이 필요하지 않습니다.
iOS 앱이 RCTAppDelegate를 준수하고 이전 AppDelegate 설정을 따르는 경우, Turbo 모듈에서 이벤트를 구독할 때 발생할 수 있는 충돌을 방지하기 위해 완전한 네이티브 설정의 샘플을 검토하십시오.
React Native SDK 통합하기
필수 조건
SDK를 통합하려면 React Native 버전 0.71 이상이 필요합니다. 지원되는 버전의 전체 목록은 React Native SDK GitHub 리포지토리를 참조하세요.
1단계: Braze 라이브러리를 통합하십시오
1
npm install @braze/react-native-sdk
1
yarn add @braze/react-native-sdk
2단계: 설정 옵션 선택하기
Braze SDK는 Braze Expo 플러그인 또는 네이티브 레이어 중 하나를 통해 관리할 수 있습니다. Expo 플러그인을 사용하면 네이티브 레이어에서 코드를 작성하지 않고도 특정 SDK 기능을 구성할 수 있습니다. 앱의 요구 사항에 가장 적합한 옵션을 선택하십시오.
2.1 단계: Braze Expo 플러그인을 설치하십시오
Braze React Native SDK 버전이 1.37.0 이상인지 확인합니다. 지원되는 버전의 전체 목록은 Braze React Native 저장소를 확인하십시오.
Braze Expo 플러그인을 설치하려면 다음 명령을 실행하십시오:
1
npx expo install @braze/expo-plugin
2.2 단계: 플러그인을 app.json에 추가하세요
귀하의 app.json에 Braze Expo 플러그인을 추가하십시오. 다음 구성 옵션을 제공할 수 있습니다:
| 방법 | 유형 | Description |
|---|---|---|
androidApiKey |
문자열 | 필수. 귀하의 Android 애플리케이션에 대한 API 키는 Braze 대시보드의 설정 관리 아래에 있습니다. |
iosApiKey |
문자열 | 필수. iOS 애플리케이션의 API 키는 Braze 대시보드의 설정 관리 아래에 있습니다. |
baseUrl |
문자열 | 필수. 귀하의 애플리케이션에 대한 SDK 엔드포인트는 설정 관리 아래 Braze 대시보드에 위치해 있습니다. |
enableBrazeIosPush |
불리언 | iOS만 해당. iOS에서 푸시 알림을 처리하기 위해 Braze를 사용할지 여부. React Native SDK v1.38.0 및 Expo 플러그인 v0.4.0에 도입되었습니다. |
enableFirebaseCloudMessaging |
불리언 | Android만 해당. 푸시 알림에 Firebase 클라우드 메시징을 사용할지 여부. React Native SDK v1.38.0 및 Expo 플러그인 v0.4.0에 도입되었습니다. |
firebaseCloudMessagingSenderId |
문자열 | Android만 해당. Firebase 클라우드 메시징 발신자 ID. React Native SDK v1.38.0 및 Expo 플러그인 v0.4.0에 도입되었습니다. |
sessionTimeout |
정수 | 애플리케이션의 Braze 세션 제한 시간(초). |
enableSdkAuthentication |
불리언 | SDK 인증 기능을 활성화할지 여부. |
logLevel |
정수 | 애플리케이션의 로그 레벨. 기본 로그 수준은 8이며 최소한의 정보를 기록합니다. 디버깅을 위해 상세 로깅을 활성화하려면 로그 수준 0을 사용합니다. |
minimumTriggerIntervalInSeconds |
정수 | 트리거 사이의 최소 시간 간격(초) 기본값은 30초입니다. |
enableAutomaticLocationCollection |
불리언 | 자동 위치 수집이 활성화되어 있는지 여부(사용자가 허용하는 경우). |
enableGeofence |
불리언 | 지오펜스가 활성화되어 있는지 여부. |
enableAutomaticGeofenceRequests |
불리언 | 지오펜스 요청이 자동으로 이루어져야 하는지 여부. |
dismissModalOnOutsideTap |
불리언 | iOS만 해당. 사용자가 인앱 메시지 외부를 클릭할 때 모달 인앱 메시지가 해제되는지 여부. |
androidHandlePushDeepLinksAutomatically |
불리언 | Android만 해당. Braze SDK가 푸시 딥링크를 자동으로 처리해야 하는지 여부. |
androidPushNotificationHtmlRenderingEnabled |
불리언 | Android만 해당. 푸시 알림에서 텍스트 콘텐츠를 android.text.Html.fromHtml을 사용하여 HTML로 해석하고 렌더링할지 여부를 설정합니다. |
androidNotificationAccentColor |
문자열 | Android만 해당. Android 알림 강조 색상을 설정합니다. |
androidNotificationLargeIcon |
문자열 | Android만 해당. Android 알림 큰 아이콘을 설정합니다. |
androidNotificationSmallIcon |
문자열 | Android만 해당. Android 알림 작은 아이콘을 설정합니다. |
iosRequestPushPermissionsAutomatically |
불리언 | iOS만 해당. 앱 실행 시 푸시 권한에 대한 프롬프트를 사용자에게 표시해야 하는지 여부. |
enableBrazeIosRichPush |
불리언 | iOS만 해당. iOS에 리치 푸시 기능을 활성화할지 여부. |
enableBrazeIosPushStories |
불리언 | iOS만 해당. iOS용 Braze 푸시 스토리를 활성화할지 여부. |
iosPushStoryAppGroup |
문자열 | iOS만 해당. iOS 푸시 스토리에 사용되는 앱 그룹. |
iosUseUUIDAsDeviceId |
불리언 | iOS만 해당. 장치 ID가 무작위로 생성된 UUID를 사용할지 여부. |
iosForwardUniversalLinks |
불리언 | iOS만 해당. SDK가 자동으로 유니버설 링크를 인식하고 시스템 메서드로 전달해야 하는지 여부를 지정합니다(기본값: false). 활성화되면 SDK는 앱에서 유니버설 링크 지원에 정의된 시스템 메서드로 유니버설 링크를 자동으로 전달합니다. React Native SDK v11.1.0 및 Expo Plugin v3.2.0에서 도입되었습니다. |
예시 구성:
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
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"baseUrl": "YOUR-SDK-ENDPOINT",
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories",
"iosForwardUniversalLinks": false
}
],
]
}
}
안드로이드 푸시 알림 아이콘 구성
androidNotificationLargeIcon 및 androidNotificationSmallIcon를 사용할 때, 아이콘 표시를 위한 최선의 관행을 따르십시오:
아이콘 배치 및 형식
Braze Expo 플러그인으로 커스텀 푸시 알림 아이콘을 사용하려면:
- 아이콘 요구 사항에 자세히 설명된 Android의 요구 사항에 따라 아이콘 파일을 만드십시오.
- 프로젝트의 Android 네이티브 디렉토리에
android/app/src/main/res/drawable-<density>/에 배치하십시오 (예:android/app/src/main/res/drawable-mdpi/,drawable-hdpi/또는 유사한 위치). - 또는 React Native 디렉토리에서 자산을 관리하는 경우, Expo의 app.json 아이콘 구성을 사용하거나 Expo 구성 플러그인을 만들어 아이콘을 Android 드로어블 폴더로 복사할 수 있습니다.
Braze Expo 플러그인은 Android의 드로어블 리소스 시스템을 사용하여 이러한 아이콘을 참조합니다.
아이콘 요구 사항
- 작은 아이콘: 투명한 배경에 흰색 실루엣이어야 합니다 (이것은 Android 플랫폼 요구 사항입니다)
- 큰 아이콘: 풀 컬러 이미지일 수 있습니다
- 형식: PNG 형식이 권장됩니다
- 이름 지정: 소문자, 숫자 및 밑줄만 사용하십시오 (예:
my_large_icon.png)
구성 app.json에서
파일 이름 _확장자 없이_에 @drawable/ 접두사를 사용하십시오. 예를 들어, 아이콘 파일 이름이 large_icon.png인 경우, @drawable/large_icon로 참조하십시오:
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidNotificationLargeIcon": "@drawable/large_icon",
"androidNotificationSmallIcon": "@drawable/small_icon"
}
]
]
}
}
상대 파일 경로(예: src/assets/images/icon.png)를 사용하지 않거나 아이콘을 참조할 때 파일 확장자를 포함하지 마십시오. Expo 플러그인은 사전 빌드 프로세스 후 Android 네이티브 폴더에서 아이콘을 올바르게 찾기 위해 @drawable/ 접두사가 필요합니다.
작동 방식
Braze Expo 플러그인은 Android drawable 디렉토리에서 아이콘 파일을 참조합니다. npx expo prebuild를 실행하면 Expo가 네이티브 Android 프로젝트 구조를 생성합니다. 아이콘은 빌드 프로세스 전에 Android drawable 폴더에 존재해야 합니다(수동으로 배치하거나 구성 플러그인을 통해 복사). 그런 다음 플러그인은 경로 또는 확장자 없이 이름으로 이러한 드로어블 리소스를 사용하도록 Braze SDK를 구성합니다. 그래서 @drawable/ 접두사가 구성에서 필요합니다.
Android 알림 아이콘에 대한 자세한 내용은 Android의 알림 아이콘 가이드라인을 참조하십시오.
2.3 단계: 애플리케이션 빌드 및 실행
응용 프로그램을 사전 빌드하면 Braze Expo 플러그인이 작동하는 데 필요한 네이티브 파일이 생성됩니다.
1
npx expo prebuild
Expo 문서에 지정된 대로, 애플리케이션을 실행합니다. 구성 옵션에 변경 사항을 적용하면 응용 프로그램을 다시 사전 빌드하고 실행해야 합니다.
2.1 단계: 리포지토리 추가
상위 수준 프로젝트 build.gradle에서 buildscript > dependencies 아래에 다음을 추가합니다.
1
2
3
4
5
6
7
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
이것은 프로젝트에 Kotlin을 추가합니다.
2.2 단계: Braze SDK 구성
Braze 서버에 연결하려면 프로젝트의 res/values 폴더에서 braze.xml 파일을 생성합니다. 다음 코드를 붙여넣고 API 키 및 엔드포인트를 값으로 바꾸세요:
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
AndroidManifest.xml 파일에 필요한 권한을 추가합니다:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Braze SDK 버전 12.2.0 이상에서는 gradle.properties 파일에 importBrazeLocationLibrary=true 을 설정하여 android-sdk-location 라이브러리를 자동으로 가져올 수 있습니다.
2.3단계: 사용자 세션 추적 구현
openSession() 및 closeSession()에 대한 호출은 자동으로 처리됩니다.
onCreate() 메서드에 다음 코드를 추가하십시오: MainApplication 클래스:
1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
2.4 단계: 의도 업데이트 처리
MainActivity에서 android:launchMode가 singleTask로 설정된 경우, MainActivity 클래스에 다음 코드를 추가합니다.
1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
2.1 단계: (선택 사항) 동적 XCFrameworks용 Podfile 구성
BrazeUI와 같은 특정 Braze 라이브러리를 Objective-C++ 파일에 가져오려면 #import 구문을 사용해야 합니다. Braze Swift SDK의 버전 7.4.0부터 바이너리는 이 구문과 호환되는 동적 XCFrameworks로 선택적 배포 채널을 사용합니다.
이 배포 채널을 사용하려면 Podfile에서 CocoaPods 소스 위치를 수동으로 재정의합니다. 샘플을 참조하고 {your-version}을 가져오려는 관련 버전으로 바꿉니다.
1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
2.2 단계: 포드 설치
React Native는 라이브러리를 기본 플랫폼에 자동으로 연결하므로 CocoaPods를 사용하여 SDK를 설치할 수 있습니다.
프로젝트의 루트 폴더에서:
1
2
3
4
5
# To install using the React Native New Architecture
cd ios && pod install
# To install using the React Native legacy architecture
cd ios && RCT_NEW_ARCH_ENABLED=0 pod install
2.3 단계: Braze SDK 구성
AppDelegate.swift 파일 맨 위에서 Braze SDK를 가져옵니다.
1
2
import BrazeKit
import braze_react_native_sdk
application(_:didFinishLaunchingWithOptions:) 메서드에서 API 키 및 엔드포인트를 앱의 값으로 바꾸십시오. 그런 다음 구성을 사용하여 Braze 인스턴스를 생성하고 AppDelegate 에 정적 속성을 생성하여 쉽게 액세스할 수 있도록 합니다:
우리의 예제는 React Native 설정에서 여러 추상화를 제공하는 RCTAppDelegate의 구현을 가정합니다. 앱에 다른 설정을 사용하는 경우 필요에 따라 구현을 조정하십시오.
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
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "{BRAZE_API_KEY}",
endpoint: "{BRAZE_ENDPOINT}")
// Enable logging and customize the configuration here.
configuration.logger.level = .info
let braze = BrazeReactBridge.perform(
#selector(BrazeReactBridge.initBraze(_:)),
with: configuration
).takeUnretainedValue() as! Braze
AppDelegate.braze = braze
/* Other configuration */
return true
}
// MARK: - AppDelegate.braze
static var braze: Braze? = nil
AppDelegate.m 파일 맨 위에서 Braze SDK를 가져옵니다.
1
2
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"
application:didFinishLaunchingWithOptions: 메서드에서 API 키 및 엔드포인트를 앱의 값으로 바꾸십시오. 그런 다음 구성을 사용하여 Braze 인스턴스를 생성하고 AppDelegate 에 정적 속성을 생성하여 쉽게 액세스할 수 있도록 합니다:
우리의 예제는 React Native 설정에서 여러 추상화를 제공하는 RCTAppDelegate의 구현을 가정합니다. 앱에 다른 설정을 사용하는 경우 필요에 따라 구현을 조정하십시오.
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
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
endpoint:@"{BRAZE_ENDPOINT}"];
// Enable logging and customize the configuration here.
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
/* Other configuration */
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
3단계: 라이브러리 가져오기
다음으로, React Native 코드에서 import 라이브러리를 가져옵니다. 자세한 내용은 샘플 프로젝트를 확인하십시오.
1
import Braze from "@braze/react-native-sdk";
4단계: 통합 테스트(선택 사항)
SDK 통합을 테스트하려면 앱에서 다음 코드를 호출하여 사용자에 대한 새 세션을 시작하십시오.
1
Braze.changeUser("userId");
예를 들어, 앱 시작 시 사용자 ID를 할당할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.changeUser("some-user-id");
}, []);
return (
<div>
...
</div>
)
Braze 대시보드에서 사용자 검색으로 이동하여 ID가 some-user-id와 일치하는 사용자를 찾습니다. 여기에서 세션 및 기기 데이터가 기록되었는지 확인할 수 있습니다.
다음 단계
Braze SDK를 통합한 후 일반 메시징 기능을 구현할 수 있습니다:
Roku SDK 통합하기
1단계: 파일 추가
Braze SDK 파일은 Braze Roku SDK 리포지토리의 sdk_files 디렉토리에서 찾을 수 있습니다.
source디렉토리의 앱에BrazeSDK.brs를 추가합니다.components디렉토리의 앱에BrazeTask.brs및BrazeTask.xml을 추가합니다.
2단계: 참조 추가
다음 script 요소를 사용하여 기본 장면에서 BrazeSDK.brs에 대한 참조를 추가합니다.
1
<script type="text/brightscript" uri="pkg:/source/BrazeSDK.brs"/>
3단계: 구성
main.brs 에서 글로벌 노드에서 Braze 구성을 설정합니다:
1
2
3
4
5
6
7
8
globalNode = screen.getGlobalNode()
config = {}
config_fields = BrazeConstants().BRAZE_CONFIG_FIELDS
config[config_fields.API_KEY] = {YOUR_API_KEY}
' example endpoint: "https://sdk.iad-01.braze.com/"
config[config_fields.ENDPOINT] = {YOUR_ENDPOINT}
config[config_fields.HEARTBEAT_FREQ_IN_SECONDS] = 5
globalNode.addFields({brazeConfig: config})
Braze 대시보드에서 SDK 엔드포인트와 API 키를 찾을 수 있습니다.
4단계: Braze 초기화
Braze 인스턴스를 초기화합니다:
1
2
m.BrazeTask = createObject("roSGNode", "BrazeTask")
m.Braze = getBrazeInstance(m.BrazeTask)
선택적 구성
로깅
Braze 통합을 디버깅하려면 Roku 디버그 콘솔에서 Braze 로그를 확인할 수 있습니다. 자세한 내용은 Roku 개발자의 코드 디버깅을 참조하세요.
Unity Braze 소프트웨어 개발 키트 소개
유형, 함수, 변수 등의 전체 목록은 Unity 선언 파일을 참조하세요. 또한 이미 iOS용 Unity를 수동으로 통합한 경우 자동화된 통합으로 전환할 수 있습니다.
Unity SDK 통합하기
필수 조건
시작하기 전에 사용 중인 환경이 최신 Braze 소프트웨어 개발 키트 버전에서 지원되는지 확인하세요.
1단계: Braze Unity 패키지 선택
Braze .unitypackage는 C# 인터페이스와 함께 Android 및 iOS 플랫폼용 기본 바인딩을 번들로 제공합니다.
Braze Unity 릴리즈 페이지에서 여러 Braze Unity 패키지를 다운로드할 수 있습니다.
Appboy.unitypackage- 이 패키지는 Braze 인앱 메시징 및 iOS의 콘텐츠 카드 기능이 제대로 작동하는 데 필요한 Braze Android 및 iOS SDK와 iOS SDK에 대한 SDWebImage 종속성을 번들로 제공합니다. SDWebImage 프레임워크는 GIF를 포함한 이미지를 다운로드하고 표시하는 데 사용됩니다. Braze의 모든 기능을 활용하려면 이 패키지를 다운로드하여 가져오세요.
Appboy-nodeps.unitypackage- 이 패키지는 SDWebImage 프레임워크가 없다는 점을 제외하면
Appboy.unitypackage과 유사합니다. 이 패키지는 iOS 앱에 SDWebImage 프레임워크가 표시되지 않도록 하려는 경우에 유용합니다.
- 이 패키지는 SDWebImage 프레임워크가 없다는 점을 제외하면
Unity 2.6.0부터 번들로 제공되는 Braze Android SDK 아티팩트에는 AndroidX 종속성이 필요합니다. 이전에 jetified unitypackage를 사용했다면 해당되는 unitypackage로 안전하게 전환할 수 있습니다.
Braze .unitypackage는 C# 인터페이스와 함께 Android 및 iOS 플랫폼용 기본 바인딩을 번들로 제공합니다.
Braze Unity 패키지는 다음과 같은 두 가지 통합 옵션을 사용해 Braze Unity 릴리즈 페이지에서 다운로드할 수 있습니다.
Appboy.unitypackage만- 이 패키지는 추가 종속성 없이 Braze Android 및 iOS SDK를 번들로 제공합니다. 이 통합 방법을 사용하는 경우 iOS에서 Braze 인앱 메시징 및 콘텐츠 카드 기능이 제대로 작동하지 않습니다. 커스텀 코드 없이 전체 Braze 기능을 활용하려는 경우 대신 아래 옵션을 사용합니다.
- 이 통합 옵션을 사용하려면 Unity UI의 ‘Braze 구성’ 아래에서
Import SDWebImage dependency옆의 확인란이 선택 해제되었는지 확인합니다.
Appboy.unitypackage(SDWebImage포함)- 이 통합 옵션은 Braze 인앱 메시징 및 iOS의 콘텐츠 카드 기능이 제대로 작동하는 데 필요한 Braze Android 및 iOS SDK와 iOS SDK에 대한 SDWebImage 종속성을 번들로 제공합니다.
SDWebImage프레임워크는 GIF를 포함한 이미지를 다운로드하고 표시하는 데 사용됩니다. Braze의 모든 기능을 활용하려면 이 패키지를 다운로드하여 가져오세요. SDWebImage를 자동으로 가져오려면 Unity UI의 ‘Braze 구성’ 아래Import SDWebImage dependency옆의 확인란을 선택해야 합니다.
- 이 통합 옵션은 Braze 인앱 메시징 및 iOS의 콘텐츠 카드 기능이 제대로 작동하는 데 필요한 Braze Android 및 iOS SDK와 iOS SDK에 대한 SDWebImage 종속성을 번들로 제공합니다.
iOS 프로젝트에 SDWebImage 종속성이 필요한지 확인하려면 iOS 인앱 메시지 설명서 를 참조하세요.
2단계: 패키지 가져오기
Unity 편집기에서 자산 > 패키지 가져오기 > 커스텀 패키지로 이동하여 패키지를 Unity 프로젝트로 가져옵니다 다음으로, 가져오기를 클릭합니다.
또는 커스텀 Unity 패키지 가져오기에 대한 자세한 가이드는 Unity 자산 패키지 가져오기 지침을 따릅니다.
iOS 또는 Android 플러그인만 가져오려면 Braze .unitypackage를 가져올 때 Plugins/Android 또는 Plugins/iOS 하위 디렉토리를 선택 해제합니다.
Unity 편집기에서 자산 > 패키지 가져오기 > 커스텀 패키지로 이동하여 패키지를 Unity 프로젝트로 가져옵니다 다음으로, 가져오기를 클릭합니다.
또는 커스텀 Unity 패키지 가져오기에 대한 자세한 가이드는 Unity 자산 패키지 가져오기 지침을 따릅니다.
iOS 또는 Android 플러그인만 가져오려면 Braze .unitypackage를 가져올 때 Plugins/Android 또는 Plugins/iOS 하위 디렉토리를 선택 해제합니다.
3단계: 소프트웨어 개발 키트 구성하기
3.1 단계: 구성 AndroidManifest.xml
풀로 AndroidManifest.xml 가 작동합니다. 앱에 AndroidManifest.xml이 없는 경우 다음을 템플릿으로 사용할 수 있습니다. 그렇지 않으면 이미 AndroidManifest.xml이 있는 경우 기존 AndroidManifest.xml에 다음 중 누락된 섹션이 추가되었는지 확인합니다.
Assets/Plugins/Android/디렉토리로 이동하여AndroidManifest.xml파일을 엽니다. 이 위치는 Unity 에디터의 기본값입니다.AndroidManifest.xml에서 다음 템플릿의 필수 권한 및 활동을 추가합니다.- 완료되면
AndroidManifest.xml에는"android.intent.category.LAUNCHER"이 있는 하나의 활동만 포함되어 있어야 합니다.
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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="REPLACE_WITH_YOUR_PACKAGE_NAME">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:icon="@drawable/app_icon"
android:label="@string/app_name">
<!-- Calls the necessary Braze methods to ensure that analytics are collected and that push notifications are properly forwarded to the Unity application. -->
<activity android:name="com.braze.unity.BrazeUnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:label="@string/app_name"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
android:screenOrientation="sensor">
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- A Braze specific FirebaseMessagingService used to handle push notifications. -->
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
AndroidManifest.xml 파일에 등록된 모든 활동 클래스는 Braze Android SDK와 완전히 통합되어야 하며, 그렇지 않으면 분석이 수집되지 않습니다. 자체 활동 클래스를 추가하는 경우 이를 방지할 수 있도록 Braze 플레이어를 확장해야 합니다.
3.2 단계: 패키지 이름으로 AndroidManifest.xml 업데이트
패키지 이름을 찾으려면 파일 > 빌드 설정 > 플레이어 설정 > Android 탭을 클릭합니다.

AndroidManifest.xml에서 REPLACE_WITH_YOUR_PACKAGE_NAME의 모든 인스턴스는 이전 단계의 Package Name으로 바뀌어야 합니다.
Step 3.3: 그레이들 종속성 추가
Unity 프로젝트에 그래들 종속성을 추가하려면 먼저 퍼블리싱 설정에서 ‘커스텀 메인 그래들 템플릿’ 을 활성화합니다. 그러면 프로젝트에서 사용할 템플릿 gradle 파일이 생성됩니다. gradle 파일은 설정 종속성 및 기타 빌드 시점 프로젝트 설정을 처리합니다. 자세한 내용은 Braze Unity 샘플 앱의 mainTemplate.gradle.
다음 종속성이 필요합니다:
1
2
3
4
5
6
implementation 'com.google.firebase:firebase-messaging:22.0.0'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1"
implementation 'androidx.core:core:1.6.0'
외부 종속성 매니저를 사용하여 이러한 종속성을 설정할 수도 있습니다.
Step 3.4: Unity Android 통합 자동화하기
Braze는 Unity Android 통합을 자동화하기 위한 기본 Unity 솔루션을 제공합니다.
- Unity 편집기에서 Braze > Braze 구성으로 이동하여 Braze 구성 설정을 엽니다.
- Unity Android 통합 자동화 확인란을 선택합니다.
- Braze API 키 필드에 Braze 대시보드의 설정 관리에서 찾은 애플리케이션의 API 키를 입력합니다.
이 자동 통합은 프로젝트 빌드 중에 구성 값이 충돌할 수 있으므로 수동으로 생성한 braze.xml 파일과 함께 사용해서는 안 됩니다. 수동 braze.xml이 필요한 경우 자동 통합을 비활성화합니다.
3.1 단계: API 키 설정
Braze는 Unity iOS 통합을 자동화하기 위한 기본 Unity 솔루션을 제공합니다. 이 솔루션은 Unity의 PostProcessBuildAttribute를 사용하여 빌드된 Xcode 프로젝트를 수정하고 IMPL_APP_CONTROLLER_SUBCLASS 매크로를 사용하여 UnityAppController를 서브클래스로 구성합니다.
- Unity 편집기에서 Braze > Braze 구성으로 이동하여 Braze 구성 설정을 엽니다.
- Unity iOS 통합 자동화 확인란을 선택합니다.
- Braze API 키 필드에 설정 관리에서 찾은 애플리케이션의 API 키를 입력합니다.

애플리케이션에서 이미 다른 UnityAppController 서브클래스를 사용하고 있는 경우, 서브클래스 구현을 AppboyAppDelegate.mm과 병합해야 합니다.
Unity 패키지 커스터마이징
1단계: 리포지토리 복제하기
터미널에서 Braze 소프트웨어 개발 키트 GitHub 리포지토리를 복제한 다음 해당 폴더로 이동합니다:
1
2
git clone [email protected]:braze-inc/braze-unity-sdk.git
cd ~/PATH/TO/DIRECTORY/braze-unity-sdk
1
2
git clone git@github.com:braze-inc/braze-unity-sdk.git
cd C:\PATH\TO\DIRECTORY\braze-unity-sdk
2단계: 리포지토리에서 패키지 내보내기
먼저 Unity를 실행하고 백그라운드에서 계속 실행합니다. 그런 다음 리포지토리 루트에서 다음 명령을 실행하여 패키지를 braze-unity-sdk/unity-package/ 으로 내보냅니다.
1
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -nographics -projectPath "$(pwd)" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
1
"%UNITY_PATH%" -batchmode -nographics -projectPath "%PROJECT_ROOT%" -executeMethod Appboy.Editor.Build.ExportAllPackages -quit
이러한 명령을 실행한 후 문제가 발생하면 Unity를 참조하세요: 명령줄 인수.
3단계: Unity로 패키지 임포트하기
- Unity에서 자산 > 패키지 임포트 > 커스텀 패키지로 이동하여 원하는 패키지를 Unity 프로젝트로 임포트합니다.
- 가져오지 않으려는 파일이 있다면 지금 바로 선택을 취소하세요.
Assets/Editor/Build.cs에 있는 익스포트된 Unity 패키지를 커스텀합니다.
자동화 통합으로 전환(Swift만 해당)
Braze Unity SDK에서 제공하는 자동화된 iOS 통합 기능을 활용하려면 수동 통합에서 자동 통합으로 전환하는 다음 단계를 따르세요.
- Xcode 프로젝트의
UnityAppController서브클래스에서 모든 Braze 관련 코드를 제거합니다. - Unity 또는 Xcode 프로젝트에서 Braze iOS 라이브러리를 제거합니다(예:
Appboy_iOS_SDK.framework및SDWebImage.framework). - Braze Unity 패키지를 프로젝트에 다시 임포트합니다. 전체 안내는 2단계를 참조하세요: 패키지를 가져오기.
- API 키를 다시 설정하세요. 전체 안내는 3.1단계를 참조하세요: API 키 설정.
선택적 구성
상세 로깅
Unity 편집기에서 상세 로깅을 활성화하려면 다음을 수행합니다.
- Braze > Braze 구성으로 이동하여 Braze 구성 설정을 엽니다.
- Braze Android 설정 표시 드롭다운을 클릭합니다.
- SDK 로그 수준 필드에 ‘0’ 값을 입력합니다.
Prime 31 호환성
Prime31 플러그인과 함께 Braze Unity 플러그인을 사용하려면 프로젝트의 AndroidManifest.xml을 편집하여 Prime31 호환 활동 클래스를 사용합니다. 의 모든 참조를 변경합니다.
com.braze.unity.BrazeUnityPlayerActivity부터 com.braze.unity.prime31compatible.BrazeUnityPlayerActivity까지
Amazon 기기 메시징(ADM)
Braze는 Unity 앱에 ADM 푸시 통합을 지원합니다. ADM 푸시를 통합하려면 ADM API 키가 포함된 api_key.txt 파일을 만들어 Plugins/Android/assets/ 폴더에 넣으세요. ADM을 Braze와 통합하는 방법에 대한 자세한 내용은 ADM 푸시 통합 지침을 참조하세요.
Braze 플레이어 확장하기(Android만 해당)
제공된 예제 AndroidManifest.xml 파일에는 하나의 활동 클래스(BrazeUnityPlayerActivity)가 등록되어 있습니다. 이 클래스는 Braze SDK와 통합되어 있으며 세션 처리, 인앱 메시지 등록, 푸시 알림 분석 로깅 등을 통해 UnityPlayerActivity를 확장합니다. UnityPlayerActivity 클래스 확장에 대한 자세한 내용은 Unity를 참조하세요.
라이브러리 또는 플러그인 프로젝트에서 커스텀 UnityPlayerActivity를 만드는 경우, 커스텀 기능을 Braze와 통합하려면 BrazeUnityPlayerActivity를 확장해야 합니다. BrazeUnityPlayerActivity 확장 작업을 시작하기 전에, Unity 프로젝트에 Braze를 통합하기 위한 지침을 따르세요.
- Braze Android SDK 통합 지침에서 설명한 대로 라이브러리 또는 플러그인 프로젝트에 Braze Android SDK를 종속성으로 추가합니다.
- Unity 전용 기능이 포함된 Unity
.aar을 Unity용으로 빌드 중인 Android 라이브러리 프로젝트에 통합합니다.appboy-unity.aar은 공개 리포지토리에서 사용할 수 있습니다. Unity 라이브러리가 성공적으로 통합되면BrazeUnityPlayerActivity를 확장하도록UnityPlayerActivity를 수정합니다. - 라이브러리 또는 플러그인 프로젝트를 내보내고 평소처럼
/<your-project>/Assets/Plugins/Android에 끌어다 놓습니다. Braze 소스 코드는 이미/<your-project>/Assets/Plugins/Android에 있으므로 라이브러리나 플러그인에 포함하지 마세요. /<your-project>/Assets/Plugins/Android/AndroidManifest.xml을 수정하여BrazeUnityPlayerActivity하위 클래스를 기본 활동으로 지정합니다.
이제 Braze와 완전히 통합되고 커스텀 UnityPlayerActivity 기능이 포함된 .apk 패키지를 Unity IDE에서 생성할 수 있습니다.
문제 해결
오류: “파일을 읽을 수 없습니다”
다음과 유사한 오류는 안전하게 무시해도 됩니다. Apple 소프트웨어는 Unity가 인식하지 못하는 CgBI라는 독점 PNG 확장을 사용합니다. 이러한 오류는 iOS 빌드나 Braze 번들에서 관련 이미지의 올바른 표시에는 영향을 미치지 않습니다.
1
Could not create texture from Assets/Plugins/iOS/AppboyKit/Appboy.bundle/...png: File could not be read
.NET MAUI SDK 통합
Braze .NET MAUI (이전의 Xamarin) SDK를 통합하면 기본 분석 기능과 사용자와 소통할 수 있는 인앱 메시지를 사용할 수 있습니다.
필수 조건
.NET MAUI Braze SDK를 통합하기 전에 다음 요구 사항을 충족하는지 확인하십시오:
version 3.0.0부터 이 SDK는 .NET 6 이상을 사용해야 하며 Xamarin 프레임워크를 사용하는 프로젝트에 대한 지원을 제거합니다.version 4.0.0부터 이 SDK는 Xamarin & Xamarin.Forms에 대한 지원을 중단하고 .NET MAUI에 대한 지원을 추가했습니다. Xamarin 지원 종료에 대한 Microsoft의 정책을 참조하세요.
1단계: .NET MAUI 바인딩 가져오기
.NET MAUI 바인딩은 .NET MAUI 앱에서 네이티브 라이브러리를 사용하는 방법입니다. 바인딩 구현은 라이브러리에 대한 C# 인터페이스를 빌드한 다음, 애플리케이션에서 해당 인터페이스를 사용하는 작업으로 구성됩니다. .NET MAUI 설명서를 참조하십시오. Braze SDK 바인딩을 포함시키는 두 가지 방법(NuGet 사용 또는 소스에서 컴파일)이 있습니다.
가장 간단한 통합 방법은 NuGet.org 중앙 리포지토리에서 Braze SDK를 가져오는 것입니다. Visual Studio 사이드바에서 Packages 폴더를 오른쪽 클릭하고 Add Packages...를 클릭합니다. ‘Braze’를 검색하고 BrazePlatform.BrazeAndroidBinding 패키지를 프로젝트에 설치합니다.
Braze 위치 서비스 및 지오펜스를 사용하려면 BrazePlatform.BrazeAndroidLocationBinding 패키지도 설치하십시오.
두 번째 통합 방법은 바인딩 소스를 포함하는 것입니다. appboy-component/src/androidnet6 아래에서 바인딩 소스 코드를 찾을 수 있습니다. .NET MAUI 애플리케이션에서 BrazeAndroidBinding.csproj에 프로젝트 참조를 추가하면 바인딩이 프로젝트와 함께 빌드되고 Braze Android SDK에 접근할 수 있습니다.
Braze 위치 서비스 및 지오펜스를 사용하려면 appboy-component/src/androidnet6/BrazeAndroidLocationBinding 아래에 있는 BrazeAndroidLocationBinding.csproj에 프로젝트 참조를 추가하십시오.
.NET MAUI SDK 버전 4.0.0 이상에 대한 iOS 바인딩은 Braze Swift SDK를 사용하며, 이전 버전은 레거시 AppboyKit SDK를 사용합니다.
.NET MAUI 바인딩은 .NET MAUI 앱에서 네이티브 라이브러리를 사용하는 방법입니다. 바인딩 구현은 라이브러리에 대한 C# 인터페이스를 빌드한 다음 애플리케이션에서 해당 인터페이스를 사용하는 작업으로 구성됩니다. Braze SDK 바인딩을 포함시키는 두 가지 방법(NuGet 사용 또는 소스에서 컴파일)이 있습니다.
가장 간단한 통합 방법은 NuGet.org 중앙 리포지토리에서 Braze SDK를 가져오는 것입니다. Visual Studio 사이드바에서 Packages 폴더를 오른쪽 클릭하고 Add Packages...를 클릭합니다. ‘Braze’를 검색하고 최신 .NET MAUI iOS NuGet 패키지: Braze.iOS.BrazeKit, Braze.iOS.BrazeUI, 및 Braze.iOS.BrazeLocation를 프로젝트에 설치하십시오.
또한 .NET MAUI로 쉽게 마이그레이션할 수 있도록 호환성 라이브러리 패키지(Braze.iOS.BrazeKitCompat, Braze.iOS.BrazeUICompat)도 제공합니다.
두 번째 통합 방법은 바인딩 소스를 포함하는 것입니다. appboy-component/src/iosnet6 아래에서 바인딩 소스 코드를 찾을 수 있습니다. .NET MAUI 애플리케이션에서 BrazeiOSBinding.csproj에 프로젝트 참조를 추가하면 바인딩이 프로젝트와 함께 빌드되고 Braze iOS SDK에 접근할 수 있습니다. 프로젝트의 ‘참조’ 폴더에 BrazeiOSBinding.csproj가 표시되는지 확인합니다.
2단계: Braze 인스턴스 구성
2.1 단계: Braze.xml에서 Braze SDK 구성
라이브러리가 통합되었으므로 프로젝트의 Resources/values 폴더에서 Braze.xml 파일을 생성해야 합니다. 해당 파일의 내용은 다음 코드 스니펫과 비슷해야 합니다:
Braze 대시보드의 설정 > API 키에 있는 API 키를 YOUR_API_KEY 으로 대체하세요.
이전 탐색을 사용하는 경우 개발자 콘솔 > API 설정에서 API 키를 찾을 수 있습니다.
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string translatable="false" name="com_braze_api_key">YOUR_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
<string-array name="com_braze_internal_sdk_metadata">
<item>XAMARIN</item>
<item>NUGET</item>
</string-array>
</resources>
바인딩 소스를 수동으로 포함하는 경우 코드에서 <item>NUGET</item>을 제거합니다.
예를 보려면 Braze.xml, Android MAUI 샘플 앱을 확인하세요.
2.2단계: Android 매니페스트에 필수 권한 추가
API 키를 추가했으므로 AndroidManifest.xml 파일에 다음 권한을 추가해야 합니다.
1
<uses-permission android:name="android.permission.INTERNET" />
AndroidManifest.xml 의 예는 Android MAUI 샘플 애플리케이션을 참조하세요.
2.3단계: 사용자 세션 추적 및 인앱 메시지 등록
사용자 세션 추적을 활성화하고 인앱 메시지를 위해 앱을 등록하려면 앱에서 Application 클래스의 OnCreate() 생애주기 메서드에 다음 호출을 추가합니다.
1
RegisterActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
Braze 인스턴스를 설정할 때 다음 스니펫을 추가하여 인스턴스를 구성합니다.
Braze 대시보드의 설정 > API 키에 있는 API 키를 YOUR_API_KEY 으로 대체하세요.
이전 탐색을 사용하는 경우 개발자 콘솔 > API 설정에서 API 키를 찾을 수 있습니다.
1
2
3
var configuration = new BRZConfiguration("YOUR_API_KEY", "YOUR_ENDPOINT");
configuration.Api.AddSDKMetadata(new[] { BRZSDKMetadata.Xamarin });
braze = new Braze(configuration);
iOS MAUI 샘플 애플리케이션의 App.xaml.cs 파일을 참조하세요.
3단계: Test the integration
이제 애플리케이션을 실행하고 기기 정보 및 기타 분석과 함께 Braze 대시보드에 기록되는 세션을 확인할 수 있습니다. 기본 SDK 통합 모범 사례에 대한 자세한 내용은 Android 통합 지침을 참조하세요.
이제 애플리케이션을 실행하고 Braze 대시보드에 기록되는 세션을 확인할 수 있습니다. 기본 SDK 통합 모범 사례에 대한 자세한 내용은 iOS 통합 지침을 참조하세요.
현재 공개된 .NET MAUI iOS SDK 바인딩은 iOS Facebook SDK에 연결되지 않으며(소셜 데이터 연결) IDFA를 Braze에 전송하지 않습니다.
ChatGPT 앱 통합
설정
1단계: Braze 통합 파일을 받으세요
저희 ChatGPT 앱 통합 저장소에서 파일을braze.js 복사하여 여러분의 프로젝트에 붙여넣으세요. 이 파일에는 필요한 모든 Braze 소프트웨어 개발 키트 구성 및 헬퍼 함수가 포함되어 있습니다.
2단계: 의존성 설치
Braze의 최신 기능 세트를 위해 당사 웹 소프트웨어 개발 키트를 설치하세요:
클라이언트 측 통합을 위해:
1
npm install @braze/web-sdk
Implementation
사용 사례에 따라 Braze를 ChatGPT 앱과 통합하는 두 가지 방법이 있습니다:
클라이언트 측 통합 (커스텀 위젯)
권장 접근법: 이 방법은 ChatGPT 앱 위젯 내에서 풍부한 메시징 경험과 실시간 사용자 상호작용 추적을 가능하게 합니다.
사용자 정의 ChatGPT 앱 위젯 내에서 Braze 메시지를 표시하고 사용자 상호작용을 추적하려면 웹 SDK 통합을 사용하십시오. 전체 메시징 예시는 여기 샘플 저장소에서 확인할 수 있습니다.
위젯 메타데이터 구성
다음 메타데이터를 MCP 서버 파일에 추가하여 Braze 도메인을 허용하고, 해당 지역에 따라 CDN 도메인을 업데이트하십시오:
1
2
3
4
5
6
7
8
9
"openai/widgetCSP": {
connect_domains: ["https://YOUR-SDK-ENDPOINT"],
resource_domains: [
"https://appboy-images.com",
"https://braze-images.com",
"https://cdn.braze.eu",
"https://use.fontawesome.com"
],
}
실제 Braze SDK 엔드포인트로 YOUR-SDK-ENDPOINT를 대체하십시오.
useBraze 훅 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import { useBraze } from "./utils/braze";
function YourWidget() {
const braze = useBraze({
apiKey: "your-braze-api-key",
baseUrl: "your-braze-endpoint.braze.com",
});
useEffect(() => {
if (!braze.isInitialized) {
return;
}
// Set user identity
braze.changeUser("user-id-123");
// Log widget interactions
braze.logCustomEvent("viewed_pizzaz_list");
}, [braze.isInitialized]);
return (
// Your widget JSX
);
}
Braze 콘텐츠 카드 표시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const [cards, setCards] = useState([]);
useEffect(() => {
// Get cached content cards
setCards(braze.getCachedContentCards()?.cards ?? []);
// Subscribe to content card updates
braze.subscribeToContentCardsUpdates((contentCards) => {
setCards(contentCards.cards);
});
// Open session
braze.openSession();
return () => {
braze.removeAllSubscriptions();
}
}, []);
위젯 이벤트 추적
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Track user interactions within your widget
const handleButtonClick = () => {
braze.logCustomEvent("widget_button_clicked", {
button_type: "save_list",
widget_name: "pizza_list"
});
};
const handleItemInteraction = (itemId) => {
braze.logCustomEvent("item_interacted", {
item_id: itemId,
interaction_type: "view_details"
});
};
서버 측 통합 (MCP 서버)
MCP 서버에서 메시징 기능을 위한 서버 측 통합이 필요한 경우, 문의하십시오[email protected]. MCP 서버의 이벤트 및 구매 내역을 추적하려면 당사의 REST API를 사용하십시오.
Braze Vega SDK에 대한 설명
Braze Vega SDK를 사용하면 분석을 수집하고 사용자에게 풍부한 인앱 메시지를 표시할 수 있습니다. Braze Vega SDK의 대부분의 메서드는 비동기이며, 대기하거나 해결해야 하는 약속을 반환합니다.
Braze Vega SDK 통합하기
1단계: Braze 라이브러리 설치
선호하는 패키지 관리자를 사용하여 Braze Vega SDK를 설치하세요.
프로젝트에서 NPM을 사용하는 경우, Braze Vega SDK를 종속성으로 추가할 수 있습니다.
1
npm install @braze/vega-sdk --save
설치 후, 필요한 메서드를 가져올 수 있습니다:
1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
프로젝트에서 Yarn을 사용하는 경우, Braze Vega SDK를 종속성으로 추가할 수 있습니다.
1
yarn add @braze/vega-sdk
설치 후, 필요한 메서드를 가져올 수 있습니다:
1
import { initialize, changeUser, openSession } from "@braze/vega-sdk";
2단계: SDK 초기화
Braze Vega SDK가 프로젝트에 추가된 후, Braze 대시보드의 설정 > 앱 설정에서 찾은 API 키와 SDK 엔드포인트 URL으로 라이브러리를 초기화하세요.
다른 Braze 메서드를 호출하기 전에 changeUser 약속을 대기하거나 해결해야 하며, 그렇지 않으면 이벤트와 속성이 잘못된 사용자에게 설정될 수 있습니다.
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
import { useEffect } from "react-native";
import {
initialize,
changeUser,
logCustomEvent,
openSession,
setCustomUserAttribute,
setUserCountry
} from "@braze/vega-sdk";
const App = () => {
useEffect(() => {
const initBraze = async () => {
// Initialize the SDK
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60,
appVersionNumber: "1.2.3.4",
enableLogging: true, // set to `true` for debugging
});
// Change user
await changeUser("user-id-123");
// Start a session
await openSession();
// Log custom events and set user attributes
logCustomEvent("visited-page", { pageName: "home" });
setCustomUserAttribute("my-attribute", "my-attribute-value");
setUserCountry("USA");
};
initBraze();
}, []);
return (
// Your app components
);
};
익명 사용자는 MAU에 포함될 수 있습니다. 따라서 조건부로 SDK를 로드하거나 초기화하여 이러한 사용자를 MAU 수에서 제외할 수 있습니다.
선택적 구성
로깅
디버깅 및 문제 해결을 돕기 위해 SDK 로깅을 활성화할 수 있습니다. 로깅을 활성화하는 방법은 여러 가지가 있습니다.
초기화 중 로깅 활성화
디버깅 메시지를 콘솔에 기록하기 위해 initialize()에 enableLogging: true을 전달하세요:
1
2
3
initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
enableLogging: true
});
기본 로그는 모든 사용자에게 표시되므로, 코드를 프로덕션에 배포하기 전에 로깅을 비활성화하는 것을 고려하세요.
초기화 후 로깅 활성화
초기화 후 SDK 로깅을 활성화하거나 비활성화하려면 toggleLogging()을 사용하세요:
1
2
3
4
import { toggleLogging } from "@braze/vega-sdk";
// Enable logging
toggleLogging();
사용자 지정 로깅
SDK 로그 처리 방법에 대한 더 많은 제어를 위해 사용자 정의 로거 함수를 제공하려면 setLogger()을 사용하세요:
1
2
3
4
5
6
import { setLogger } from "@braze/vega-sdk";
setLogger((message) => {
console.log("Braze Custom Logger: " + message);
// Add your custom logging logic here
});
구성 옵션
SDK 동작을 사용자 정의하기 위해 initialize()에 추가 구성 옵션을 전달할 수 있습니다:
1
2
3
4
5
await initialize("YOUR-API-KEY", "YOUR-SDK-ENDPOINT", {
sessionTimeoutInSeconds: 60, // Configure session timeout (default is 30 seconds)
appVersionNumber: "1.2.3.4", // Set your app version
enableLogging: true, // Enable SDK logging
});
SDK 업그레이드하기
NPM 또는 Yarn에서 Braze Vega SDK를 참조할 때 패키지 종속성을 업데이트하여 최신 버전으로 업그레이드할 수 있습니다:
1
2
3
npm update @braze/vega-sdk
# or, using yarn:
yarn upgrade @braze/vega-sdk
통합 테스트
SDK 통합이 올바르게 작동하는지 확인하려면:
- 콘솔에서 디버그 메시지를 보려면
enableLogging: true로 SDK를 초기화하십시오 - 다른 SDK 메서드를 호출하기 전에
await changeUser()을(를) 확인하십시오 - 세션을 시작하려면
await openSession()을(를) 호출하십시오 - 세션 데이터가 기록되고 있는지 확인하려면 개요에서 Braze 대시보드를 확인하십시오
- 커스텀 이벤트를 로깅하고 대시보드에 나타나는지 확인하십시오
SDK 통합에 대한 QA를 수행하는 동안 SDK 디버거를 사용하면 앱에 대한 자세한 로깅을 켜지 않고도 문제를 해결할 수 있습니다.
GitHub 에서 이 페이지를 편집합니다.