Android

1. 사전 요구 사항

  • Android Studio

  • Minimum version of Android SDK 24

circle-exclamation

2. SDK Integration

2.1 SDK 추가하기

Android Project 의 setting.gradle.kts (Kotlin DSL) 또는 build.gradle (Groovy) 의 repositories 설정에 mavenCentral() 이 추가되어 있는지 확인합니다.

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

그리고 App 의 gradle 설정 파일에 다음과 같이 SDK dependency 설정을 추가합니다.

// build.gradle.kts (Module: app)
dependencies {
    implementation("io.snapplay:s2offerwall-aos-sdk:1.0.25")
    // Other dependencies
}

2.2 APP ID 설정하기

고객사 페이지에 매체를 생성하여 APP_ID 를 발급 받습니다. 발급 받은 APP_ID 를 AndroidManifest.xml 파일에 등록합니다. 또는 SDK 초기화 전에 별도 API 를 호출하여 APP_ID 를 설정할 수 있습니다.

2.3 SDK 초기화

SDK 사용 전에 초기화 API 를 호출해야합니다. 초기화 결과를 전달 받기 위하여 InitializeListener 인터페이스를 사용할 수 있습니다.

호출 예시

2.4 사용자 식별값 설정하기

광고 참여를 위해서는 사용자 식별값이 설정되어야합니다. 일반적으로 매체의 로그인 ID 가 사용되며 아래의 API 를 호출하여 SDK 에 사용자 식별값을 설정합니다. 이렇게 설정된 식별값은 이후 사용자가 광고 참여를 완료하는 시점에 매체의 서버로 callback 이 호출되는데 그때 pub_user_nm 파라메터로 전달됩니다.

circle-exclamation

SDK v1.0.19 부터 setUserName() 에 displayName 파라메터가 추가되었습니다. 해당 파라메터는 오퍼월내 이벤트에서 랭킹 등을 표시할 때 사용되며 유저의 앱 내 닉네임 등으로 전달해주시면 됩니다. Snap 오퍼월의 다양한 이벤트들을 100% 활용하기 위하여 displayName 파라메터가 필요하므로 가급적 적용해주시기 바랍니다.

circle-exclamation

3. 오퍼월 띄우기

3.1 EventListener

오퍼월 내에서 발생하는 이벤트를 처리하기 위하여 EventListener 를 구현하여 설정해야합니다. Android의 경우에는 3 종류의 이벤트가 발생할 수 있습니다.

  • 사용자가 광고 참여하는 시점에 아직 사용자 식별값이 설정되어 있지 않다면 onLoginRequested() 가 호출됩니다.

  • 오퍼월이 닫혀야하는 시점에 onCloseRequested() 가 호출됩니다. 대부분의 경우는 SDK 내부에서 처리되지만 만약 OfferwallView 를 직접 생성하여 화면을 구성한 경우에는 적절한 액션을 수행하도록 구현해야합니다.

  • 이미지 첨부가 필요한 광고의 경우 이미지 첨부 시점에 onPermissionRequested() 가 호출됩니다. 이 때에는 일반적으로 Activity 의 requestPermissions() API 를 호출하여 권한 획득을 할 수 있도록 구현합니다.

아래는 EventListener 인터페이스와 그 사용 예시입니다.

아래는 전역 EventListener 를 설정하는 예시입니다.

3.2 로그인 지연 처리

일반적으로 사용자가 앱에 로그인 하는 시점에 setUserName() 을 호출하여 SDK 에 사용자 식별값을 설정합니다. 하지만 사용자 식별값이 설정되지 않았어도 오퍼월 이용은 가능합니다.

사용자의 적극적인 참여를 위하여 우선 오퍼월을 경험하게 한 후 사용자 식별값이 꼭 필요한 시점 (광고 참여 또는 이용문의)에 로그인을 수행하도록 처리할 수 있습니다. 이를 위하여 EventListener의 onLoginRequest() 를 이용합니다.

onLoginRequest() 가 호출되면 앱의 로그인 페이지로 이동시킨 후 사용자가 로그인을 완료하면 setUserName() 을 호출하여 사용자 식별값을 설정해줍니다. 이후 로그인 페이지를 닫으면 오퍼월로 재진입되어 사용자 액션을 이어서 진행할 수 있습니다.

3.3 S2OfferwallActivity

오퍼월 화면을 별도의 Activity로 제공합니다. S2Offerwall.startActivity() 를 호출하며 파라메터로 표시하고자 하는 오퍼월의 플레이스먼트 이름을 지정해야합니다. 플레이스먼트는 Snapplay 사이트에서 설정할 수 있습니다.

그리고 오퍼월에는 "main" 이라는 이름의 특수한 형태의 오퍼월이 있습니다. 메인 오퍼월은 여러개의 플레이스먼트 오퍼월을 조합하여 하나의 화면에 표시해주는 오퍼월입니다. 메인 오퍼월을 띄우고자 할 때에는 플레이스먼트 이름 대신에 별도로 정의된 S2Offerwall.MAIN 을 지정합니다.

S2OfferwallActivity 는 전역 EventListener 를 설정해야하며 만약 startActivity() 시점에 SDK 초기화가 되어 있지 않았다면 내부에서 먼저 초기화 수행하고 그 이후에 오퍼월을 표시합니다.

아래는 S2OfferwallActivity을 호출하는 예시입니다.

3.4 S2OfferwallView

오퍼월을 표시하는 View 클래스입니다. 오퍼월을 매체의 특정 영역에 표시하고자 할 경우 사용할 수 있습니다. S2OfferwallView 를 생성하고 원하는 영역에 추가한 후에 EventListener 를 설정하고 이후 load() 함수를 호출하여 원하는 오퍼월을 표시합니다.

아래는 S2OfferwallView 를 사용하는 예시입니다.

3.5 개인정보 수집 동의

오퍼월 최초 사용시 개인 정보 수집 동의 다이알로그가 뜨고 여기에서 동의를 해야만 오퍼월로 진입하게 됩니다. S2Offerwall.startActivity() 를 호출하는 경우 내부에서 이에 대한 처리를 진행하지만 만약 S2OfferwallView 를 사용하여 직접 오퍼월 View 를 띄우는 경우에는 개인 정보 수집 동의 다이알로그를 띄우도록 구현을 해야합니다.

아래의 구현 예시를 참고하여 구현합니다.

만약 자체적으로 오퍼월 관련 개인 정보 수집 동의를 받는 경우에는 SDK 가 제공하는 동의 창을 비활성화해야합니다. 아래의 API 를 사용하여 개인 정보 수집동의 창 기능을 on/off 할 수 있습니다.

4. Sample Code

아래는 버튼을 클릭하면 S2OfferwallActivity 를 띄우는 가장 간단한 구현 코드입니다.

activity_main.xml

마지막 업데이트