Wisetracker Docs
웹사이트블로그콘솔 바로가기도입 문의이용 문의
🧑‍💻 개발자 가이드
🧑‍💻 개발자 가이드
  • 와이즈트래커 개발자 가이드
  • quick start
    • 앱 광고 트래킹을 위한 필수 지식
    • SDK 설정 전 기초 진단
    • SDK 설정 후 체크리스트
      • Android
      • iOS
      • ReactNative
      • Flutter
      • Unity
      • Cordova
      • Cocos2d-x
      • Web
    • SDK 데이터 검증
    • 이벤트 발생 현황
  • SDK 연동
    • Android
      • SDK 삽입
      • 필수 이벤트 설정
      • App Link 설정
      • Android 12 ADID 변경사항
    • iOS
      • SDK 삽입
      • 필수 이벤트 설정
      • App Store '개인정보 세부 사항' 가이드
      • Universal Link 설정
    • HybridApp WebView
      • SDK 삽입
      • 필수 이벤트 설정
    • React Native
      • React Native 플러그인 연동
      • 인앱 분석 API
      • AOS 데이터 검증
      • iOS 데이터 검증
    • Flutter
      • Flutter 플러그인 연동
      • AOS 데이터 검증
      • iOS 데이터 검증
    • Unity
      • Unity 플러그인 연동
      • 인앱 이벤트 API
      • AOS 데이터 검증
      • iOS 데이터 검증
    • Website
      • Javascript SDK Integration
      • 웹사이트 이벤트 분석하기
    • CPC 광고 분석 연동
      • Web-To-App SDK 적용
      • App 으로 이동시키기
  • 앱심사 개인정보 처리 가이드
    • SDK 개인정보 처리 가이드
  • SDK 데이터 검증
    • Android 데이터 검증
    • iOS 데이터 검증
    • 웹사이트 데이터 검증
  • In-App Event
    • 인앱 이벤트 설정
      • 페이지 분석
      • 커스텀 차원(Custom Dimension)
    • 인앱 이벤트 리스트
      • Basic : 공통 이벤트
      • Messaging : 푸시/인앱 메시지
      • e-Commerce : 이커머스
      • Education : 교육
      • Travel : 여행 및 레저
      • Entertainment : 엔터테인먼트
      • Game : 게임
      • Fintech : 금융
      • Mobility : 모빌리티
    • 인앱 이벤트 태깅(Tagging)
  • Google Tag Manager 연동
    • 연동 방법
  • Server-to-Server 연동
    • 연동 방법
    • 연동 이벤트
    • 연동 데이터 요약
  • 푸시메세지 가이드
    • 앱 푸시메시지 연동
      • Android
        • FCM 인증서 설정
        • 대시보드 설정
        • SDK 설치 및 API 적용
        • 푸시 알림 데이터 이용
      • iOS
        • APNS 설정
        • 대시보드 설정
        • SDK 설치 및 API 적용
        • 푸시 알림 데이터 이용
      • React Native
        • 준비 사항 안내
        • Android 기초 설정
        • iOS 기초 설정
        • ReactNative 푸시메세지 설정
      • Flutter
        • 준비 사항 안내
        • Android 기초 설정
        • iOS 기초 설정
        • Flutter 푸시메세지 설정
    • 푸시 알림 데이터 이용
Powered by GitBook
On this page
  • SDK 설치 및 초기화
  • SDK 설치
  • AuthorizationKey 등록
  • HTTP 통신 허용
  • MainActivity 찾기
  • 초기화
  • PushMessage API 적용
  • Device Token 수집
  • 푸시메시지 클릭 측정
  • 푸시 수신동의
  • 축하합니다 🎉

Was this helpful?

  1. 푸시메세지 가이드
  2. 앱 푸시메시지 연동
  3. Android

SDK 설치 및 API 적용

Push 발송을 위한 SDK 설치 및 적용을 설명합니다.

SDK 설치 및 초기화

SDK 설치

프로젝트 수준의 build.gradle

프로젝트의 build.gradle ( root 파일 ) 에 아래와 같이 repository 주소를 추가해주세요.

...
allprojects {
    repositories {
        google()
        mavenCentral()
        /* wisetracker sdk repository config */
        maven {
            def endPoint = "https://analytics.wisetracker.co.kr/console/android/sdk/github/credentials.do"
            url = uri(new URL(endPoint+'?name=URI').text)
            credentials {
                username = new URL(endPoint+'?name=USER').text
                password = new URL(endPoint+'?name=TOKEN').text
            }
        }
    }
}
...
buildscript {
  repositories {
    google()
    mavenCentral()
  }
  dependencies {
    ...
    /* Google services */
    classpath 'com.google.gms:google-services:4.3.15'  // Google Services plugin
    ...
  }
}

Android 13 이상의 버전에서 푸시 알림 권한 획득을 위한 설정

프로젝트 수준 혹은, app 수준 "build.gradle"의 "targetSdkVersion = 33" 이상이어야 합니다.

buildscript {
    ext {
        ...
        targetSdkVersion = 33
        ...

app모듈 수준의 build.gradle

프로젝트의 app/build.gradle 파일에 있는 dependencies에 아래와 같이 Wisetracker SDK를 추가해주세요.

이 때, Java와 Kotlin에 따라 이용하는 모듈명이 달라집니다.

...
// Add the following line:
apply plugin: 'com.google.gms.google-services'  // Google Services plugin
...

android {
  ...
}
...
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ....
    // SDK 적용
    implementation "com.sdk.wisetracker:base_module:latest.release"
    implementation "com.sdk.wisetracker:new_dot_module:latest.release"
    
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
    // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-messaging'
}
...
...
// Add the following line:
apply plugin: 'com.google.gms.google-services'  // Google Services plugin
...

android {
  ...
}
...
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ....
    // SDK 적용
    implementation "com.sdk.wisetracker:base_module:latest.release"
    implementation "com.sdk.wisetracker:new_dot_module:latest.release"
    
    // Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
    // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation 'com.google.firebase:firebase-messaging-ktx'
}
...

AuthorizationKey 등록

app/res/values/strings.xml

프로젝트의 app/res/values/strings.xml 파일에 아래 코드를 추가합니다. 추가한 코드 중 3번 라인 serviceNumber의 value를 올바른 값으로 변경해야 합니다.

...
<!--
  // =======================================================
  // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할
  // 필요가 없습니다.  메시징 서비스만 이용하는 경우 참조해주세요.
  // =======================================================
-->
<string-array name="dotAuthorizationKey">
    <item name="useMode">1</item>
    <item name="serviceNumber">xxxxx</item>
    <item name="expireDate">14</item>
    <item name="isDebug">false</item>
    <item name="isInstallRetention">true</item>
    <item name="isFingerPrint">true</item>
    <item name="accessToken"></item>
</string-array>
...

대시보드 화면 좌측 메뉴에서 "서비스 설정 > 어플리케이션 설정"화면에서 "서비스 번호"를 복사하여

"app/res/values/strings.xml"파일 3번 라인 serviceNumber의 value로 입력해주세요.

HTTP 통신 허용

프로젝트의 Target API가 API Level 28 이상일 경우에 적용하는 설정입니다. 아래와 같이 HTTP 통신을 허용하는 두 가지 설정을 추가해주세요. 하나는 "AndroidManifest.xml"설정이고 다른 하나는 "network_security_config.xml"파일을 새로 만드는 것입니다. // ======================================================= // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할 // 필요가 없습니다. 메시징 서비스만 이용하는 경우 참조해주세요. // =======================================================

<application
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:networkSecurityConfig="@xml/network_security_config"
    android:theme="@style/AppTheme">
...

app/res/xml/network_security_config.xml

해당 위치에 "network_security_config.xml"파일을 새로 생성합니다.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">trk.analytics.wisetracker.co.kr</domain>
    </domain-config>
</network-security-config>

MainActivity 찾기

MainActivity에 구현되어야 하는 내용들을 설명하기 전에 내 앱의 Main 은 어떤 Activity 인지 알아야 합니다. 아래 구현되는 내용의 상당 부분은 MainActivity를 대상으로 합니다.

MainActivity는 앱이 실행될 때 처음으로 시작되는 위치를 가리키며 "AndroidManifest.xml"파일에 아래와 같은 "intent-filter"가 적용된 Activity입니다.

<!--
  // =======================================================
  // 아래와 같은 "intent-filter"가 적용된 activity가 Main입니다.
  // 아래 "AndroidManifest.xml"내용을 참조해주세요.
  // =======================================================
-->
<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.support.wisetracker">

  <application
      ...>
    ...
    <activity
        android:name=".MainActivity"
        android:exported="true"
        android:screenOrientation="fullSensor"
        android:theme="@style/Theme.SdkSample.NoActionBar">
      <!--
        // =======================================================
        // 아래와 같은 "intent-filter"가 적용된 activity가 Main입니다.
        // =======================================================
      -->
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
    ...
  </application>

</manifest>

초기화

Application을 상속받는 클래스가 아닌 Activity를 상속받는 기본 화면의 onCreate() 메쏘드에 적용해 주세요

MainActivity

import com.sdk.wisetracker.new_dot.open.DOT;

public class MainActivity extends AppCompatActivity {
  ...
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);    
    ...
    // =======================================================
    // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할
    // 필요가 없습니다.  메시징 서비스만 이용하는 경우 참조해주세요.
    // =======================================================
    // SDK 호출
    DOT.initialization(this);
    ...
  }
  ...
}
import com.sdk.wisetracker.new_dot.open.DOT

class MainActivity : AppCompatActivity() {
  ...
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    ...
    // =======================================================
    // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할
    // 필요가 없습니다.  메시징 서비스만 이용하는 경우 참조해주세요.
    // =======================================================
    // SDK 호출
    DOT.initialization(this)
    ...
  }
}

PushMessage API 적용

Device Token 수집

푸시 메시지를 보내기 위해서는 우선 푸시 토큰을 수집해야 합니다. 우선 Activity 수준에서 푸시 토큰을 수집할 수 있도록 아래와 같이 설정합니다.

MainActivity

public class MainActivity extends AppCompatActivity {
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        ...
        // =======================================================
        // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할
        // 필요가 없습니다.  메시징 서비스만 이용하는 경우 참조해주세요.
        // =======================================================
        // SDK 호출
        DOT.initialization(this);

        // =======================================================
        // Start : Push 메시지 수신을 위한 설정 <-- 새로 추가된 부분
        // =======================================================
        FirebaseMessaging.getInstance().getToken()
            .addOnCompleteListener(new OnCompleteListener<String>() {
              @Override
              public void onComplete(@NonNull Task<String> task) {
                if (!task.isSuccessful()) {
                  Log.w("FCM", "Fetching FCM registration token failed", task.getException());
                  return;
                }
                // Get new FCM registration token
                String token = task.getResult();
                // 푸시 토큰 서버 전송
                DOT.setPushToken(token);
              }
            });
        // =======================================================
        // End : Push 메시지 수신을 위한 설정
        // =======================================================
        ...
    }
    ...
}
class MainActivity : AppCompatActivity() {
  ...
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    ...
    // =======================================================
    // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할
    // 필요가 없습니다.  메시징 서비스만 이용하는 경우 참조해주세요.
    // =======================================================
    // SDK 호출
    DOT.initialization(this)

    // =======================================================
    // Start : Push 메시지 수신을 위한 설정 <-- 새로 추가된 부분
    // =======================================================
    FirebaseMessaging.getInstance().getToken()
      .addOnCompleteListener(OnCompleteListener<String?> { task ->
        if (!task.isSuccessful) {
          Log.w("FCM", "Fetching FCM registration token failed", task.exception)
          return@OnCompleteListener
        }

        // Get new FCM registration token
        val token = task.result

        // Log and toast
        DOT.setPushToken(token)
      })
    // =======================================================
    // End : Push 메시지 수신을 위한 설정
    // =======================================================
    ...
  }
  ...
}

FirebaseMessagingService를 상속받은 FcmService.java 파일을 새로 생성하고 푸시 토큰을 수집하도록 아래와 같이 설정합니다.

FcmService

import com.google.firebase.messaging.FirebaseMessagingService;
import com.sdk.wisetracker.new_dot.open.DOT;

public class FcmService extends FirebaseMessagingService {
    // =======================================================
    // Start : Push 토큰 수집 <-- 새로 추가된 부분
    // =======================================================
    @Override
    public void onNewToken(String token) {
        super.onNewToken(token);
        // call Wisetracker API
        DOT.setPushToken(token);
    }
    // =======================================================
    // End : Push 토큰 수집
    // =======================================================
}
import com.google.firebase.messaging.FirebaseMessagingService
import com.sdk.wisetracker.new_dot.open.DOT

class FcmService : FirebaseMessagingService() {
  // =======================================================
  // Start : Push 토큰 수집 <-- 새로 추가된 부분
  // =======================================================
  override fun onNewToken(token: String) {
    super.onNewToken(token)
    // call Wisetracker API
    DOT.setPushToken(token)
  }
  // =======================================================
  // End : Push 토큰 수집
  // =======================================================
}

AndroidManifest

  1. FcmService.java 파일을 서비스로 등록합니다.

  2. 푸시 알림 권한을 선언합니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.support.wisetracker">
    
    <!--
      // ==================================================
      // Wisetracker SDK Push: 푸시 알림 권한을 선언합니다. <-- 새로 추가된 부분
      // ==================================================
    -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

  <application
      ...>
    ...
    <!--
      // ==================================================
      // Start : SDK FCM 서비스 적용 <-- 새로 추가된 부분
      // ==================================================
    -->
    <service
        android:name=".FcmService"
        android:exported="false">
      <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
      </intent-filter>
    </service>
    <!--
      // ==================================================
      // End : SDK FCM 서비스 적용
      // ==================================================
    -->
    ...
  </application>

</manifest>

푸시메시지 클릭 측정

푸시 메시지를 클릭하는 것을 측정하기 위해 푸시 메시지를 통해 진입하는 최초Activity에 setPushClick을 추가합니다.

아래 MainActivity 에 해당하는 Activity 는 "AndroidManifest.xml"에 아래와 같이 Main action 으로 지정된 Activity에 적용되어야 합니다. 대부분의 경우, MainActivity 이나 앱 개발에 따라 다릅니다.

MainActivity

public class MainActivity extends AppCompatActivity {
  ...
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    // =======================================================
    // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할
    // 필요가 없습니다.  메시징 서비스만 이용하는 경우 참조해주세요.
    // =======================================================
    // SDK 호출
    DOT.initialization(this);

    // =======================================================
    // Start : Push 메시지 수신을 위한 설정
    // =======================================================
    FirebaseMessaging.getInstance().getToken()
        .addOnCompleteListener(new OnCompleteListener<String>() {
          @Override
          public void onComplete(@NonNull Task<String> task) {
            if (!task.isSuccessful()) {
              Log.w("FCM", "Fetching FCM registration token failed", task.getException());
              return;
            }
            // Get new FCM registration token
            String token = task.getResult();
            // 푸시 토큰 서버 전송
            DOT.setPushToken(token);
          }
        });
    // =======================================================
    // End : Push 메시지 수신을 위한 설정
    // =======================================================

    // =======================================================
    // Start : Push 메시지 클릭 처리 <-- 새로 추가된 부분 (1/2)
    // =======================================================
    DOT.setPushClick(this, getIntent());
    // =======================================================
    // End : Push 메시지 클릭 처리
    // =======================================================
    ...
  }
  ...
  
  // =======================================================
  // Start : Push 메시지 클릭 처리 <-- 새로 추가된 부분 (2/2)
  // =======================================================
  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // 푸시 메시지를 클릭할 때의 처리
    DOT.setPushClick(this, intent);
    ...
  }
  // =======================================================
  // End : Push 메시지 클릭 처리
  // =======================================================
  ...
}
class MainActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    ...
    // =======================================================
    // 이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할
    // 필요가 없습니다.  메시징 서비스만 이용하는 경우 참조해주세요.
    // =======================================================
    // SDK 호출
    DOT.initialization(this)

    // =======================================================
    // Start : Push 메시지 수신을 위한 설정
    // =======================================================
    FirebaseMessaging.getInstance().getToken()
      .addOnCompleteListener(OnCompleteListener<String?> { task ->
        if (!task.isSuccessful) {
          Log.w("FCM", "Fetching FCM registration token failed", task.exception)
          return@OnCompleteListener
        }

        // Get new FCM registration token
        val token = task.result

        // Log and toast
        DOT.setPushToken(token)
      })
    // =======================================================
    // End : Push 메시지 수신을 위한 설정
    // =======================================================

    // =======================================================
    // Start : Push 메시지 클릭 처리 <-- 새로 추가된 부분 (1/2)
    // =======================================================
    DOT.setPushClick(this, intent)
    // =======================================================
    // End : Push 메시지 클릭 처리
    // =======================================================
    ...
  }
  ...

  // =======================================================
  // Start : Push 메시지 클릭 처리 <-- 새로 추가된 부분 (2/2)
  // =======================================================
  override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    // 푸시 메시지를 클릭할 때의 처리
    DOT.setPushClick(this, intent)
  }
  // =======================================================
  // End : Push 메시지 클릭 처리
  // =======================================================
  ...
}

푸시 수신동의

푸시발송은 기본 적용에서는 "수신거부"입니다. 아래 링크를 참조하여 화면에서 수신동의/거부를 진행 후 해당 데이터를 "태깅"작업을 통해 남겨주세요.

축하합니다 🎉

이제 Android SDK 설정이 완료되었습니다.

Previous대시보드 설정Next푸시 알림 데이터 이용

Last updated 6 months ago

Was this helpful?

Messaging : 푸시/인앱 메시지 | Wisetracker Docs
서비스번호 확인
Logo