오퍼월 마이그레이션 가이드

  1. 먼저 Ironsource 의 Tapjoy 어답터를 연동합니다. podfile 은 아래와 같습니다.
pod 'IronSourceTapjoyAdapter','4.1.23.1'

최신 버전은 이 링크에서 확인하실 수 있습니다. 링크.

  1. 이 어답터는 Tapjoy SDK 의 API 를 직접 호출할 수 있도록 합니다. 이를 통해 Tapjoy 오퍼월을 호출할 수 있습니다. 먼저 Tapjoy 를 연동할 클래스에 임포트 합니다.
#import <Tapjoy/TJPlacement.h>
  1. 그리고 Tapjoy SDK 를 초기화 합니다. SDK 초기화시 초기화 성공(혹은 실패) 에 대한 콜백을 받을 수 있습니다. 초기화 성공 콜백이 확인될 때 까지 다른 Tapjoy SDK 의 API 를 호출하시면 안됩니다.
[Tapjoy connect:@"TJ_SDK_KEY"];
    
- (void)tjcConnectSuccess:(NSNotification *)notifyObj 
{
    NSLog(@"Tapjoy connect succeeded");
}

- (void)tjcConnectFail:(NSNotification *)notifyObj 
{
    NSLog(@"Tapjoy connect failed");
}

- (void)tjcConnectWarning:(NSNotification *)notifyObj 
{
    NSLog(@"Tapjoy connect warning");
}
  1. 다음 플레이스먼트 오브젝트를 생성합니다. 플레이스먼트는 Tapjoy 대시보드에서 설정한 오퍼월 컨텐츠를 포함하고 있습니다. 아래 예시에서는 플레이스먼트 이름을 "Offerwall" 로 설정하였다고 가정하였습니다. 플레이스먼트 이름은 여러분이 원하는 이름으로 Tapjoy 대시보드에서 설정하실 수 있습니다.
TJPlacement *placement = [TJPlacement placementWithName:@"Offerwall" delegate:self];
  1. 이제 플레이스먼트를 요청할 준비가 되었습니다. 이 API를 통해 해당 플레이스먼트를 불러올 수 있으며 원하는 시점에 이를 보여줄 수 있도록 준비할 수 있습니다. 오퍼월의 경우 바르게 불러올 수 있으나 오퍼월을 보여주기 전 미리 이를 불러오는 것이 가장 좋습니다.
[p requestContent];
  1. 플레이스먼트와 관련한 콜백은 아래와 같이 제공되고 있습니다.
- (void)requestDidSucceed:(TJPlacement*)placement{}
- (void)requestDidFail:(TJPlacement*)placement error:(NSError*)error{}
- (void)contentIsReady:(TJPlacement*)placement{}
- (void)contentDidAppear:(TJPlacement*)placement{} 
- (void)contentDidDisappear:(TJPlacement*)placement{}

이중 일부는 이미 설정된 Ironsource 의 콜백을 대체할 수 있습니다. 아래의 표를 통해 해당 콜백이 Tapjoy 콜백과 어떻게 대치되는지 확인할 수 있습니다.

ironSource Callback Tapjoy Callback
offerwallDidShow contentDidAppear
offerwallDidClose contentDidDisappear
offerwallHasChangedAvailability contentIsReady

requestDidSuceed 는 Tapjoy 서버로 부터 플레이스먼트의 컨텐츠가 성공했을 경우 경우 리턴합니다. contentIsReady 는 컨텐츠(오퍼월) 이 사용자들에게 보여줄 준비가 되었을 경우 호출합니다. 이 시점에서 사용자들에게 오퍼월을 노출 시킬지 혹은 해당 플레이스먼트를 노출시킬 준비가 되었다는 별도의 설정값을 설정할 수 있습니다.

  1. 오퍼월 플레이스먼틀 보여주기 위해서는 우선 해당 플레이스먼트의 컨텐츠가 준비되었는지 확인하고 showContent API 를 통해 이를 노출합니다.
if (placement.isContentReady) {
   [placement showContentWithViewController:nil];
}

이는 아래의 Ironsource API 를 대체합니다.

[IronSource showOfferwallWithViewController:UIViewController];

showContent 메소드는 viewcontroller 인자를 사용합니다. 이때 Tapjoy 가 자체적으로 viewController 을 만들 수 있도록 nil 값을 전달하는 것을 권장합니다. 많은 경우 이 옵션이 가장 안전한 옵션입니다. 만약 여러분의 앱이 복잡한 화면 계층 구조로 되어 있고 직접 화면을 관리하길 원하신다면 최상위 화면의 ViewController 를 전달해야 다른 하위 화면을 방해하지 않고 Tapjoy의 오퍼월 컨텐츠가 사라져도 다른 화면에 영향을 주지 않습니다.

  1. 사용자가 오퍼월을 닫을 경우 다시 컨텐츠를 요청하여야 합니다. 플레이스먼트는 한번 이상 노출되지 않습니다. 사용자가 반복적으로 컨텐츠를 확인할 수 있도록 contentDidDisappear 에서 컨텐츠를 다시 요청하길 권장드립니다.

  2. 이후 나머지 Ironsource 오퍼월 코드를 제거합니다.

[IronSource setOfferwallDelegate:yourOfferwallDelegate];

Tapjoy SDK 콜백과 대치되지 않는 콜백 역시 존재합니다. 만약 앱 내에서 @[IS_OFFERWALL] 로 Ironsource 오퍼월을 특정한 경우 이 역시 제거합니다.

개인정보 보호

만약 Ironsource 레벨플레이를 사용하고 있으시다면 레벨플레이 API 를 이용하여 Tapjoy에 개인정보 보호와 관련한 정보를 공유할 수 있습니다.

  1. GDPR 설정.
  2. 미국 개인정보 보호법에 따른 개인정보 보호 설정.
  3. 미성년자 관련 설정. 여러분의 앱이 미성년자를 대상으로 하는 앱이라면 모든 사용자를 미성년자로 설정하셔야 합니다.

만약 여러분이 Ironsource 레벨플레이를 사용하거나 혹은 Tapjoy SDK 를 별도로 설정하신다면 이 링크의 가이드를 참고하여 Tapjoy 와 개인정보 보호 관련 설정을 공유해 주시길 부탁드립니다.