Singular Android SDK | |
---|---|
다운로드 | Singular Android SDK 12.1.1 버전 (체인지 로그 참고) |
호환성 |
Android 4.0.1 (Ice Cream Sandwich) 이상
|
샘플 앱 | 베스트 프랙티스에 기반한 전체 SDK 연동 방법 확인을 위해 샘플 앱을 참조해 주세요. |
연동 가이드 |
프로젝트에 SDK 추가
Gradle을 사용해서 SDK 추가하기
- project/build.gradle 파일에 Singular SDK repository를 추가합니다.
repositories { mavenCentral()
maven { url 'https://maven.singular.net/' } } - app/build.gradle의 디펜던시 목록에 Singular library를 추가합니다.
dependencies { implementation 'com.google.android.gms:play-services:6.5.87' implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:21.0.3' ... implementation 'com.singular.sdk:singular_sdk:12.1.1' ... }
- Singular SDK의 이행적 의존성(transitive dependencies)을 비활성화한 경우, 'com.android.installreferrer:installreferrer:2.2'와 'com.google.android.gms:play-services-appset:16.0.0' 를 앱의 build.gradle에 추가하세요.
- 기존에 이미 Google Play Services API 17.0.0 이상을 구현하지 않은 경우, 앱의 build.gradle 파일에 다음 디펜던시를 추가하세요.
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0+'
주의: Gradle 1.x-2.x를 사용하는 유저는 "구현(implementation)" 대신 "컴파일(compile)"을 사용하여 디펜던시를 추가해야 합니다.
Gradle을 사용하지 않는 경우 SDK 추가
- 본 페이지 최상단에서 SDK를 다운로드합니다.
- SDK 패키지의 압축을 해제하고 Android 프로젝트의 libs 디렉터리의 libs 폴더에 Singular.aar를 추가하세요. 해당 폴더가 존재하지 않는 경우 libs라는 이름으로 디렉터리를 프로젝트 폴더 내에 생성하고 진행하세요. 보통 <project>/app/libs에 위치합니다.
프로젝트의 pom.xml에 maven 리파지터리를 추가합니다.
<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.0.2</version>
</dependency>
Eclipse AAR 플러그인(gradle-eclipse-aar-plugin)을 사용하면 보다 간편히 추가할 수 있습니다.
플러그인을 사용을 원치 않는 경우 다음 단계를 따르세요.
- singular_sdk-12.0.2.aar를 압축 해제
- classes.jar를 singular_sdk-12.0.2.jar로 이름 변경(메인 SDK)
- 원하는 방식대로 프로젝트에 'com.android.installreferrer:installreferrer:2.2' 라이브러리를 추가
- AAR 내의 AndroidManifest.xml 파일의 BIND_GET_INSTALL_REFERRER_SERVICE 권한을 AndroidManifest.xml로 복사
- AAR 내의 AndroidManifest.xml 파일의 CHECK_LICENSE 권한을 AndroidManifest.xml로 복사
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> 태그 아래에 다음 권한을 추가합니다.
<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" />
앱 빌드가 안드로이드 12/API 레벨 31 이상을 타깃 한다면, Google Advertising ID 접근을 위한 권한을 다음과 같이 추가하세요.
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
참고: 만약 Kids SDK를 연동하는 경우라면, 이 권한을 추가할 필요가 없습니다.
주의: 앱에 android.permission.GET_TASKS 권한이 추가되어 있다면 앱이 유저에 의해 실제로 열리기 전에도 앱이 초기화될 수 있습니다. 이 경우 실제 실행 전 Singular SDK가 초기화되면서 인스톨 시간에 불일치가 발생할 수 있습니다. 이러한 이슈를 방지하려면 해당 권한이 실제로 필요하지 않은 경우 이를 삭제하거나, 실제로 유저가 앱을 최초로 여는 시점 이후에 Singular SDK의 초기화가 이뤄지도록 호출 시점을 옮겨 주세요.
Singular 라이브러리 임포트
Singular 라이브러리를 임포트하려면 다음 코드를 추가하세요.
import com.singular.sdk.*;
Singular SDK 초기화
주의: Singular SDK를 구현할 때 GDPR, CCPA, COPPA뿐만 아니라 비즈니스를 하는 지역에 적용되는 여러 프라이버시 정책을 준수하세요. 상세 정보는, SDK Opt-In과 Opt-Out Practices를 참조하세요.
SDK 초기화 코드는 앱이 열릴 때마다 호출돼야 합니다. 이는 Singular의 어트리뷰션 기능이 동작하기 위한 전제 조건이자, Singular에 새 세션을 보내서 유저 리 텐션을 계산하는 기준으로 사용됩니다.
1. SingularConfig 오브젝트 생성
SDK 초기화 전에 SingularConfig를 생성해야하며, 오브젝트는 다음 정보를 포함하게 됩니다.
- 귀하의 SDK Key와 SDK Secret. (이 둘을 가져오려면, log into your Singular 계정으로 로그인하여 Developer Tools > SDK Keys에서 확인하세요)
- 선택 사항으로 설정하고 싶은 SDK preference로 설정할 수 있습니다.
기본 SingularConfig 오브젝트를 생성하려면 다음 코드를 사용하세요.
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
기본 오브젝트 대신 Singular에서 제공하는 여러 추가 기능을 설정할 수도 있습니다.
설정을 추가하려면 다음 예제처럼 SingularConfig 오브젝트에 ".with" 메서드를 사용하세요.
// 유저 ID를 포함하도록 설정합니다
// 또한 세션 타임아웃을 120초로 설정합니다.
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withCustomUserId(UserId)
.withSessionTimeoutInSec(120)
더 많은 설정 사항에 대해서는 아래 항목을 참고하세요.
SingularConfig 메서드 레퍼런스
".with" 메서드로 추가할 수 있는 전체 목록입니다.
메서드 | 정의 | 참조 |
.withCustomUserId(String customId) | Singular에 유저 ID를 전송 | 유저 ID 설정 |
.withSingularLink(getIntent(), SingularLinkHandler handler) |
Singular 링크로 딥링크 활성화 |
딥링크 구현 |
.withDDLTimeoutInSec (long timeout) | 앱이 최초 실행된 경우 Singular가 디퍼드 딥링크를 검색하는 시간 길이 설정 | |
.withDDLHandler (DeferredDeepLinkHandler handler) | 신규 Singular 링크 대신 레가시 트래킹 링크로 딥링크 활성화 | |
.withOpenURI (URI openURI) | 인텐트에서 URL을 가져오기 (Singular의 링크가 아닌 링크를 통해 앱이 열린 경우 딥링크 처리) | |
.withGlobalProperty(String key, String value, boolean overrideExisting) | 주어진 값에 대한 글로벌 특징 설정. 해당 키와 값은 앱의 모든 이벤트/세션과 함께 Singular에 전송 | 글로벌 특징 추가 |
.withSessionTimeoutInSec (long timeout) | 세션 타임아웃 설정 | 세션 타임아웃 수정 |
.withFCMDeviceToken(String token) | 첫 세션에 전송될 FCM 토큰 설정 | 언인스톨 추적 |
.withLoggingEnabled () | 로그 활성화 | |
.withLogLevel (int level) | 로그 레벨 설정(기본값은 Log.ERROR) |
2. Singular 초기화
SingularConfig 오브젝트를 생성했다면 init 메서드를 사용해서 Singular를 초기화하고 config 오브젝트를 전달합니다.
메인 액티비티와 딥링크로 직접 열리는 모든 액티비티의 onCreate에서 init을 호출하기를 권장합니다.
주의:
- Init 메서드는 앱 내의 어떤 지점에서도 호출될 수 있지만 반드시 이벤트를 전송하기 전에 호출돼야 합니다.
- 딥링크로 열리는 모든 액티비티에서 Singular를 초기화해야 합니다. (자세한 사항은 딥링크 연동 항목을 참조하세요) 즉, 애플리케이션의 onCreate에서의 호출은 권장하지 않습니다. 애플리케이션 레벨에서 Singular가 초기화된 다음 액티비티에서도 초기화되면 Singular 데이터베이스에 중복 세션으로 기록될 수 있습니다.
Singular.init 메서드 | |
---|---|
정의 | SingularConfig 오브젝트에 설정된 옵션과 함께 SDK 초기화 |
메서드 |
public static boolean init(Context context, SingularConfig config) 주의:
|
사용 예시 |
|
선택 사항: 유저 ID 설정
Singular SDK를 사용하여 앱에서 Singular로 유저 ID를 전달할 수 있습니다. 유저 ID는 유저네임, 이메일 주소, 랜덤 생성 문자열 등 유저를 식별하는 어떤 값이라도 가능합니다. Singular로 전달한 유저 ID는 유저 레벨 데이터를 추출하거나 고객사가 내부 BI 포스트 백을 설정한 경우 포스트 백 내의 데이터 형태로 전달될 수 있습니다.
유저 ID는 두 가지 방법 중 하나를 택하여 Singular로 전송할 수 있습니다.
- 권장 사항: 앱이 실행되는 시점에 유저 ID를 파악할 수 있는 경우 SDK 초기화 전에 SingularConfig에 유저 ID를 설정하세요. 이 경우 최초의 세션부터 유저 ID를 Singular에 보낼 수 있습니다.
SingularConfig config = new SingularConfig("SDK KEY","SDK SECRET") .withCustomUserId("custom_user_id"); Singular.init(context, config);
- 역으로, 앱 실행 중 언제든 setCustomUserId 메서드로 호출할 수 있습니다.
유저 ID는 UnsetCustomUserId 호출을 통해 설정을 해제하거나 앱이 삭제되기 전까지 유지됩니다. 앱을 닫거나 재시작하는 것으로는 유저 ID 설정이 해제되지 않습니다.
일반적으로 유저가 서비스에 로그인하는 시점에 setCustomUserId를 호출하고 유저 로그아웃 시점에 unsetCustomUserId를 사용하는 경우가 많습니다.
Singular.setCustomUserID 메서드 | |
---|---|
정의 | Singular에 유저 ID 전송 |
메서드 | public void setCustomUserId(string customUserId) |
사용 예시 |
|
Singular.unsetCustomUserID 메서드 | |
정의 | 마지막 CustomUserId 호출에서 Singular로 전송된 유저 ID를 해제 |
메서드 | public void unsetCustomUserId() |
사용 예시 |
|
연동 가이드 |