고급 설정
사용자 ID 설정
오퍼월 광고 유닛이나 아이언소스 보상형 광고 유닛에서 유저 보상을 위해 서버간 콜백을 사용하는 경우, setUserID 메서드를 사용하여 각 사용자 별로 고유 식별자 (UserID)를 정의해야 합니다.
사용자 관련 데이터 손실을 방지하기위해서는, UserID는 초기화 요청 이전에 설정해야 합니다. 최대 64 자리의 숫자 및 영문자로 이루어진 고유한 식별 ID를 사용해 주세요.
IronSource.setUserId("UserID");
세그먼트 정의
아이언소스 SDK의 세그먼트 기능을 통해 특정 광고 시청자에 맞게 광고 제공방식을 쉽게 조정할 수 있습니다. 아이언소스 SDK가 사용자의 세그먼트를 분류하도록 하려면 레벨플레이 플랫폼 서버에 사용자들의 세부 정보를 전달하여야 합니다.
아이언소스 SDK에서는 사용자 구분을 위한 데이터 전송을 지원하기 위해 아래 세 가지 방식을 지원합니다:
- 기기 속성 정보: 아이언소스 SDK는 위치, 기기 모델, 기기 제조사, 앱 버전, OS 등과 같은 사용자의 기기에 존재하는 표준 파라미터들을 자동으로 수집합니다. 해당 데이터들은 별도로 송신하지 않아도 됩니다. (위치의 경우 도시 수준의 위치까지만 수집)
- 사용자 속성 정보: 나이, 성별, 생성일과 같은 포괄정 유저데이터(지원되는 전체 세그먼트 속성 및 설명 목록은 아래에 있는 항목을 참조)는 API를 통해서만 전달되어야 합니다. 아이언소스 SDK가 레벨플레이 플랫폼에서 정의된 세그먼트들에 기반해 다양한 사용자를 분류할 수 있도록 지침을 따라 유저 상세 정보를 보내주시면 됩니다.
- 커스텀 세그먼트: 유저 상세 정보들을 레벨플레이 서버에 보내지 않고 직접 커스텀 세그먼트를 생성하고 그 설정에 맞게 광고 조정할 수 있습니다.
이렇게 변경된 사항은 변경 이후 로딩되는 광고부터 적용되며, 광고 워터월의 동적조정을 위해 각각의 광고 유닛 로딩 전에 호출할 수 있습니다.
아이언소스 세그먼트에 대한 자세한 설명은 여기를 참고 부탁 드립니다.
사용자 속성 정보 전달하기
세그먼트 사용을 위해서는 레벨플레이 플랫폼에서 세그먼트 정보 정의가 완료된 후, 아이언소스 서버로 사용자 특징 정보를 보내야 합니다.
세그먼트의 기반이 될 속성을 정의하고 아이언소스 서버로 전달합니다. 아래 중 한 가지 방법으로 이 정보들을 전송할 수 있습니다:
- 사용자가 속한 세그먼트가 이미 알고 있는 세그먼트라면 아래와 같이 세그먼트 명칭을 지정합니다:
mIronSegment.setSegmentName(name);
- 유저 상세 정보를 전송합니다. 아이언소스는 API 상에서 사용자를 세그먼트로 분류하기 위해 설정할 수 있는 다양한 표준 사용자 속성을 제공합니다. 아래로 스크롤하여 지원되는 사용자 세그먼트 속성들을 확인하세요.
// Create segment object mIronSegment = IronSourceSegment(); // Set user age mIronSegment.setAge(age); // Set user gender mIronSegment.setGender(gender); // Set user's level mIronSegment.setLevel(level); // Set user creation date mIronSegment.setUserCreationDate(date); // Set user's total in-app purchases mIronSegment.setIAPTotal(iapt); // Set user's paying status mIronSegment.setIsPaying(isPaying);
또한, 세그먼트 당 5개의 커스텀 사용자 속성 설정이 가능합니다:
// Set custom parameters (up to 5) mIronSegment.setCustom(key,value);
다음으로, 사용자 맞춤 경험을 위한 세그먼트 기반 광고 유닛 게재를 위해, 세그먼트 명칭이나 사용자 속성 중 하나로 아래의 함수 호출을 완료하세요:
IronSource.setSegment(mIronSegment);
지원되는 사용자 세그먼트의 속성
세그먼트 속성 | 타입 | 제약 | 설명 |
segmentName | String |
|
레벨플레이 계정 내에 정의된 세그먼트의 명칭 |
Age | Int | 1-99 | 사용자의 나이(만) |
Gender | String | female 또는 male | 사용자의 성별 |
Paying | Boolean | True 또는 False |
|
iap_total | Double | 1-999999.99 | 사용자가 인앱결제에 사용한 총 금액량 |
userCreationDate | Long | 0 이상 | 유저가 앱을 설치한 날짜 (millisecond 단위) |
Custom Parameters | key=string, value=string |
|
아이언소스 서버에 보낼 추가 유저 데이터 |
아래의 콜백을 등록하여 유저가 속한 세그먼트 명칭을 수신합니다. 만약 콜백의 문자 파라미터 (세그먼트 명칭)이 빈 문자열로 반환된다면, 아이언소스 세그먼트 모듈에서 해당 유저와 맞는 세그먼트가 발견되지 않은 것입니다.
SegmentListener onSegmentReceived(String segment){}
커스텀 파라미터
아이언소스 SDK는 보상형 동영상 광고 및 오퍼월 광고에서 커스텀 파라미터를 지원합니다. 각각의 광고 유닛 초기화시 이 커스텀 파라미터를 같이 전달할 수 있으며 사용자의 완료 이벤트 때에 파라미터를 수신할 수 있습니다.
이제 레벨플레이 미디에이션 플랫폼 상의 전체 미디에이션 네트워크들에 대해 커스텀 파라미터 전달이 가능합니다.
- 커스텀 파라미터는 서버간 완료 콜백 사용시에만 동작 가능합니다. 콜백 문자열의 일부로 파라미터를 수신합니다.
- 초기화 요청 시 한 개 이상의 커스텀 파라미터를 삽입할 수 있습니다.
구현 코드
보상형 동영상 광고
- 커스텀 파라미터들은 한 세션 중 여러번 설정할 수 있습니다.
- 파라미터값 초기화를 위해서는 clearRewardedVideoServerParameters 메서드를 사용하고, 그 다음 새 값을 설정하시기 바랍니다.
IronSource.setRewardedVideoServerParameters(Map<String, String> params); IronSource.clearRewardedVideoServerParameters();
오퍼월 광고
- 커스텀 파라미터들은 showOfferwall 호출 이전에 호출되어야 합니다.
Map<String, String> owParams = new HashMap<String,String>(); owParams.put("ip", "123.4.56.78"); SupersonicConfig.getConfigObj().setOfferwallCustomParams(owParams);
구현 예제
예를 들어, 오퍼월 광고를 사용하는 한 유저의 IP를 받아오려면, 아래와 같이 추가 파라미터를 완료 콜백에 추가하면 됩니다:
Map<String, String> owParams = new HashMap<String,String>(); owParams.put("ip", "123.4.56.78"); SupersonicConfig.getConfigObj().setOfferwallCustomParams(owParams);
그 다음 아래의 예제와 같이 이에 응답하는 콜백을 받게 됩니다:
http://www.mydomain.com/rewardsCallback?appUserId=[USER_ID]&rewards=[REWARDS]&eventId=[EVENT_ID]&itemName=[ITEM_NAME]&custom_ip=1.0.0.9
워터폴 구성 설정을 통한 가격 제한 (베타)
워터폴 구성 설정 API는 워터폴 상에 동적으로 최소 또는 최대 가격 제한을 설정할 수 있는 API입니다. 이 API를 통해 제한을 설정해서 사용자 별로 반환되는 워터폴을 동적으로 조정하면 광고 로딩 횟수 및 지연 시간을 줄일 수 있습니다.
제한 설정을 할 수 있는 항목은 다음과 같으며, 각 항목들은 모두 동시에 설정 가능합니다:
설정 항목 | 타입 | 설명 |
ceiling | double | 비(非)경매 인스턴스의 최대 eCPM값 (USD) |
floor | double | 비(非)경매 인스턴스 및 경매 인스턴스의 최소 eCPM 값 (USD) |
워터폴 구성 설정 생성하기
WaterfallConfiguration 객체는 워터폴을 커스터마이징하거나 선별하는 구성 내용을 포함합니다. 아래와 같이 구현해서 워터폴 구성을 생성하세요:
// define a WaterfallConfigurationBuilder
WaterfallConfiguration.WaterfallConfigurationBuilder builder = WaterfallConfiguration.builder();
// Build the WaterfallConfiguration and add data to constrain or control a waterfall
WaterfallConfiguration waterfallConfiguration = builder
.setFloor(floor)
.setCeiling(ceiling)
.build();
// set a configuration for an ad unit
IronSource.setWaterfallConfiguration(waterfallconfiguration, IronSource.AD_UNIT.AdUnitName);
워터폴 구성 삭제하기
세션 도중에도 워터폴 구성을 변경이 가능합니다. 워터폴 구성을 삭제하려면 WaterfallConfiguration.empty() 함수를 사용하세요:
IronSource.setWaterfallConfiguration(WaterfallConfiguration.empty(), IronSource.AD_UNIT.AdUnitName);
워터폴 구성 덮어쓰기
생성된 WaterfallConfiguration 객체는 변경이 불가능하기 때문에, 현재 구성을 변경하려면 새로운 WaterfallConfiguration 객체를 생성해야 합니다. 마찬가지로 WaterfallConfigurationBuilder를 사용하여 새 WaterfallConfiguration을 정의하면 됩니다.
...
setWaterfallConfiguration(waterfallconfiguration, IronSource.AD_UNIT.AdUnitName);
WaterfallConfiguration waterfallConfiguration2 = WaterfallConfiguration.builder()
.setFloor(floor)
.setCeiling(ceiling)
.build();
IronSource.setWaterfallConfiguration(waterfallConfiguration2, IronSource.AD_UNIT.AdUnitName);
아이언소스 SDK 에러 코드
아이언소스는 아이언소스 SDK 연동 상의 실패 사항에 대한 설명을 제공하기 위해 오류 피드백 메커니즘을 제공합니다. 문제가 발생했거나, 연동 중 일부분이 올바르게 완료되지 않은 경우 아래에 등재된 오류가 발생합니다.
ironSource Error 오브젝트에는 에러 코드와 메시지가 포함됩니다. 아래는 발생 가능한 에러들과 해당 기능에 따른 메시지 들입니다.
에러 코드 | 광고 유닛(유형) | 설명 |
508 | N/A |
|
509 | 인터스티셜 | 송출 실패: 송출할 광고가 없음 |
보상형 동영상 | ||
오퍼월 | ||
510 | 인터스티셜 | 로드 실패: 서버 응답 실패 로드 실패: 아답터 로딩 실패 |
520 | 인터스티셜 | 송출 실패: 인터넷 연결 없음 (ShouldTrackNetworkState가 활성화 되어 있는 상태) |
보상형 동영상 | 송출 실패: 인터넷 연결 없음 | |
오퍼월 | ||
524 | 인터스티셜 | 송출 실패: 플레이스먼트 %@가 설정된 광고 빈도 한도를 초과 송출 실패: 플레이스먼트 %@가 설정된 광고 빈도 한도를 초과 |
보상형 동영상 | ||
오퍼월 | ||
525 | 인터스티셜 | 송출 실패: 광고 유닛에 설정된 광고 빈도 한도를 초과 송출 실패: 광고 유닛에 설정된 광고 빈도 한도를 초과 |
보상형 동영상 | ||
배너 | ||
526 | 인터스티셜 | 송출 실패: 광고 유닛에 설정된 세션당 일일 광고 횟수 한도를 초과 |
보상형 동영상 | ||
1007 | 인터스티셜 | 광고 경매 실패: 경매 요청에 필요한 정보가 포함되어 있지 않음 |
보상형 동영상 | ||
1022 | 보상형 동영상 | 송출 실패: 다른 보상형 동영상 광고 재생중에 보상형 동영상 광고 재생할 수 없음 |
1023 | 보상형 동영상 | 송출 실패: 송출할 수 있는 광고가 없는 상태에서 광고 송출 API 호출 |
1036 | 인터스티셜 | 송출 실패: 다른 인터스티셜 광고가 재생 중에 인터스티셜 광고 재생할 수 없음 |
1037 | 인터스티셜 | 로드 실패: 다른 인터스티셜 광고가 재생 중에 인터스티셜 로드할 수 없음. |
1055 | 보상형 동영상 | 로드 실패: 시간 초과로 로딩 취소 |
1056 | 보상형 동영상 | 로드 실패: 다른 보상형 동영상 재생 중 보상형 동영상 로드 할 수 없음 |