Android 기초 설정

푸시메세지 발송을 위한 Android OS 에서 필수로 설정해 주셔야 하는 가이드입니다.

가장 먼저 푸시 발송을 위한 필수 설정을 위해 아래의 두 가지를 순서대로 진행 해 주세요.

  1. FCM 인증서 설정

  1. 대시보드 설정

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에 따라 이용하는 모듈명이 달라집니다.

...
// 1. Google Services plugin 추가
apply plugin: 'com.google.gms.google-services'  
...

android {
  ...
}
...
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ....
    // 2. Wisetracker SDK 적용
     implementation "com.sdk.wisetracker:base_module:latest.release"
     implementation "com.sdk.wisetracker:new_dot_module:latest.release"
    
    // 3. Import the BoM for the Firebase platform
    implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
    // 4. 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'
}
...

AuthorizationKey 등록

AuthorizationKey 등록은 Wisetracker 기본 SDK가 이미 적용된 경우에는 다시 적용할 필요가 없습니다. 메시징 서비스만 이용하는 경우 등록 해 주세요.

app/res/values/strings.xml

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

<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>

추가한 코드 중 serviceNumber의 value를 올바른 값으로 변경해야 합니다.

와이즈트래커 대시보드에 로그인하여 설정 > 서비스설정 메뉴에서 '서비스번호' 항목에 기재된 숫자를 확인 후 복사하여 serviceNumber 값을 변경 해 주세요.

HTTP 통신 허용

이 내용은 Wisetracker 기본 SDK가 이미 적용된 경우에는 새로 적용할 필요가 없습니다. 메시징 서비스만 이용하는 경우 참조해주세요.

프로젝트의 Target API가 API Level 28 이상일 경우에 적용하는 설정입니다. 아래와 같이 HTTP 통신을 허용하는 두 가지 설정을 추가해주세요. 작성되어 있는 코드에, 아래 한 줄 짜리 networkSecurityConfig 코드를 복사하여

android:networkSecurityConfig="@xml/network_security_config"

<application androidname = > 안에 붙여넣기 하면 아래 최종 코드와 같은 모양이 됩니다.

<application androidname=".MainApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:allowBackup="false"
    android:networkSecurityConfig="@xml/network_security_config" > <!-- API Level 28 이상일 경우 해당 라인 추가 --> 
    

app/res/xml/network_security_config.xml 설정

  1. network_security_config.xml 파일을 생성합니다.

  2. 로컬에서 개발하는 경우에는 아래와 같이 로컬 개발환경을 추가해야 metro server와 통신할 수 있습니다.

<domain includeSubdomains="true">localhost</domain>
  1. 로컬 환경을 추가 한 후, xml 파일에 와이즈트래커 도메인을 추가 해 주세요.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">trk.analytics.wisetracker.co.kr</domain>
    </domain-config>
</network-security-config>
  1. trk.analytics.wisetracker.co.kr ▶️ 도메인을 추가 해 주시면 와이즈트래커 SDK 통신이 가능해집니다.

푸시알림 권한 설정 (AndroidManifest.xml)

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

"android.permission.POST_NOTIFICATIONS" 권한을 추가합니다. 이 권한 설정은 <application> 태그 위에서 선언합니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="XXX">

    <!-- Wisetracker SDK for Push -->
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    ...
    
    <application
        android:name="ZZZ"
        ...>

초기화

Application을 상속받는 클래스가 아닌 Activity를 상속받는 기본 화면의 onCreate() 함수에 적용해 주세요. 여기서 말하는 기본 화면은 AndroidManifest.xml 파일에 선언된 Activity 중, "android.intent.action.MAIN""android.intent.category.LAUNCHER" Intent-Filter 가 적용된 Activity를 의미합니다.

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

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

public class MainActivity extends ReactActivity {
  ...
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);    
    ...
    ...
    // SDK 호출
    DOT.initialization(this);
    ...
  }
  ...
}

Bridge파일 추가

마지막으로 bridge 함수들을 호출 할 수 있게 bridge 파일을 추가 합니다.

왼쪽이미지는 앞서 설명드린 준비사항 안내페이지에서 플러그인 다운로드시 생긴 DotReactNativeBridge 폴더 하위에 있는 "kr"폴더의 위치를 보여줍니다.

해당 kr 폴더를 복사한 뒤 , 오른쪽에 보이는 현 프로젝트 폴더의 /프로젝트명/android/app/src/main/java 경로에 복사한 "kr" 폴더를 붙여넣기 합니다.

DotReactBridge 객체 NativeModules 등록

파일 추가 후 MainApplication.java 파일에 Wisetracker SDK BridgePackage를 추가 해 줍니다.

import kr.co.wisetracker.BridgePackage;

public class MainApplication extends Application implements ReactApplication {
    private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper(
      this,
      new ReactNativeHost(this) {
      ...
      ...
      @Override
      protected List<ReactPackage> getPackages() {
        @SuppressWarnings("UnnecessaryLocalVariable")
        List<ReactPackage> packages = new PackageList(this).getPackages();
  
        // Wisetracker SDK BridgePackage 추가
        packages.add(new BridgePackage());
  
        return packages;
      }
  
      @Override
      protected String getJSMainModuleName() { return "index"; }
      ...
      ...
    });
  }va

안드로이드 기초설정은 완료하셨습니다 🎉

다음으로 iOS 기초설정을 위한 단계를 진행 해 주세요 👇🏻

Last updated