푸시 알림을 연동하기 전, 반드시 SDK를 설치 및 초기화하여야 하며, Marketap 서버에서 푸시를 보낼 때 사용할 인증서가 등록되어있어야 합니다. 관련 내용은 아래 문서를 통해 확인해주세요.
Android SDK 설치
Android 인증서 등록
1. Google Firebase 연동하기
Marketap은 안드로이드 푸시를 지원하기 위해서 Firebase Cloud Messaging을 사용하고 있습니다. 따라서 안드로이드 프로젝트에 Firebase가 추가되어야 합니다. 자세한 내용은 구글의 가이드 문서를 참고해주세요.
FCM 푸시 메세지를 사용하기 위해서는 구글 플러그인 설치가 필요합니다.
id("com.google.gms.google-services") version "4.4.2"
2. 권한 설정하기
AndoirdManifest.xml 파일
이어서, AndroidManifest.xml 파일에 아래 권한을 추가합니다.
3. Firebase Messaging Service 연동하기
Marketap에서 푸시를 사용하기 위해서는 앱의 푸시 이용 상황에 따른 설정이 필요합니다.
Marketap은 FCM 기반 푸시 메시지를 수신하고 클릭을 처리하기 위한 전용 서비스를 제공합니다. MarketapFirebaseMessagingService 클래스를 AndroidManifest.xml 파일에 등록해 주세요.
이미 앱에서 FirebaseMessagingService를 사용 중이라면, Marketap에서 제공하는 MarketapFirebaseMessagingService.handleMarketapRemoteMessage() 메서드를 통해 Marketap 푸시만 안전하게 처리할 수 있습니다.
4. 앱 푸시 수신 설정 (선택)
푸시 알림을 발송하려면 사용자에게 수신 동의를 받아야 합니다. 관련 권한을 앱에서 직접 관리하거나, 원하는 타이밍에 Marketap.requestAuthorizationForPushNotifications 함수를 통해 권한을 요청할 수 있습니다.
마켓탭은 따로 호출이 없다면 권한을 요청하지 않습니다. 반드시 필요한 타이밍에 직접 함수 호출을 통해 사용자에게 푸시 수신 권한을 받아주세요.
5. 클릭 액션 커스텀하기 (선택)
푸시 캠페인에 클릭 액션 URL이 설정되어 있는 경우, 마켓탭 SDK는 기본 동작으로 ACTION_VIEW 인텐트를 실행하여 해당 URL을 처리합니다.
실행된 URL은 앱의 딥링크 처리 Activity(예: intent-filter에 등록된 Activity의 onCreate 또는 onNewIntent)에서 수신하여 처리할 수 있습니다.
이 기본 동작을 비활성화하고 클릭 시 액션을 직접 제어하려면, 아래 페이지 안내에 따라 clickHandler 기반 커스텀 연동을 진행해주세요.
// Kotlin 예시
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onMessageReceived(remoteMessage: RemoteMessage) {
super.onMessageReceived(remoteMessage)
if (MarketapFirebaseMessagingService.handleMarketapRemoteMessage(this, remoteMessage)) {
// Marketap 메시지를 처리했습니다.
// 추가 처리는 필요하지 않습니다.
} else {
// Marketap 메시지가 아닙니다.
// 다른 푸시 핸들러가 있다면 이 메시지를 전달하세요.
}
}
}
// Java 예시
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
if (MarketapFirebaseMessagingService.handleMarketapRemoteMessage(this, remoteMessage)) {
// Marketap 메시지를 처리했습니다.
// 추가 처리는 필요하지 않습니다.
} else {
// Marketap 메시지가 아닙니다.
// 다른 푸시 핸들러가 있다면 이 메시지를 전달하세요.
}
}
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val permissionButton = findViewById<Button>(R.id.permissionButton)
permissionButton.setOnClickListener {
Marketap.requestAuthorizationForPushNotifications(this)
}
// ...
}
// ...
}