중요!
이 통합은 이미 구글 애널리틱스 포 파이어베이스 SDK가 구현된 iOS 및 안드로이드 앱에서 작동합니다. 통합이 성공하려면, AppsFlyer SDK가 Firebase SDK에서 app_instance_id 값을 수집해야 합니다. Firebase SDK에서 앱 인스턴스 ID를 검색하는 방법에 대한 지침을 참조하세요 여기.
어떻게 작동하나요?
-
새로운 설치가 발생할 때 AppsFlyer가 터치포인트 세부정보— 미디어 소스, 캠페인 이름 및 캠페인 ID를 GA4로 전송합니다. 또한 Firebase SDK의
app_instance_id를 전송하여 해당 사용자의 GA4에 터치포인트가 기록되도록 합니다. - 인앱 이벤트가 발생할 때 GA4는 마지막 터치포인트에 이벤트를 귀속시킵니다.
구글 애널리틱스(GA4) 통합 설정
아래 지침을 따라 구글 애널리틱스(GA4)와의 통합을 구성하세요.
1. 파트너 마켓플레이스에서 구글 애널리틱스(GA4)를 선택하세요.
2. AppsFlyer에서 GA4 통합 설정
다음 설정을 구성하세요:
-
연동 탭에서 연동할 앱을 선택하고 파트너 활성화를 켭니다.
참고: 파트너와 작업하는 동안 토글이 켜져(활성화됨) 있어야 합니다.
파트너 활성화에 대한 자세한 내용을 보려면 여기를 클릭하십시오.
- 파이어베이스 앱 ID에 파이어베이스 앱의 식별자를 입력하세요. 파이어베이스 앱 ID를 찾는 방법은 파이어베이스 문서를 참조하세요.
- API 비밀에 구글 애널리틱스에 대한 포스트백을 인증하기 위한 API 비밀을 입력하세요. API 비밀은 구글 애널리틱스 사용자 인터페이스를 통해 생성됩니다. 비밀을 보거나 편집하거나 생성하려면 Google 문서의 지침을 따르십시오. 웹 데이터 스트림을 선택하라는 지시를 받으면 Android 또는 iOS 데이터 스트림을 선택하십시오.
- 광고 ID(IDFA) 대신 고객 사용자 ID(CUID)를 전송하려면 고객 사용자 ID를 활성화하십시오.
-
기본 포스트백 섹션에서 사용자 출처에 대해 유기적을 포함한 모든 미디어 소스를 선택하십시오.
참고
설치 포스트백에는 터치포인트(미디어 소스, 캠페인 이름 및 캠페인 ID)의 세부정보만 포함됩니다.
3. 인앱 이벤트 포스트백을 설정합니다.
통합 탭에서 AppsFlyer 인앱 이벤트를 Google Analytics(GA4) 이벤트에 매핑하고 포스트백을 통해 전송합니다.
참고
- 모바일 인앱 이벤트를 S2S를 통해 전송하는 포스트백은 지원되지 않습니다.
- GA4는 Firebase SDK와 AppsFlyer에서 전송된 이벤트를 중복 제거하지 않습니다. 따라서 Firebase SDK를 통해 GA4에 이미 전송되지 않은 이벤트에 대해서만 인앱 이벤트 포스트백을 구성하는 것이 좋습니다.
- 인앱 이벤트 포스트백을 켭니다.
-
이벤트 추가를 클릭하여 SDK 이벤트를 목록에 추가합니다. 다음 표는 작성해야 할 필드를 설명합니다.
파라미터 이름 설명 앱스플라이어 이벤트 앱에 통합된 AppsFlyer SDK에서 수신한 이벤트의 이름입니다.
팁: 찾고 있는 이벤트가 없나요?
- 논오가닉 인스톨 및 재확인을 통해 기기에서 이벤트가 활성화되었는지 확인합니다.
- 앱스플라이어 이벤트에 입력한 다음 커스텀 생성을 클릭합니다.
사용자정의 이벤트 매핑에 대해 더 자세히 알아보십시오.
mapped to partner event 파트너 측에서 정의한 각 이벤트의 고유한 이름 또는 ID입니다. 가능한 매핑 구성은 다음과 같습니다.
- 텍스트 필드: 파트너로부터 해당 이벤트 ID를 받으세요.
- 드롭다운 상자: 사전 정의된 앱스플라이어 이벤트 중 가장 적합한 것을 선택합니다.
- 변경 없이: 이름 매핑 없이 이벤트를 있는 그대로 전송합니다.
유입 출처 이벤트의 전송 옵션을 선택합니다.
- 오가닉을 포함한 모든 미디어 소스: 어트리뷰션된 모든 파트너 이벤트 및 오가닉 이벤트에 대해서도 포스트백을 보냅니다.
포함 - 데이터 없음(기본값): 이벤트 값 없이 이벤트 자체만 전송합니다.
- 값 및 수익: 이벤트에 수익 값이 포함되어 있다면, 수익 값을 포함한 모든 이벤트 파라미터를 전송해 주세요.
- 수익 없는 값: 수익 값을 제외한 모든 파라미터를 전송합니다.
- [선택 사항] 조건 추가 아이콘 (
)을 클릭하여 이벤트에 대한 조건 설정을 합니다.
- 연동 저장을 클릭합니다.
- 이벤트 포스트백 매핑 전송
4. 개발자에게 포스트백 이벤트 매핑 전송
인앱 이벤트 매핑을 설정한 후, 각 매핑된 이벤트가 다음 열이 있는 행에 해당하는 표를 개발자에게 전송하십시오:
- AF 이벤트: AppsFlyer 이벤트의 이름입니다.
-
Google 이벤트에 매핑됨: Google Analytics의 이벤트 이름입니다.
중요!
사용자 정의 Google Analytics 이벤트의 이름으로 Google 예약 이벤트 중 어떤 것도 사용하지 마십시오.
-
AF 이벤트 매개변수(필수): Google Analytics에 전송되는 이벤트 포스트백에 포함되어야 하는 미리 정의된 AppsFlyer 이벤트 매개변수입니다.
중요!
이벤트 정의에 모든 미리 정의된 AF 이벤트 매개변수를 표에 나열된 대로 정확히 포함하는 것은 필수입니다. 이를 준수하지 않으면 Google Analytics가 포스트백을 거부합니다.
이벤트 매핑 테이블
다음 표에는 모든 Google Analytics 이벤트와 그에 대한 미리 정의된 AppsFlyer 매개변수가 포함되어 있습니다. 개발자에게 매핑한 이벤트만 포함된 표를 보내십시오.
예약된 Google 이벤트 이름
다음 이벤트 이름은 예약되어 있으며 사용자 정의 이벤트 이름으로 사용할 수 없습니다:
ad_activeviewad_clickad_exposuread_queryad_rewardadunit_exposureapp_clear_dataapp_exceptionapp_installapp_removeapp_store_refundapp_updateapp_upgradedynamic_link_app_opendynamic_link_app_updatedynamic_link_first_openerrorfirebase_campaignfirebase_in_app_message_actionfirebase_in_app_message_dismissfirebase_in_app_message_impressionfirst_openfirst_visitin_app_purchasenotification_dismissnotification_foregroundnotification_opennotification_receivenotification_sendos_updatesession_startuser_engagement
5. AppsFlyer SDK에서 앱 인스턴스 ID를 검색하십시오.
앱 인스턴스 ID는 Firebase 앱의 특정 설치를 고유하게 식별합니다. 이 값은 Firebase SDK에서 SDK에 의해 검색되어야 합니다.
개발자가 다음을 구현하도록 하십시오:
- Firebase에서
app_instance_id필드를 수집하십시오. - 첫 번째 실행 전에
setAdditionalData을 호출하여 앱 인스턴스 ID(및 사용되는 경우ga_session_id)를 설치, 세션 및 인앱 이벤트에 포함합니다.
중요!
setAdditionalData (안드로이드 / 유니티 / 리액트 네이티브) 및 customData (iOS)는 키-값 쌍의 매핑을 수락합니다. 앱이 app_instance_id와 ga_session_id를 모두 전송하는 경우(참조: 6단계), 같은 매핑에 함께 전송하여 두 값이 모두 포함되도록 합니다. 별도의 setAdditionalData 호출로 전송하는 경우, 나중에 전송된 것이 이전 것을 덮어씁니다.
Kotlin
FirebaseAnalytics.getInstance(this).appInstanceId.addOnCompleteListener { task ->
if (task.isSuccessful) {
AppsFlyerLib.getInstance().setAdditionalData("app_instance_id", task.result)
}
}
java
FirebaseAnalytics.getInstance(this).getAppInstanceId().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
AppsFlyerLib.getInstance().setAdditionalData("app_instance_id", task.getResult());
}
});
API 참조: setAdditionalData
iOS native
let appInstanceId = Analytics.appInstanceID()
AppsFlyerLib.shared().customData = ["app_instance_id": appInstanceId]
Objective C
(void) fetchAnalyticsInstanceId {
NSString *instanceID = [FIRAnalytics appInstanceID];
[[AppsFlyerLib shared] setAdditionalData:@{@"app_instance_id": instanceID}];
}
API 참조: customData
using Firebase.Analytics;
public class AnalyticsManager : MonoBehaviour
{
private async void Start()
{
AppsFlyer.initSDK(devKey, appID, this);
string appInstanceId = await FirebaseAnalytics.GetAnalyticsInstanceIdAsync();
Dictionary <string, string> customData = new Dictionary<string, string>();
customData.Add("app_instance_id", appInstanceId);
AppsFlyer.setAdditionalData(appInstanceId);
AppsFlyer.startSDK();
}
}
API 참조: setAdditionalData
API 참조: setAdditionalData
6. AppsFlyer SDK에서 GA4 세션 ID를 검색합니다.
ga_session_id는 Firebase 앱의 세션을 고유하게 식별합니다. 이 값은 Firebase SDK에서 검색하여 setAdditionalData API를 사용하여 GA4로 전송해야 합니다.
개발자가 다음을 구현하도록 하십시오:
- Firebase에서
ga_session_id필드를 수집하십시오. - 첫 번째 실행 전에
setAdditionalData을 호출하여 세션 ID(및 사용되는 경우app_instance_id)를 포함합니다. - API를 호출할 때
ga_session_id키를 사용하십시오.
중요!
setAdditionalData (안드로이드 / 유니티 / 리액트 네이티브) 및 customData (iOS)는 키-값 쌍의 매핑을 수락합니다. 앱이 app_instance_id와 ga_session_id를 모두 전송하는 경우(참조: 5단계), 같은 매핑에 함께 전송하여 두 값이 모두 포함되도록 합니다. 별도의 setAdditionalData 호출로 전송하는 경우, 나중에 전송된 것이 이전 것을 덮어씁니다.
Kotlin
FirebaseAnalytics.getInstance(this).sessionId.addOnCompleteListener { task ->
if (task.isSuccessful) {
AppsFlyerLib.getInstance().setAdditionalData("ga_session_id", task.result)
}
}
java
FirebaseAnalytics.getInstance(this).getSessionId().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
AppsFlyerLib.getInstance().setAdditionalData("ga_session_id", task.getResult());
}
});
API 참조: setAdditionalData
Swift
if #available(iOS 14.0, *) {
Analytics.sessionID { sessionID, error in
if let sessionID = sessionID {
AppsFlyerLib.shared().customData = ["ga_session_id": sessionID]
}
}
}
Objective-C
- (void)fetchAnalyticsSessionId {
if (@available(iOS 14.0, *)) {
[FIRAnalytics sessionIDWithCompletion:^(NSString * _Nullable sessionID, NSError * _Nullable error) {
if (sessionID) {
[[AppsFlyerLib shared] setAdditionalData:@{@"ga_session_id": sessionID}];
}
}];
}
}
API 참조: customData
using Firebase.Analytics;
using System.Threading.Tasks;
using AppsFlyerSDK;
using UnityEngine;
using System.Collections.Generic;
public class AnalyticsManager : MonoBehaviour
{
private async void Start()
{
AppsFlyer.initSDK("yourDevKey", "yourAppID", this);
// Get session ID
string sessionId = await FirebaseAnalytics.GetSessionIdAsync();
Dictionary<string, string> customData = new Dictionary<string, string>();
customData.Add("ga_session_id", sessionId);
AppsFlyer.setAdditionalData(customData);
AppsFlyer.startSDK();
}
}
API 참조: setAdditionalData
7. GA4 통합 검증
GA4에 전송하는 포스트백의 이벤트가 Google Analytics에 등록되고 읽히는지 확인하십시오. 광고주가 데이터를 보기 위해 사용할 수 있는 두 가지 방법이 있습니다:
- GA4 Explorations을 사용하면 모든 관련 매개변수와 함께 원시 이벤트 데이터를 탐색할 수 있습니다. 전제 조건: Big Query export는 귀하의 속성에서 설정해야 합니다.)
-
The Events report는 광고주가 포스트백 이벤트를 볼 수 있게 해줍니다. 보고서는 하나 이상의 보고서 컬렉션에서 찾을 수 있습니다.
예를 들어, 이벤트 보고서는 Life cycle 또는 Games reporting 컬렉션에서 Engagement > Events 아래에서 찾을 수 있습니다.
이벤트 보고서에 대한 자세한 내용은 Google 문서을 참조하십시오. -
The Traffic acquisition report는 웹사이트 및 앱 방문자가 어디에서 오는지 이해하는 데 도움이 됩니다.
Life cycle collection 아래에서 Acquisition > Traffic Acquisition으로 이동하십시오.)
트래픽 획득 보고서에 대한 자세한 내용은 Google 문서을 참조하십시오.