에어브릿지는 앱 이벤트를 최근 6개월 동안 1번이라도 트래킹한 유저를 대상으로 사일런트 푸시를 매일 KST(한국표준시간) 0시~1시 사이에 보내서 앱 삭제 여부를 확인합니다. 앱 삭제 이벤트는 에어브릿지 리포트와 로우 데이터 등으로 확인할 수 있습니다.
파이어베이스 클라우드 메시징(Firebase Cloud Messaging, FCM)을 사용해 안드로이드 환경에서 발생한 앱 삭제를 트래킹합니다.
파이어베이스 인증 정보를 에어브릿지 대시보드에 입력하면 안드로이드 환경에서 발생한 앱 삭제를 트래킹할 수 있습니다.
구글 클라우드 콘솔에서 아래 3가지 작업을 통해 인증 정보를 확인해 주세요.
아래 순서에 따라 안드로이드 앱 삭제 트래킹에 필요한 구글 클라우드 IAM 커스텀 역할을 만들어 주세요.
1. 구글 클라우드 콘솔에 로그인합니다. 드롭다운 목록에서 커스텀 역할을 만드는 프로젝트를 선택합니다.
2. [IAM 및 관리자]>[역할]로 이동합니다. ‘역할 만들기’를 클릭합니다.
3. 역할의 제목, ID, 역할 실행 단계를 아래와 같이 설정합니다.
제목: Airbridge Uninstalls
ID: abr_uninstalls
역할 실행 단계: 일반 안정화 버전
4. ‘권한 추가’를 클릭합니다.
5. ‘속성 이름 또는 값 입력’을 클릭합니다. cloudmessaging.messages.create를 검색하고 선택합니다. 체크박스를 클릭하고 ‘추가’를 클릭합니다.
6. ‘만들기’를 클릭하면 커스텀 역할이 만들어집니다.
아래 순서에 따라 비공개 키를 생성하는 서비스 계정을 만들어 주세요.
1. [IAM 및 관리자]>[서비스 계정]으로 이동합니다. ‘서비스 계정 만들기’를 클릭합니다.
2. 서비스 계정 이름을 ABR Uninstall Service Account로 설정합니다. ‘만들고 계속하기’를 클릭합니다.
3. ‘역할 선택’ 드롭다운 목록에서 Airbridge Uninstalls를 검색하고 선택합니다. ‘계속’을 클릭합니다.
4. ‘완료’를 클릭하면 서비스 계정이 만들어집니다.
아래 순서에 따라 인증 정보가 포함된 비공개 키 파일을 생성해 주세요.
1. [IAM 및 관리자]>[서비스 계정]으로 이동합니다. 서비스 계정 목록에서 이름이 ABR Uninstall Service Account인 서비스 계정의 이메일을 클릭합니다.
2. [키] 탭을 선택합니다. ‘키 추가’를 클릭하고 ‘새 키 만들기’를 선택합니다.
3. 키 유형을 JSON으로 선택하고 ‘만들기’를 클릭하면 비공개 키가 포함된 JSON 파일이 다운로드됩니다. JSON 파일을 안전한 위치에 저장합니다.
아래 순서에 따라 인증 정보를 입력해 주세요.
1. 에어브릿지 대시보드 [설정]>[앱 삭제 이벤트 트래킹]로 이동합니다.
2. [안드로이드] 탭에 구글 클라우드 콘솔에서 다운로드한 JSON 파일을 업로드합니다.
3. 파일을 드롭하거나 클릭으로 파일을 선택할 수 있습니다.
사일런트 푸시 테스트로 사일런트 푸시가 디바이스에 정상적으로 전송되는지 확인할 수 있습니다. 테스트를 진행하기 위해서는 ‘사일런트 푸시 테스트’를 클릭하고 테스트 디바이스의 FCM 등록 토큰을 입력해야 합니다. FCM 등록 토큰을 확인하는 방법은 파이어베이스 가이드를 참고해 주세요.
사일런트 푸시가 디바이스에 정상적으로 전송되면 앱을 설치한 디바이스에 대해 성공 메시지를 확인할 수 있습니다. 또는 앱을 삭제한 디바이스에 대해 404 에러 코드를 확인할 수 있습니다.
안드로이드 환경의 사일런트 푸시 테스트로 확인할 수 있는 주요 에러 코드는 아래와 같습니다. 에러 코드에 관한 자세한 내용은 파이어베이스 가이드를 참고해 주세요.
에러 코드 | HTTP 오류 코드 | 설명 |
---|---|---|
INVALID_ARGUMENT | 400 | 요청 매개변수가 잘못되었습니다. 패키지 이름 등이 정상적으로 입력되었는지 확인하세요. |
THIRD_PARTY_AUTH_ERROR | 401 | APN 인증서 또는 웹 푸시 인증 키가 유효하지 않거나 누락되었습니다. 인증 정보를 다시 확인하세요. |
SENDER_ID_MISMATCH | 403 | 인증된 발신자 ID가 등록 토큰의 발신자 ID와 다릅니다. 발신자 ID를 다시 확인하세요. |
UNREGISTERED | 404 | 등록 토큰이 잘못되었습니다. 에어브릿지 기준 앱이 삭제되었다는 뜻입니다. 앱 삭제 이벤트가 에어브릿지에 정상적으로 수집될 수 있습니다. |
QUOTA_EXCEEDED | 429 | 메시지 대상에 대한 전송 한도가 초과되었습니다. |
INTERNAL | 500 | 파이어베이스 서버에서 오류가 발생했습니다. 잠시 기다린 후에 테스트를 다시 진행하세요. 오류가 지속되면 파이어베이스에 문의하세요. |
UNAVAILABLE | 503 | 파이어베이스 서버가 과부하되어 요청이 제때 처리되지 않았습니다. 잠시 기다린 후에 테스트를 다시 진행하세요. |
사일런트 푸시 테스트는 에어브릿지에서 확인할 수 있는 앱 삭제 이벤트 수치에 어떠한 영향도 주지 않습니다. 따라서 사일런트 푸시 테스트로는 에어브릿지 리포트 또는 로우 데이터 추출에서 앱 삭제 이벤트 발생 여부를 확인할 수 없습니다.
앱 삭제를 트래킹하기 위해서는 에어브릿지 SDK 설정을 완료해야 합니다. AndroidManifest.xml 에 아래처럼 추가해 주세요
<service
android:name="${packageName}.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
파이어베이스 클라우드 메시징(Firebase Cloud Messaging, FCM)에서 생성된 푸시 토큰(push token)을 에어브릿지 SDK를 통해 전달합니다.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
}
override fun onNewToken(token: String) {
super.onNewToken(token)
Airbridge.registerPushToken(token)
}
}
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
}
@Override
public void onNewToken(String token) {
super.onNewToken(token);
Airbridge.registerPushToken(token);
}
}
이미 파이어베이스 클라우드 메시징에서 푸시 토큰이 발급됐을 수 있습니다. 아래 설정을 추가해 기존 푸시 토큰도 함께 전달해 주세요.
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
...
FirebaseMessaging.getInstance()
.token
.addOnSuccessListener {
Airbridge.registerPushToken(it)
}
...
}
}
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FirebaseMessaging.getInstance()
.getToken()
.addOnSuccessListener(new OnSuccessListener<String>() {
@Override
public void onSuccess(String token) {
Airbridge.registerPushToken(token);
}
});
}
}
주의하세요
반드시 해당 함수가 Airbridge SDK의 초기화 작업 이후에 호출 될 수 있도록 작성해 주세요.
사일런트 푸시로 별도 데이터 없이 사일런트 알림이 전송됩니다. 하지만 파이어베이스 클라우드 메시징의 onMessageReceived
구현에 따라 사일런트 푸시의 알림이 유저에게 노출될 수 있습니다. 아래 예외 처리를 추가하면 사일런트 푸시가 유저에게 노출되지 않습니다.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
if (Airbridge.isUninstallTrackingNotification(remoteMessage)) {
return
} else {
// handle notification
}
}
override fun onNewToken(token: String) {
super.onNewToken(token)
Airbridge.registerPushToken(token)
}
}
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (Airbridge.isUninstallTrackingNotification(remoteMessage)) {
return;
} else {
// handle notification
}
}
@Override
public void onNewToken(String token) {
super.onNewToken(token);
Airbridge.registerPushToken(token);
}
}
에어브릿지 대시보드에 인증 정보를 입력하고 에어브릿지 SDK 설정을 마치면 앱 삭제 트래킹 토글을 활성화할 수 있습니다. 토글을 활성화하면 앱 삭제 트래킹이 시작됩니다.
앱 삭제에 관한 자세한 내용은 에어브릿지 가이드에서 확인해 주세요.
도움이 되었나요?