기본 통합

문서
New: 동영상 가이드

이 동영상을 통해 연동 과정을 자세히 살펴보세요. 동영상과 아래의 서면 가이드를 모두 사용하는 것이 좋습니다.

시작하기 전에 SDK 사전 요구 사항

Singular SDK 연동하기의 단계를 따르세요 :계획 및 사전 요구 사항의 단계를 따르세요.

이러한 단계는 모든 Singular SDK 연동을 위한 전제 조건입니다.


SDK 설치

Gradle을 사용하여 SDK 추가하기

참고: Gradle 7부터 Android는 프로젝트 또는 모듈 수준의 build.gradle 선언보다settings.gradle의중앙 저장소 선언을사용할 것을 권장합니다 .

  1. settings.gradle 파일에 Singular SDK 리포지토리를 추가합니다:

    setting.gradle
    dependencyResolutionManagement {
         repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
         repositories {
              google()
              mavenCentral()
              maven{ url = uri("https://maven.singular.net/") }
         }
    }

    또는 이전 Gradle 버전에서는 프로젝트/build.gradle 파일에 Singular SDK 리포지토리를 추가합니다:

    project/build.gradle
    repositories {
         mavenCentral()
         maven { url 'https://maven.singular.net/' }
    }
  2. app/build.gradle의 종속성 목록에 Singular 라이브러리를 추가합니다:

    app/build.gradle
    dependencies {
        ...
        implementation 'com.google.android.gms:play-services:6.5.87'
        implementation 'com.singular.sdk:singular_sdk:12.7.2'
        ...
    }

    또한 삼성 갤럭시 스토어를 통해 앱을 배포하는 경우 삼성 갤럭시 스토어의 설치 리퍼러를 지원하기 위해 다음을 추가합니다:

    app/build.gradle
    dependencies {
         ...
         implementation 'store.galaxy.samsung.installreferrer:samsung_galaxystore_install_referrer:4.0.0'
         ...
    }
  3. Singular SDK에 대한 전이 종속성을 비활성화한 경우 app/build.gradle에 다음을 추가합니다:

    app/build.gradle
    dependencies {
        ...
        implementation 'com.android.installreferrer:installreferrer:2.2'
        implementation 'com.google.android.gms:play-services-appset:16.0.0'
        ...
    }
  4. 앱이 Google Play 서비스 API 17.0.0 이상을 구현하지 않는 경우 앱/build.gradle 파일에 다음 종속성을 추가하세요:

    app/build.gradle
    dependencies {
         ...
         implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0+'
         ...
    }

참고: Gradle 1.x-2.x 사용자는 종속성을 추가할 때 "구현" 대신 "컴파일"을 사용해야 합니다.

Gradle 없이 SDK 추가하기

SDK 수동 다운로드
  1. 페이지 상단의 링크에서 SDK를 다운로드합니다.
  2. SDK 패키지의 압축을 풀고 Singular.aar를 Android 프로젝트의 libs 디렉토리에 추가합니다. 디렉터리가 없는 경우 프로젝트 폴더(일반적으로 <project>/app/libs)에 libs라는 디렉터리를 만듭니다.
Maven을 사용하여 SDK 추가하기

프로젝트의 pom.xml에 Maven 리포지토리를 추가합니다:

pom.xml
<project ...>
<repositories>
    <repository>
      <id>singular.net</id>
      <url>http://maven.singular.net/</url>
    </repository>
 </repositories>
</project>

종속성을 추가합니다:

<dependency>
    <groupId>com.singular.sdk</groupId>
    <artifactId>singular_sdk</artifactId>
    <version>12.7.2</version>
</dependency>
Eclipse를 사용하여 SDK 추가하기

Eclipse AAR 플러그인을 사용할 수 있습니다: gradle-eclipse-aar-plugin

플러그인을 사용하지 않으려면 다음 단계를 따르세요:

  1. singular_sdk-12.7.2.aar의압축을 풉니다 .
  2. classes.jar의 이름을 singular_sdk-12.7.2.jar로 바꿉니다(이것이 기본 SDK jar입니다).
  3. 원하는 방식으로 프로젝트에 'com.android.installreferrer:installreferrer:2.2' 라이브러리를 추가합니다.
  4. AAR에 포함된 안드로이드 매니페스트.xml에서 안드로이드 매니페스트.xml로 BIND_GET_INSTALL_REFERRER_SERVICE 권한을 복사합니다.
  5. AAR에 포함된 AndroidManifest.xml의 CHECK_LICENSE 권한을 AndroidManifest.xml에 복사합니다.

Proguard를 사용하는 경우 요구 사항

proguard.config 파일에 다음 코드 줄을 추가합니다:

proguard.config
-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
# Uncomment this line in case your are calling the 'revenue' function using the Google billing library
#-keep public class com.android.billingclient.** { *; }

필수 권한 추가

AndroidManifest.xml 파일의 <manifest> 태그 아래에 이러한 권한을 추가합니다:

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
키즈 SDK를 연동하는 경우com.google.android.gms.permission.AD_ID 권한을제외합니다 .

삼성 갤럭시 스토어의 설치 리퍼러를 지원하려면 다음을 추가합니다:

AndroidManifest.xml
<queries>
   <package android:name="com.sec.android.app.samsungapps" />
</queries>

SDK 연동

참고: Singular SDK를 구현할 때는 GDPR, CCPA, COPPA 등 비즈니스를 운영하는 지역에서 제정된 다양한 개인정보 보호법을 준수해야 한다는 점을 잊지 마세요. 자세한 내용은 SDK 옵트인 및 옵트아웃 사례를 참조하세요.

Singular 라이브러리 가져오기

Singular 라이브러리를 가져오려면 다음 가져오기를 MainActivity 파일에 추가합니다:

Java (MainActivity.java) Kotlin (MainActivity.kt)
import com.singular.sdk.*;

Singular SDK 초기화하기

비공개 함수를 사용하여 Singular SDK 초기화하기

세션 추적 및 어트리뷰션을 사용하려면 앱을 실행할 때마다 Singular SDK를 초기화해야 합니다. 비공개 메서드( initSingularSDK())를 생성하고 MainActivityonCreate() 메서드에서 호출하는 것이 좋습니다.

다음 단계를 따르세요:

  1. 함수를 추가합니다: MainActivity 클래스(또는 진입점 Activity)에 다음 메서드를 배치합니다.
  2. 자격 증명 삽입: "SDK KEY""SDK SECRET" 을 Singular 대시보드의 Singular SDK 키와 비밀번호로 바꿉니다.
  3. SingularConfig 객체를 업데이트합니다: SDK를 초기화하기 전에 SingularConfig 개체를 만들어야 합니다. 선택적으로 설정하려는 SDK 환경설정을 여기에서 설정해야 합니다. 옵션은 아래의 SingularConfig 메서드 참조를 참조하세요:

    SingularConfig 메서드 참조: 사용 가능한 모든 '.with' 옵션 보기

    아래 표에는 앱에 옵션과 기능을 추가하는 데 사용할 수 있는 모든 '.with' 메서드가 나열되어 있습니다.

    각 기능에 대한 자세한 내용은 아래 섹션 또는 고급 옵션에서 확인할 수 있습니다.

    메서드

    설명

    .withFacebookAppId(문자열 facebookAppID)

    페이스북 앱 ID를 구성합니다. "메타 인스톨 리퍼러" 어트리뷰션에 필요합니다.

    "앱의 Facebook 앱 ID는 어디에서 찾을 수 있나요?"를 참조하세요.

    .withCustomUserId(문자열 customId)

    사용자 ID를 Singular로 전송합니다.

    .withSingular링크(getIntent(), Singular링크 핸들러 핸들러)

    Singular 링크와 딥링킹을 활성화합니다.

    .withDDLTimeoutInSec(긴 타임아웃)

    앱이 처음 열렸을 때 Singular가 디퍼드 딥링크를 검색하는 시간을 설정합니다.

    .withOpenURI(URI openURI)

    인텐트에서 URI를 가져옵니다(앱이 Singular에서 시작되지 않은 링크를 통해 열린 경우 딥링크를 처리하기 위해).

    .withGlobalProperty(문자열 키, 문자열 값, 바울 overrideExisting)

    글로벌 프로퍼티를 지정된 값으로 설정합니다. 키와 값은 앱에서 전송된 모든 이벤트/세션과 함께 Singular로 전송됩니다.

    .withSessionTimeoutInSec (긴 타임아웃)

    세션 타임아웃을 설정합니다.

    .withFCMDeviceToken(문자열 토큰)

    첫 번째 세션에서 전송할 FCM 토큰을 설정합니다.

    .withLoggingEnabled ()

    로깅을 활성화합니다.

    .withLogLevel (int level)

    로깅 레벨을 구성합니다(기본값은 Log.ERROR).

  4. 함수를 호출합니다: UI 설정 후 이벤트를 로깅하기 전에 onCreate() 에서 initSingularSDK() 을 호출합니다.

다음은 기본 구현입니다:

Java - MainActivity Kotlin - MainActivity
private void initSingularSDK() {
    // Configure Singular with SDK key and secret

    SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET");

    try {
        Singular.init(getApplicationContext(), config);
        Log.d("Singular", "SDK initialized successfully");
    } catch (Exception e) {
        Log.e("Singular", "SDK initialization failed: " + e.getMessage());
    }
}

MainActivity에서 사용 예시

Java - MainActivity Kotlin - MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Initialize Singular SDK

    initSingularSDK();

    // Proceed with your app setup (e.g., UI initialization)

}

주요 세부 사항

  • 배치: 적절한 세션 추적을 위해 Application 클래스가 아닌 MainActivity 에 이 메서드를 추가하세요.
  • 오류 처리: try-catch 블록은 앱 충돌 없이 초기화 오류(예: 유효하지 않은 자격 증명)를 기록합니다.
  • 딥링킹(선택 사항): 딥링크(예: 앱을 실행하는 URL)를 처리하려면 확장 설정에 대한 딥링크 지원 문서를 참조하세요.
  • 메타 인스톨 리퍼러 어트리뷰션 지원: config.withFacebookAppId("FacebookAppID") 구성 옵션을 추가하여 "메타 인스톨 리퍼러" 어트리뷰션을활성화합니다 .

프로 팁: 앱이 여러 진입점(예: 딥링크)을 지원하는 경우, 각 관련 활동의 onCreate() 에서 initSingularSDK() 을 호출하여 일관된 동작을 보장하세요.