iOS

1. 사전 요구사항

  • XCode

  • Minimum iOS Version : 16

circle-exclamation

2. SDK Integration

2.1 SDK 추가하기

SDK 는 Swift Package Manager (SPM)을 사용하거나 CocoaPod를 사용하여 XCode Project 에 추가할 수 있습니다. 또는 직접 다운로드 하여 추가하는 것도 가능합니다.

Swift Package Manager

XCode 의 상단 메뉴에서 File > Add Package Dependencies 를 클릭하고 아래 주소를 사용하여 패키지를 추가합니다.

https://github.com/snapplay-io/ios_offerwall_sdk

나중에 SDK 버전이 올라가는 경우에는 File > Packages > Update to Latest Package Versions 를 클릭하여 SDK 버전을 최신버전으로 적용할 수 있습니다.

CocoaPods

XCode Project 폴더에 아래와 같이 Podfile 을 작성합니다.

Podfile.lock으로 버전이 고정된 경우 갱신을 위해 pod을 업데이트합니다.

최신 pod 목록으로 업데이트하고 라이브러리를 설치합니다.

YourProject.xcworkspace 파일을 사용하여 XCode Project 를 open 합니다.

circle-exclamation

Library File 다운로드

Framework Library 파일을 다운로드 받아서 직접 XCode Project 에 설정할 수 있습니다.

https://github.com/snapplay-io/ios_offerwall_sdkarrow-up-right 의 sdk 폴더에서 최신버전의 라이브러리 파일을 다운로드 받으세요.

압축을 풀면 s2offerwall.xcframework 폴더가 나타납니다. 해당 폴더를 아래 그림과 같이 XCode Project 에 Drag 해서 넣은 후 Embed 설정을 Embed & Sign 으로 변경합니다.

2.2 APP ID 설정하기

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

이때 필요한 권한 문구를 같이 등록해주세요. 필요한 권한은 아래와 같습니다.

  • Privacy - Photo Library Usage Description

  • Privacy - Camera Usage Description

    • 위 2개 권한은 스크린샷 등록이 필요한 광고 참여 시에 필요합니다.

  • Privacy - Tracking Usage Description

    • 이 권한은 광고 ID (IDFA) 값을 획득하기 위하여 필요합니다.

2.3 SDK 초기화

SDK 사용 전에 초기화 API 를 호출합니다. 초기화 결과를 전달받기 위하여 InitializeListener 프로토콜 또는 클로저 함수를 사용할 수 있습니다.

호출 예시

2.4 사용자 식별값 설정하기

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

circle-exclamation

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

circle-exclamation

3. 오퍼월 띄우기

3.1 EventListener

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

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

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

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

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

3.2 로그인 지연 처리

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

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

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

3.3 S2OfferwallViewController

오퍼월을 별도의 UIViewController 로 띄워줍니다. 표시하고자 하는 오퍼월의 플레이트먼트 명칭을 파라메터로 전달해야합니다. 플레이스먼트는 Snapplay 사이트에서 설정할 수 있습니다.

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

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

3.4 S2OfferwallView

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

S2OfferwallViewEventListener 대신 Closure 를 사용하여 이벤트를 처리할 수 있습니다.

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

3.4 앱 추적 동의 설정

iOS 14 부터는 IDFA에 대한 추적 허용을 명시적으로 사용자에게 동의 받도록 정책이 변경되었습니다. 앱 추척(App Tracking Transparency, ATT) 동의창을 띄우기 위해서는 우선 info.plist 파일에 Tracking Usage Description 항목을 작성해야합니다. (2.2 APP_ID 설정하기 참고).

이후 앱 추적 동의 창을 띄우기 위한 iOS API 를 호출합니다. 또는 SDK가 제공하는 편의 함수를 호출하실 수 있습니다. 앱 추적 동의 창은 앱이 시작되는 시점에 띄우는 것을 권장합니다.

4. Sample Code

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

마지막 업데이트