Hive Adiz Android
Hive Adiz Android는 AdMob에서 제공하는 광고 노출 기능을 더 편하게 쓸 수 있도록 Hive에서 제공하는 Android용 광고 모듈입니다. Hive Adiz Android가 제공하는 광고 형태는 다음과 같습니다.
- 전면 광고(Interstitial)
- 배너 광고(Banner)
- 네이티브 광고(Native)
- 보상형 광고(Rewarded)
- 보상형 전면 광고(Rewarded Interstitial)
- 앱 오프닝 광고(AppOpen)
Hive Adiz Android를 설치하고 사용하려면 아래 가이드를 순서대로 참고하세요.
설치
모듈의 앱 수준 Gradle 파일(app/build.gradle)에 Hive Adiz 라이브러리 항목을 추가합니다.
1 2 3 4 5 |
dependencies { implementation 'com.com2us.android.adiz:hive-adiz:1.1.0' } |
Java 8 기능 지원을 위해 모듈의 앱 수준 Gradle 파일에 android
설정으로 아래와 같이 추가합니다.
1 2 3 4 5 6 7 8 9 |
android { // ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } |
AndroidManifest.xml 파일에 AdMobId
(ca-app-pub-XXXXX~YYYYY 형식)를 입력합니다.
1 2 3 4 5 6 7 8 9 10 |
<manifest> <application> <!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/> </application> </manifest> |
Proguard를 사용한다면 proguard-rules.pro와 같은 Proguard 구성 파일에 아래 설정을 추가합니다.
1 2 3 |
-keep class com.hive.** { *; } |
동영상 광고를 표시하려면 하드웨어 가속을 활성화해야 합니다. AndroidManifest.xml 파일에 하드웨어 가속을 위한 설정을 추가합니다. application
태그에 추가하면 전체 애플리케이션에 하드웨어 가속을 사용합니다. activity
태그에 추가하면 광고를 표시하려는 특정 Activity
에만 하드웨어 가속을 사용합니다.
1 2 3 4 5 6 |
<application android:hardwareAccelerated="true"> <!-- For activities that use ads, hardwareAcceleration should be true. --> <activity android:hardwareAccelerated="true" /> </application> |
테스트 모드 설정
개발 단계에서는 테스트 광고를 클릭해도 광고주에게 비용을 청구하지 않도록 테스트 모드를 활성화합니다. 테스트 모드를 활성화하면 테스트 광고만 노출됩니다. 테스트 모드에서는 Hive 콘솔에 AdMob 광고 키를 입력하지 않아도 테스트 광고를 노출합니다. 상용 배포 시에는 테스트 모드를 비활성화합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import com.hive.adiz.Adiz import com.hive.adiz.AdizError import org.json.JSONException import org.json.JSONObject // 테스트 모드를 활성화합니다. 상용 배포시 아래 라인을 주석 처리합니다. Adiz.setTestMode(true) // Hive Adiz 모듈 로깅을 활성화합니다. 로깅은 테스트 모드에서만 사용해야 합니다. 상용 배포시 아래 라인을 주석 처리합니다. Adiz.setLogEnable(true) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import com.hive.adiz.Adiz; import com.hive.adiz.AdizError; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; // 테스트 모드를 활성화합니다. 상용 배포시 아래 라인을 주석 처리합니다. Adiz.setTestMode(true); // Hive Adiz 모듈 로깅을 활성화합니다. 로깅은 테스트 모드에서만 사용해야 합니다. 상용 배포시 아래 라인을 주석 처리합니다. Adiz.setLogEnable(true); |
Hive Adiz AppID 설정
Hive 콘솔 AppCenter에 등록했던 Hive Adiz AppID를 설정합니다. 미설정 시 AndroidManifest.xml 패키지명을 사용합니다.
1 2 3 |
Adiz.setAppId("YOUR_APPID") |
1 2 3 |
Adiz.setAppId("YOUR_APPID"); |
Hive 콘솔 서버 설정
사용할 Hive 콘솔 서버를 설정합니다. 기본값은 REAL
입니다. 상용 서버를 사용하더라도 테스트 모드를 활성화하면 테스트 광고만 노출합니다.
- Hive 테스트 콘솔 서버:
ZoneType.TEST
- Hive 샌드박스 콘솔 서버:
ZoneType.SANDBOX
- Hive 상용 콘솔 서버:
ZoneType.REAL
1 2 3 |
Adiz.setZone(AdizConfiguration.ZoneType.REAL) |
1 2 3 |
Adiz.setZone(AdizConfiguration.ZoneType.REAL); |
GDPR 동의 팝업 노출(유럽, 영국)
게임이 유럽 및 영국(EEA & UK)을 타겟팅하는 경우, GDPR(유럽 연합 일반 데이터 보호 규칙) 동의 팝업을 노출해야 합니다. GDPR 동의 팝업은 유저 기기 IP 주소가 유럽 및 영국(EEA & UK) IP 주소인 경우에만 노출됩니다. Hive Adiz는 GDPR 동의 팝업 노출을 위해 Google UMP(User Messaging Platform)를 지원합니다. GDPR 팝업을 노출하려면, AdMob 콘솔에서 GDPR 메시지를 작성한 후에 Hive Adiz를 초기화해야 합니다. 유럽 및 영국에서 앱을 서비스할 계획이 없다면, 이 단계를 건너뛰고 Hive Adiz 초기화를 진행하세요.
GDPR 메시지 작성
Google AdMob 콘솔에 접속하여 GDPR 메시지를 작성합니다. GDPR 메시지를 작성하기 전에, 먼저 GDPR 메시지 작성 가이드를 참고하세요.
GDPR 메시지를 작성했다면 Hive Adiz 초기화 시 자동으로 GDPR 동의 팝업이 노출됩니다.
GDPR 동의/철회 기능 구현
GDPR 동의 팝업에 있는 항목들은 유저가 동의 여부를 언제든지 수정할 수 있도록 수정 기능을 제공해야 합니다. 예를 들어, 유저가 처음에는 GDPR에 동의하지 않았지만 맞춤 광고를 보기 위해 다시 동의를 원하거나, 반대로 처음에는 GDPR에 동의했지만 더는 개인 정보를 제공하고 싶지 않아 동의 철회를 원할 수 있습니다. 이러한 상황에 대응하려면 앱 개발사는 각 항목에 다시 동의하거나 기존 동의를 철회하는 기능을 구현해야 합니다. GDPR 동의/철회 기능을 구현하려면 다음 단계를 따릅니다.
- GDPR 동의 팝업창을 다시 불러올 수 있는 버튼 UI를 앱에 구현합니다.
- Hive Adiz 초기화 구현 시
isPrivacyOptionsRequired()
를 호출하여, 유럽 및 영국에서 접속하는 유저에게는 위 버튼 UI를 표시하고, 그렇지 않은 경우에는 표시하지 않도록 구현합니다. 유럽 및 영국에서 접속하는 유저가 위 버튼을 누르면showPrivacyOptionsForm
을 호출하여 GDPR 동의 팝업창을 다시 불러옵니다. 그러면, 유저는 앱에서 언제든지 “Manage Options”와 같은 버튼을 눌러서 GDPR 세부 항목 동의 여부를 수정할 수 있습니다. 아래showPrivacyOptionsForm
은 예시를 위해 임의로 구현한 메서드이며, 개발사에서 원하는 형태로 구현을 변경할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import com.hive.adiz.Adiz import com.hive.adiz.AdizError import com.hive.adiz.gdpr.AdizGDPRManager import com.hive.adiz.gdpr.GDPRConcentListener import org.json.JSONObject fun initialize() { // ... Adiz.initialize(activity, object : Adiz.SdkInitializationListener { override fun onComplete(error: AdizError, jsonData: JSONObject?) { if(error.isSuccess) { // ... 생략 // GDPR 동의 팝업창을 다시 띄우는 버튼을 앱에 표시할지 여부를 결정 var isPrivacyOptionsRequired = AdizGDPRManager.isPrivacyOptionsRequired() if(isPrivacyOptionsRequired) { // 버튼을 앱에 표시함. (버튼 클릭 시 showPrivacyOptionsForm() 호출하여 GDPR 동의 팝업창을 표시함) showGDPRConsentPopupButton() } else { // 버튼을 앱에 표시하지 않음. // 기타 앱에서 원하는 처리. } } } }) } fun showPrivacyOptionsForm(activity: Activity) { // GDPR 동의 옵션 양식 호출 if(AdizGDPRManager.isPrivacyOptionsRequired()) { AdizGDPRManager.showPrivacyOptionsForm(activity, object : GDPRConcentListener { override fun onResult(error: AdizError) { addLog("\nAdizGDPRManager.showPrivacyOptionsForm() errorCode : ${error.getCode()}, errorMessage : ${error.getMessage()}}\n") // No need to do any error handling. } }) } } |
GDPR 테스트 기기 설정
GDPR 동의 팝업은 기기 IP 주소가 유럽 및 영국 IP 주소일 경우에만 노출됩니다. 개발 단계에서는 IP 주소와 상관 없이 GDPR 동의 팝업을 강제로 노출하여 팝업 노출을 테스트할 수 있으며, 이를 위해 GDPR 테스트 기기를 설정해야 합니다. GDPR 테스트 기기 설정을 위해 아래 단계를 따르세요.
- Hive Adiz를 초기화합니다. 테스트 기기 ID를 확인하기 위한 초기화이며 GDPR 동의 메시지를 작성할 필요가 없습니다.
-
Logcat 로그 출력에서 기기 ID를 확인할 수 있는 메세지를 확인합니다. 아래 메세지는 예시입니다.
Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") to set this as a debug device.
메시지에서 기기 ID(예시:
33BE2250B43518CCDA7DE426D04EE231
)를 확인합니다. - 기기 ID를 복사합니다.
- 기존 Hive Adiz 초기화 코드에서
Adiz.initialize
실행 전에AdizGDPRManager.setTestDevice(DEVICE_ID)
를 추가합니다. - GDPR 동의 메시지를 작성하고 Hive Adiz를 다시 초기화하여 GDPR 동의 팝업이 잘 나타나는지 확인합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import com.hive.adiz.Adiz import com.hive.adiz.AdizError import com.hive.adiz.gdpr.AdizGDPRManager import org.json.JSONObject fun initialize() { AdizGDPRManager.setTestDevice("33BE2250B43518CCDA7DE426D04EE231") Adiz.initialize(activity, object : Adiz.SdkInitializationListener { override fun onComplete(error: AdizError, jsonData: JSONObject?) { // ... 생략 } }) } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import com.hive.adiz.Adiz; import com.hive.adiz.AdizError; import org.json.JSONObject; public void initialize() { AdizGDPRManager.setTestDevice("33BE2250B43518CCDA7DE426D04EE231"); Adiz.initialize(activity, new Adiz.SdkInitializationListener() { @Override public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) { if(error.isSuccess()) { // ... 생략 } } }); } |
Hive Adiz 초기화
모든 타입의 광고를 노출하기 전 필수적으로 수행해야 하는 단계입니다. Hive Adiz 초기화를 하면 광고를 노출하는 데 필요한 광고 키를 받을 수 있습니다. 테스트 모드를 활성화한 상태라면 테스트 키를 받습니다. Hive SDK를 사용중이라면 AuthV4.setup
을 호출한 이후 Adiz 초기화를 진행합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
Adiz.initialize(activity, object : Adiz.SdkInitializationListener { override fun onComplete(error: AdizError, jsonData: JSONObject?) { Log.d(TAG, "Adiz initialize complete. error code : ${error.getCode()}, message : ${error.getMessage()}, data : $jsonData") if(error.isSuccess) { if(jsonData != null) { var interstitialKeyList = ArrayList<String>() var bannerKeyList = ArrayList<String>() var nativeKeyList = ArrayList<String>() var rewardedKeyList = ArrayList<String>() var rewardedInterstitialKeyList = ArrayList<String>() var appOpenKeyList = ArrayList<String>() try { var keysArr = jsonData.getJSONArray("keys") for (i in 0 until keysArr.length()) { var unit = keysArr.optJSONObject(i) // 게임에서 직접 광고키를 입력하여 사용할 경우 is_default가 false인 키 목록을 구성하는 예시입니다. if (unit.optBoolean("is_default").not()) { var hiveAdKey = unit.optString("key") when (unit.optString("form")) { "interstitial" -> interstitialKeyList.add(hiveAdKey) "banner" -> bannerKeyList.add(hiveAdKey) "native" -> nativeKeyList.add(hiveAdKey) "rewarded" -> rewardedKeyList.add(hiveAdKey) "rewarded_interstitial" -> rewardedInterstitialKeyList.add(hiveAdKey) "app_open" -> appOpenKeyList.add(hiveAdKey) } } } println("interstitialKeyList $interstitialKeyList") println("bannerKeyList $bannerKeyList") println("nativeKeyList $nativeKeyList") println("rewardedKeyList $rewardedKeyList") println("rewardedInterstitialKeyList $rewardedInterstitialKeyList") println("appOpenKeyList $appOpenKeyList") } catch (e: JSONException) { //... } } } } }) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
Adiz.initialize(activity, new Adiz.SdkInitializationListener() { @Override public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) { if(error.isSuccess()) { if(jsonData != null) { ArrayList interstitialKeyList = new ArrayList<String>(); ArrayList bannerKeyList = new ArrayList<String>(); ArrayList nativeKeyList = new ArrayList<String>(); ArrayList rewardedKeyList = new ArrayList<String>(); ArrayList rewardedInterstitialKeyList = new ArrayList<String>(); ArrayList appOpenKeyList = new ArrayList<String>(); try { JSONArray keysArr = jsonData.optJSONArray("keys"); for(int i = 0; i < keysArr.length(); i++) { JSONObject unit = keysArr.optJSONObject(i); // 게임에서 직접 광고키를 입력하여 사용할 경우 is_default가 false인 키 목록을 구성하는 예시입니다. if(unit.optBoolean("is_default") == false) { String hiveAdKey = unit.optString("key"); String form = unit.optString("form"); switch (form) { case "interstitial": interstitialKeyList.add(hiveAdKey); break; case "banner": bannerKeyList.add(hiveAdKey); break; case "native": nativeKeyList.add(hiveAdKey); break; case "rewarded": rewardedKeyList.add(hiveAdKey); break; case "rewarded_interstitial": rewardedInterstitialKeyList.add(hiveAdKey); break; case "app_open": appOpenKeyList.add(hiveAdKey); break; } } } System.out.println("interstitialKeyList " + interstitialKeyList); System.out.println("bannerKeyList " + bannerKeyList); System.out.println("nativeKeyList " + nativeKeyList); System.out.println("rewardedKeyList " + rewardedKeyList); System.out.println("rewardedInterstitialKeyList " + rewardedInterstitialKeyList); System.out.println("appOpenKeyList " + appOpenKeyList); } catch (Exception e) { } } } } }); |
초기화 실행 시 콜백으로 받는 JSON 파일에는 광고 키 목록이 있습니다. 광고 키 목록은 다음과 같은 형식을 가집니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
{ "keys":[ { "mediation_id":5, "key":"ca-app-pub-3940256099942544/5354046379", "form":"rewarded_interstitial", "is_default":true }, { "mediation_id":4, "key":"ca-app-pub-3940256099942544/5224354917", "form":"rewarded", "is_default":true }, { "mediation_id":3, "key":"ca-app-pub-3940256099942544/2247696110", "form":"native", "is_default":true }, { "mediation_id":1, "key":"ca-app-pub-3940256099942544/1033173712", "form":"interstitial", "is_default":true }, { "mediation_id":2, "key":"ca-app-pub-3940256099942544/6300978111", "form":"banner", "is_default":true }, { "mediation_id":6, "key":"ca-app-pub-3940256099942544/9257395921", "form":"app_open", "is_default":true } ] } |
테스트 모드에서 초기화를 하면 AdMob 광고키를 Hive 콘솔에 등록하지 않았어도 테스트용 광고 키 목록을 받습니다. 상용 모드에서 초기화를 하면 Hive 콘솔에 등록한 AdMob 광고 키 목록을 받습니다.
광고 형태(form
)마다 한 개 광고는 기본 광고("is_default":true
인 광고)로 사용합니다. 어떤 광고 형태를 최초 등록 시, 최초 등록한 광고가 기본 광고가 됩니다. 기본 광고는, 광고 인스턴스를 생성(initialize()
)할 때 광고 키(hiveAdKey
)를 입력하지 않아도 됩니다. 기본 광고를 변경하려면, Hive 콘솔에서 기존 기본 광고를 삭제하고 광고를 새로 등록해야 합니다.
광고 콜백 리스너 설정
각 광고 인스턴스 생성 시 AdizListener
를 구현하면 광고 상태 변화에 따라 콜백을 받을 수 있습니다.
명칭 | 설명 | 필수 구현 |
---|---|---|
onLoad() | 광고 로드 성공 | O |
onFail(error: AdizError) | 실패(error.getCode() 와 error.getMessage() 로 실패 이유를 알 수 있음) |
O |
onShow() | 광고 노출 성공 | O |
onClick() | 광고 클릭 | O |
onPaidEvent(adRevenueData: AdRevenueData) | 광고 노출 이후 paid event를 받는 시점으로, 광고 수익 정보가 전달됨 | O |
onClose() | 광고 종료
|
X |
onRewarded(rewardItem: RewardItem) | 보상형 광고(rewarded , rewarded interstitial )에서 광고 노출 후 유저가 보상을 받는 시점 |
X |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
var adizListener = object : AdizListener() { override fun onLoad() { // 광고가 로드되면 호출됩니다. // 광고 로드가 성공했다면 원하는 시점에 광고 인스턴스의 .show()를 호출하여 광고를 노출해야 합니다. } override fun onFail(loadError: AdizError) { // 광고 로드가 실패했거나 다른 이유로 광고 노출이 실패한 경우 호출됩니다. } override fun onShow() { // 광고가 노출되면 호출됩니다. } override fun onClick() { // 광고를 클릭한 경우 호출됩니다. } override fun onPaidEvent(adRevenueData: AdRevenueData) { // 광고에 대한 수익이 발생한 경우 호출됩니다. var revenue = adRevenueData.revenue // 광고 노출 시 수익 var currency = adRevenueData.currency // 광고 노출 시 수익 통화 코드 } override fun onClose() { // 광고가 닫힌 경우 호출됩니다. // Banner, Native 광고는 onClose 콜백이 호출되지 않습니다. } override fun onRewarded(rewardItem: RewardItem) { // 보상형 광고, 보상형 전면 광고에서 광고 시청에 대한 보상이 발생한 경우 호출됩니다. var itemType = rewardItem.itemType // 보상 아이템 타입 var itemAmount = rewardItem.itemAmount // 보상 아이템 수량 } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
AdizListener adizListener = new AdizListener() { @Override public void onLoad() { // 광고가 로드되면 호출됩니다. // 광고 로드가 성공했다면 원하는 시점에 광고 인스턴스의 .show()를 호출하여 광고를 노출해야 합니다. } @Override public void onFail(@NonNull AdizError loadError) { // 광고 로드가 실패했거나 다른 이유로 광고 노출이 실패한 경우 호출됩니다. } @Override public void onShow() { // 광고가 노출되면 호출됩니다. } @Override public void onClick() { // 광고를 클릭한 경우 호출됩니다. } @Override public void onPaidEvent(@NonNull AdRevenueData adRevenueData) { double revenue = adRevenueData.getRevenue(); // 광고 노출 시 수익 String currency = adRevenueData.getCurrency(); // 광고 노출 시 수익 통화 코드 } @Override public void onClose() { // 광고가 닫힌 경우 호출됩니다. // Banner, Native 광고는 닫기 버튼이 없으므로 onClose 콜백이 호출되지 않습니다. } @Override public void onRewarded(@NonNull RewardItem rewardItem) { // 보상형 광고, 보상형 전면 광고에서 광고 시청에 대한 보상이 발생한 경우 호출됩니다. String rewardType = rewardItem.getItemType(); // 보상 아이템 타입 int rewardAmount = rewardItem.getItemAmount(); // 보상 아이템 수량 } }; |
에러 코드
Adiz.Initialize
와 AdizListener
에서 onFail()
을 받았을 때 AdizError
에러 코드와 에러 메세지는 다음과 같습니다.
공통 코드
Number | Case | Explanation |
---|---|---|
0 | Success | 성공 |
Adiz 에러 코드
Number | Case | Explanation |
---|---|---|
-1 | InvalidParam | 잘못된 파라미터 |
-2 | NotSupported | 지원하지 않음 |
-3 | InProgress | 프로세스 진행중 상태 |
-4 | Network | 네트워크 에러 |
-5 | NeedInitialize | 초기화 필요 |
-6 | ResponseFail | 응답 실패 |
-7 | Timeout | 네트워크 타임 아웃 |
-99 | Unknown | 알 수 없는 에러 |
광고 플랫폼 에러 코드
Number | Case | Explanation |
---|---|---|
-101 | NeedLoad | 광고가 로드 되지 않았음 |
-102 | NeedReload | 광고 노출 시간 만료로 인한 다시 로드 필요 |
-103 | NotEnoughInventory | 미디에이션 응답은 성공하였으나 인벤토리 부족으로 채워진 광고가 없음 |
-104 | MissingAppId | 미디에이션 요청을 위한 AppID 오류 |
-105 | InternalNetworkError | 미디에이션 네트워크 관련 에러 |
-106 | InvalidUnitId | 잘못된 Unit Id |
-107 | MediationNoFill | 미디에이션 어댑터가 광고 요청을 처리하지 못함 |
-108 | AlreadyLoaded | 이미 로드된 상태 |
-109 | CannotRequestAds | 광고를 요청할 수 없음 |
-201 | GdprConsentError | GDPR 동의 에러 |
-202 | IsNotPrivacyOptionsRequired | GDPR 동의 팝업을 노출할 수 없거나 노출하지 않아도 되는 상태임 |
광고 노출과 광고 종료
광고를 노출, 종료하려면 다음 순서를 따릅니다.
- 노출하려는 광고 형태별로 광고 클래스에서 광고 인스턴스를 생성합니다. 노출하려는 광고가 기본 광고가 아니라면, 초기화에서 얻은 광고 키를 입력해야 합니다. 광고 키(
hiveAdKey
)를 입력하지 않으면, 기본 광고 인스턴스를 생성합니다. - 노출하려는 광고를 로드(
load()
)합니다. - 로드한 광고를 노출(
show()
)합니다. 광고를 다시 노출하려면load()
를 다시 호출한 후show()
를 호출해야 합니다. - 광고를 종료하려면
destroy()
를 호출합니다.
전면 광고 (Interstitial)
화면 전체를 차지하는 전면 광고입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
import android.app.Activity import android.os.Bundle import com.hive.adiz.AdizError import com.hive.adiz.AdizListener import com.hive.adiz.base.AdizInterstitial import com.hive.adiz.common.AdRevenueData class InterstitialExample : Activity() { var interstitialAd: AdizInterstitial? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // requestInitAd(this) } fun requestInitAd(activity: Activity, hiveAdKey: String? = null) { val adizListener = object : AdizListener() { override fun onLoad() { // requestShowAd() } override fun onFail(loadError: AdizError) { var code = loadError.getCode() // 에러 코드 var message = loadError.getMessage() // 에러 메세지 } override fun onShow() { // } override fun onClick() { // } override fun onPaidEvent(adRevenueData: AdRevenueData) { var revenue = adRevenueData.revenue // 광고 노출 시 수익 var currency = adRevenueData.currency // 광고 노출 시 수익 통화 코드 } override fun onClose() { // requestDestroyAd() } } if(hiveAdKey == null) { // 전면 광고 인스턴스를 생성합니다. interstitialAd = AdizInterstitial.initialize(activity, adizListener) } else { // hiveAdKey를 입력하여 전면 광고 인스턴스를 생성할 수 있습니다. interstitialAd = AdizInterstitial.initialize(activity, hiveAdKey, adizListener) } // requestLoadAd() } fun requestLoadAd() { // 전면 광고를 로드합니다. interstitialAd?.load() } fun requestShowAd() { // 전면 광고를 노출합니다. interstitialAd?.show() } fun requestDestroyAd() { // 전면 광고를 제거합니다. interstitialAd?.destroy() } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.hive.adiz.AdizError; import com.hive.adiz.AdizListener; import com.hive.adiz.base.AdizInterstitial; import com.hive.adiz.common.AdRevenueData; public class InterstitialExample extends Activity { AdizInterstitial interstitialAd = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... // requestInitAd(this, null); } public void requestInitAd(Activity activity, String hiveAdKey) { AdizListener adizListener = new AdizListener() { @Override public void onLoad() { // requestShowAd(); } @Override public void onFail(@NonNull AdizError loadError) { int code = loadError.getCode(); // 에러 코드 String message = loadError.getMessage(); // 에러 메세지 } @Override public void onShow() { } @Override public void onClick() { // } @Override public void onClose() { // requestDestroyAd(); } @Override public void onPaidEvent(@NonNull AdRevenueData adRevenueData) { double revenue = adRevenueData.getRevenue(); // 광고 노출 시 수익 String currency = adRevenueData.getCurrency(); // 광고 노출 시 수익 통화 코드 } }; if(TextUtils.isEmpty(hiveAdKey)) { // 전면 광고 인스턴스를 생성합니다. interstitialAd = AdizInterstitial.initialize(activity, adizListener); } else { // hiveAdKey를 입력하여 전면 광고 인스턴스를 생성할 수 있습니다. interstitialAd = AdizInterstitial.initialize(activity, hiveAdKey, adizListener); } // requestLoadAd(); } private void requestLoadAd() { // 전면 광고를 로드합니다. if(interstitialAd != null) interstitialAd.load(); } private void requestShowAd() { // 전면 광고를 노출합니다. if(interstitialAd != null) interstitialAd.show(); } private void requestDestroyAd() { // 전면 광고를 제거합니다. if(interstitialAd != null) interstitialAd.destroy(); } } |
배너 광고 (Banner)
특정 사이즈의 배너를 노출하는 배너 광고입니다. 배너 광고는 onClose()
콜백을 전달받지 않습니다. 따라서, 다른 위치에서 destroy()
를 호출하여 광고를 종료해야 합니다.
BannerSize
는 표준 배너 크기를 따릅니다.
크기 포인트 (너비x높이) | 설명 | 지원 대상 | BannerSize 상수 |
---|---|---|---|
320×50 | 배너 | 휴대전화 및 태블릿 | BannerSize.NORMAL |
320×100 | 대형 배너 | 휴대전화 및 태블릿 | BannerSize.MEDIUM |
300×250 | IAB 중간 직사각형 | 휴대전화 및 태블릿 | BannerSize.LARGE |
468 x 60 | IAB 전체 크기 배너 | 태블릿 | BannerSize.FULL |
PositionType
은 최상단 혹은 최하단입니다. 기본값은 최하단입니다.
정렬 | 설명 | PositionType 상수 |
---|---|---|
최상단 정렬 | 화면 최상단 정렬 지정 | PositionType.TOP |
최하단 정렬 (기본값) | 화면 최하단 정렬 지정 | PositionType.BOTTOM |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
import android.app.Activity import android.os.Bundle import com.hive.adiz.AdizError import com.hive.adiz.AdizListener import com.hive.adiz.base.AdizBanner import com.hive.adiz.common.AdRevenueData import com.hive.adiz.common.BannerSize import com.hive.adiz.common.PositionType class BannerExample : Activity() { var banner: AdizBanner? = null // 배너 사이즈를 설정합니다. var bannerSize = BannerSize.NORMAL override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // requestInitAd(this) } fun requestInitAd(activity: Activity, hiveAdKey: String? = null) { val adizListener = object : AdizListener() { override fun onLoad() { // requestShowAd() } override fun onFail(loadError: AdizError) { var code = loadError.getCode() // 에러 코드 var message = loadError.getMessage() // 에러 메세지 } override fun onShow() { // } override fun onClick() { // } override fun onPaidEvent(adRevenueData: AdRevenueData) { var revenue = adRevenueData.revenue // 광고 노출 시 수익 var currency = adRevenueData.currency // 광고 노출 시 수익 통화 코드 } } if(hiveAdKey == null) { // 배너 광고 인스턴스를 생성합니다. banner = AdizBanner.initialize(activity, bannerSize, adizListener) } else { // hiveAdKey를 입력하여 배너 광고 인스턴스를 생성할 수 있습니다. banner = AdizBanner.initialize(activity, hiveAdKey, bannerSize, adizListener) } // requestLoadAd() } fun requestLoadAd() { // 배너 광고를 로드합니다. banner?.load() } fun requestShowAd() { // 배너 광고를 노출합니다. banner?.show() // banner position set // var position = PositionType.TOP // banner?.show(position) } fun requestDestroyAd() { // 배너 광고를 제거합니다. banner?.destroy() } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.hive.adiz.AdizError; import com.hive.adiz.AdizListener; import com.hive.adiz.base.AdizBanner; import com.hive.adiz.common.AdRevenueData; import com.hive.adiz.common.BannerSize; import com.hive.adiz.common.PositionType; public class BannerExample extends Activity { // 배너 사이즈를 설정합니다. BannerSize bannerSize = BannerSize.NORMAL; AdizBanner banner = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... // requestInitAd(this, null); } public void requestInitAd(Activity activity, String hiveAdKey) { AdizListener adizListener = new AdizListener() { @Override public void onLoad() { // requestShowAd(); } @Override public void onFail(@NonNull AdizError loadError) { int code = loadError.getCode(); // 에러 코드 String message = loadError.getMessage(); // 에러 메세지 } @Override public void onShow() { } @Override public void onClick() { // } @Override public void onPaidEvent(@NonNull AdRevenueData adRevenueData) { double revenue = adRevenueData.getRevenue(); // 광고 노출 시 수익 String currency = adRevenueData.getCurrency(); // 광고 노출 시 수익 통화 코드 } }; if(TextUtils.isEmpty(hiveAdKey)) { // 배너 광고 인스턴스를 생성합니다.(광고 키(HiveAdKey)를 입력하지 않을 경우 Hive Adiz 초기화시 전달 받았던 is_default=true로 설정된 디폴트 키로 인스턴스가 생성됩니다.) banner = AdizBanner.initialize(activity, bannerSize, adizListener); } else { // hiveAdKey를 입력하여 배너 광고 인스턴스를 생성할 수 있습니다. banner = AdizBanner.initialize(activity, hiveAdKey, bannerSize, adizListener); } // requestLoadAd(); } private void requestLoadAd() { // 배너 광고를 로드합니다. if(banner != null) banner.load(); } private void requestShowAd() { // 배너 광고를 노출합니다. if(banner != null) banner.show(); // banner position set // PositionType position = PositionType.TOP; // if(banner != null) banner.show(position); } private void requestDestroyAd() { // 배너 광고를 제거합니다. if(banner != null) banner.destroy(); } } |
네이티브 광고 (Native)
특정 크기의 Native 템플릿을 노출하는 네이티브 광고입니다. 네이티브 광고는 세로 화면에 최적화되어 있으므로 세로형 게임(세로 화면 게임)에서 사용하는 것을 권장합니다. 네이티브 광고는 onClose()
콜백을 전달받지 않습니다. 따라서, 다른 위치에서 destroy()
를 호출하여 광고를 종료해야 합니다.
현재 템플릿은 small
또는 medium
사이즈를 지원합니다.
템플릿 | 정렬 | BannerSize 상수 |
---|---|---|
small 사이즈 | Top / Bottom | BannerSize.NORMAL |
medium 사이즈 | Center (고정) | BannerSize.MEDIUM |
small
템플릿에서 PositionType
은 최상단 혹은 최하단이며 기본값은 최하단입니다.
정렬 | 설명 | PositionType 상수 |
---|---|---|
최상단 정렬 | 화면 최상단 정렬 지정 | PositionType.TOP |
최하단 정렬 (기본값) | 화면 최하단 정렬 지정 | PositionType.BOTTOM |
medium
템플릿은 정렬을 선택할 수 없으며, 기본적으로 중앙 정렬을 사용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import android.app.Activity import android.os.Bundle import com.hive.adiz.AdizError import com.hive.adiz.AdizListener import com.hive.adiz.base.AdizNative import com.hive.adiz.common.AdRevenueData import com.hive.adiz.common.BannerSize class NativeAdExampleKT : Activity() { var nativeAd: AdizNative? = null // 배너 사이즈를 설정합니다. var bannerSize = BannerSize.NORMAL override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // requestInitAd(this) } fun requestInitAd(activity: Activity, hiveAdKey: String? = null) { val adizListener = object : AdizListener() { override fun onLoad() { // requestShowAd() } override fun onFail(loadError: AdizError) { var code = loadError.getCode() // 에러 코드 var message = loadError.getMessage() // 에러 메세지 } override fun onShow() { // } override fun onClick() { // } override fun onPaidEvent(adRevenueData: AdRevenueData) { var revenue = adRevenueData.revenue // 광고 노출 시 수익 var currency = adRevenueData.currency // 광고 노출 시 수익 통화 코드 } } if(hiveAdKey == null) { // 네이티브 광고 인스턴스를 생성합니다. nativeAd = AdizNative.initialize(activity, bannerSize, adizListener) } else { // hiveAdKey를 입력하여 네이티브 광고 인스턴스를 생성할 수 있습니다. nativeAd = AdizNative.initialize(activity, hiveAdKey, bannerSize, adizListener) } // requestLoadAd() } fun requestLoadAd() { // 네이티브 광고를 로드합니다. nativeAd?.load() } fun requestShowAd() { // 네이티브 광고를 노출합니다. nativeAd?.show() // banner position set // var position = PositionType.TOP // nativeAd?.show(position) } fun requestDestroyAd() { // 네이티브 광고를 제거합니다. nativeAd?.destroy() } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.hive.adiz.AdizError; import com.hive.adiz.AdizListener; import com.hive.adiz.base.AdizNative; import com.hive.adiz.common.AdRevenueData; import com.hive.adiz.common.BannerSize; import com.hive.adiz.common.PositionType; public class NativeAdExample extends Activity { // 배너 사이즈를 설정합니다. BannerSize bannerSize = BannerSize.NORMAL; AdizNative nativeAd = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... // requestInitAd(this, null); } public void requestInitAd(Activity activity, String hiveAdKey) { AdizListener adizListener = new AdizListener() { @Override public void onLoad() { // requestShowAd(); } @Override public void onFail(@NonNull AdizError loadError) { int code = loadError.getCode(); // 에러 코드 String message = loadError.getMessage(); // 에러 메세지 } @Override public void onShow() { } @Override public void onClick() { // } @Override public void onPaidEvent(@NonNull AdRevenueData adRevenueData) { double revenue = adRevenueData.getRevenue(); // 광고 노출 시 수익 String currency = adRevenueData.getCurrency(); // 광고 노출 시 수익 통화 코드 } }; if(TextUtils.isEmpty(hiveAdKey)) { // 네이티브 광고 인스턴스를 생성합니다.(광고 키(HiveAdKey)를 입력하지 않을 경우 Hive Adiz 초기화시 전달 받았던 is_default=true로 설정된 디폴트 키로 인스턴스가 생성됩니다.) nativeAd = AdizNative.initialize(activity, bannerSize, adizListener); } else { // hiveAdKey를 입력하여 네이티브 광고 인스턴스를 생성할 수 있습니다. nativeAd = AdizNative.initialize(activity, hiveAdKey, bannerSize, adizListener); } // requestLoadAd(); } private void requestLoadAd() { // 네이티브 광고를 로드합니다. if(nativeAd != null) nativeAd.load(); } private void requestShowAd() { // 네이티브 광고를 노출합니다. if(nativeAd != null) nativeAd.show(); // banner position set // PositionType position = PositionType.TOP; // if(nativeAd != null) nativeAd.show(position); } private void requestDestroyAd() { // 네이티브 광고를 제거합니다. if(nativeAd != null) nativeAd.destroy(); } } |
보상형 광고 (Rewarded)
유저가 광고를 일정 시간 이상 시청 시 리워드를 받는 보상형 광고입니다. 리워드 지급을 완료하면 onRewarded()
콜백으로 보상 아이템 정보를 받습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
import android.app.Activity import android.os.Bundle import com.hive.adiz.AdizError import com.hive.adiz.AdizListener import com.hive.adiz.base.AdizRewarded import com.hive.adiz.common.AdRevenueData class RewardedExample : Activity() { var rewardedAd: AdizRewarded? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // requestInitAd(this) } fun requestInitAd(activity: Activity, hiveAdKey: String? = null) { val adizListener = object : AdizListener() { override fun onLoad() { // requestShowAd() } override fun onFail(loadError: AdizError) { var code = loadError.getCode() // 에러 코드 var message = loadError.getMessage() // 에러 메세지 } override fun onShow() { // } override fun onClick() { // } override fun onPaidEvent(adRevenueData: AdRevenueData) { var revenue = adRevenueData.revenue // 광고 노출 시 수익 var currency = adRevenueData.currency // 광고 노출 시 수익 통화 코드 } override fun onClose() { // requestDestroyAd() } override fun onRewarded(rewardItem: RewardItem) { var itemType = rewardItem.itemType // 보상 아이템 타입 var itemAmount = rewardItem.itemAmount // 보상 아이템 수량 } } if(hiveAdKey == null) { // 보상형 광고 인스턴스를 생성합니다. rewardedAd = AdizRewarded.initialize(activity, adizListener) } else { // hiveAdKey를 입력하여 보상형 광고 인스턴스를 생성할 수 있습니다. rewardedAd = AdizRewarded.initialize(activity, hiveAdKey, adizListener) } // requestLoadAd() } fun requestLoadAd() { // 보상형 광고를 로드합니다. rewardedAd?.load() } fun requestShowAd() { // 보상형 광고를 노출합니다. rewardedAd?.show() } fun requestDestroyAd() { // 보상형 광고를 제거합니다. rewardedAd?.destroy() } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.hive.adiz.AdizError; import com.hive.adiz.AdizListener; import com.hive.adiz.base.AdizRewarded; import com.hive.adiz.common.AdRevenueData; public class RewardedExample extends Activity { AdizRewarded rewardedAd = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... // requestInitAd(this, null); } public void requestInitAd(Activity activity, String hiveAdKey) { AdizListener adizListener = new AdizListener() { @Override public void onLoad() { // requestShowAd(); } @Override public void onFail(@NonNull AdizError loadError) { int code = loadError.getCode(); // 에러 코드 String message = loadError.getMessage(); // 에러 메세지 } @Override public void onShow() { // } @Override public void onClick() { // } @Override public void onPaidEvent(@NonNull AdRevenueData adRevenueData) { double revenue = adRevenueData.getRevenue(); // 광고 노출 시 수익 String currency = adRevenueData.getCurrency(); // 광고 노출 시 수익 통화 코드 } @Override public void onClose() { // requestDestroyAd(); } @Override public void onRewarded(@NonNull RewardItem rewardItem) { String rewardType = rewardItem.getItemType(); // 보상 아이템 타입 int rewardAmount = rewardItem.getItemAmount(); // 보상 아이템 수량 } }; if(TextUtils.isEmpty(hiveAdKey)) { // 보상형 광고 인스턴스를 생성합니다.(광고 키(HiveAdKey)를 입력하지 않을 경우 Hive Adiz 초기화시 전달 받았던 is_default=true로 설정된 디폴트 키로 인스턴스가 생성됩니다.) rewardedAd = AdizRewarded.initialize(activity, adizListener); } else { // hiveAdKey를 입력하여 보상형 광고 인스턴스를 생성할 수 있습니다. rewardedAd = AdizRewarded.initialize(activity, hiveAdKey, adizListener); } // requestLoadAd(); } private void requestLoadAd() { // 보상형 광고를 로드합니다. if(rewardedAd != null) rewardedAd.load(); } private void requestShowAd() { // 보상형 광고를 노출합니다. if(rewardedAd != null) rewardedAd.show(); } private void requestDestroyAd() { // 보상형 광고를 제거합니다. if(rewardedAd != null) rewardedAd.destroy(); } } |
보상형 전면 광고 (Rewarded Interstitial)
유저가 광고를 일정 시간 이상 시청 시 리워드를 받는 보상형 전면 광고입니다. 리워드 지급을 완료하면 onRewarded()
콜백으로 보상 아이템 정보를 받습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import android.app.Activity import android.os.Bundle import com.hive.adiz.AdizError import com.hive.adiz.AdizListener import com.hive.adiz.base.AdizRewardedInterstitial import com.hive.adiz.common.AdRevenueData import com.hive.adiz.rewarded.RewardItem class RewardedInterstitialExample : Activity() { var rewardedInterstitialAd: AdizRewardedInterstitial? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // requestInitAd(this) } fun requestInitAd(activity: Activity, hiveAdKey: String? = null) { val adizListener = object : AdizListener() { override fun onLoad() { // requestShowAd() } override fun onFail(loadError: AdizError) { var code = loadError.getCode() // 에러 코드 var message = loadError.getMessage() // 에러 메세지 } override fun onShow() { // } override fun onClick() { // } override fun onPaidEvent(adRevenueData: AdRevenueData) { var revenue = adRevenueData.revenue // 광고 노출 시 수익 var currency = adRevenueData.currency // 광고 노출 시 수익 통화 코드 } override fun onClose() { // requestDestroyAd() } override fun onRewarded(rewardItem: RewardItem) { var itemType = rewardItem.itemType // 보상 아이템 타입 var itemAmount = rewardItem.itemAmount // 보상 아이템 수량 } } if(hiveAdKey == null) { // 보상형 전면 광고 인스턴스를 생성합니다. rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener) } else { // hiveAdKey를 입력하여 보상형 전면 광고 인스턴스를 생성할 수 있습니다. rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, hiveAdKey, adizListener) } // requestLoadAd() } fun requestLoadAd() { // 보상형 전면 광고를 로드합니다. rewardedInterstitialAd?.load() } fun requestShowAd() { // 보상형 전면 광고를 노출합니다. rewardedInterstitialAd?.show() } fun requestDestroyAd() { // 보상형 전면 광고를 제거합니다. rewardedInterstitialAd?.destroy() } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.hive.adiz.AdizError; import com.hive.adiz.AdizListener; import com.hive.adiz.base.AdizRewardedInterstitial; import com.hive.adiz.common.AdRevenueData; import com.hive.adiz.rewarded.RewardItem; public class RewardedInterstitialExample extends Activity { AdizRewardedInterstitial rewardedInterstitialAd = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... // requestInitAd(this, null); } public void requestInitAd(Activity activity, String hiveAdKey) { AdizListener adizListener = new AdizListener() { @Override public void onLoad() { // requestShowAd(); } @Override public void onFail(@NonNull AdizError loadError) { int code = loadError.getCode(); // 에러 코드 String message = loadError.getMessage(); // 에러 메세지 } @Override public void onShow() { // } @Override public void onClick() { // } @Override public void onPaidEvent(@NonNull AdRevenueData adRevenueData) { double revenue = adRevenueData.getRevenue(); // 광고 노출 시 수익 String currency = adRevenueData.getCurrency(); // 광고 노출 시 수익 통화 코드 } @Override public void onClose() { // requestDestroyAd(); } @Override public void onRewarded(@NonNull RewardItem rewardItem) { String rewardType = rewardItem.getItemType(); // 보상 아이템 타입 int rewardAmount = rewardItem.getItemAmount(); // 보상 아이템 수량 } }; if(TextUtils.isEmpty(hiveAdKey)) { // 보상형 전면 광고 인스턴스를 생성합니다.(광고 키(HiveAdKey)를 입력하지 않을 경우 Hive Adiz 초기화시 전달 받았던 is_default=true로 설정된 디폴트 키로 인스턴스가 생성됩니다.) rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener); } else { // hiveAdKey를 입력하여 보상형 전면 광고 인스턴스를 생성할 수 있습니다. rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, hiveAdKey, adizListener); } // requestLoadAd(); } private void requestLoadAd() { // 보상형 전면 광고를 로드합니다. if(rewardedInterstitialAd != null) rewardedInterstitialAd.load(); } private void requestShowAd() { // 보상형 전면 광고를 노출합니다. if(rewardedInterstitialAd != null) rewardedInterstitialAd.show(); } private void requestDestroyAd() { // 보상형 전면 광고를 제거합니다. if(rewardedInterstitialAd != null) rewardedInterstitialAd.destroy(); } } |
앱 오프닝 광고 (AppOpen)
앱 상태가 백그라운드에서 포그라운드로 변경될 때 미리 로드해놨던(load()
) 광고를 노출하는 앱 오프닝 광고입니다. 광고 로드 후 3시간이 경과한 후에 show()
를 호출하면, 광고를 자동으로 다시 로드한 후에 광고를 노출합니다. 일단 광고를 한 번이라도 노출한 후에는 광고는 자동으로 로드되지 않습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import android.app.Activity import android.os.Bundle import com.hive.adiz.AdizError import com.hive.adiz.AdizListener import com.hive.adiz.base.AdizAppOpen import com.hive.adiz.common.AdRevenueData class AppOpenExample : Activity() { var appOpen: AdizAppOpen? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // requestInitAd(this) } fun requestInitAd(activity: Activity, hiveAdKey: String? = null) { val adizListener = object : AdizListener() { override fun onLoad() { // } override fun onFail(loadError: AdizError) { var code = loadError.getCode() // 에러 코드 var message = loadError.getMessage() // 에러 메세지 } override fun onShow() { // } override fun onClick() { // } override fun onPaidEvent(adRevenueData: AdRevenueData) { var revenue = adRevenueData.revenue // 광고 노출 시 수익 var currency = adRevenueData.currency // 광고 노출 시 수익 통화 코드 } override fun onClose() { // requestDestroyAd() } } if(hiveAdKey == null) { // 앱 오프닝 광고 인스턴스를 생성합니다. appOpen = AdizAppOpen.initialize(activity, adizListener) } else { // hiveAdKey를 입력하여 앱 오프닝 광고 인스턴스를 생성할 수 있습니다. appOpen = AdizAppOpen.initialize(activity, hiveAdKey, adizListener) } // requestLoadAd() } fun requestLoadAd() { // 앱 오프닝 광고를 로드합니다. 로드가 완료된 이후 앱이 백그라운드에서 포그라운드로 올라올 때 자동으로 광고가 노출됩니다. // 광고가 한 번이라도 노출이 된 이후부터는 재노출되지 않으므로 계속해서 광고 노출을 원할 경우 onClose() 콜백에서 appOpen.load()를 다시 호출해야 합니다. appOpen?.load() } fun requestDestroyAd() { // 앱 오프닝 광고를 제거합니다. appOpen?.destroy() } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.hive.adiz.AdizError; import com.hive.adiz.AdizListener; import com.hive.adiz.base.AdizAppOpen; import com.hive.adiz.common.AdRevenueData; public class AppOpenExample extends Activity { AdizAppOpen appOpen = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //... // requestInitAd(this, null); } public void requestInitAd(Activity activity, String hiveAdKey) { AdizListener adizListener = new AdizListener() { @Override public void onLoad() { // } @Override public void onFail(@NonNull AdizError loadError) { int code = loadError.getCode(); // 에러 코드 String message = loadError.getMessage(); // 에러 메세지 } @Override public void onShow() { // } @Override public void onClick() { // } @Override public void onPaidEvent(@NonNull AdRevenueData adRevenueData) { double revenue = adRevenueData.getRevenue(); // 광고 노출 시 수익 String currency = adRevenueData.getCurrency(); // 광고 노출 시 수익 통화 코드 } @Override public void onClose() { // requestDestroyAd(); } }; if(TextUtils.isEmpty(hiveAdKey)) { // 앱 오프닝 광고 인스턴스를 생성합니다.(광고 키(HiveAdKey)를 입력하지 않을 경우 Hive Adiz 초기화시 전달 받았던 is_default=true로 설정된 디폴트 키로 인스턴스가 생성됩니다.) appOpen = AdizAppOpen.initialize(activity, adizListener); } else { // hiveAdKey를 입력하여 앱 오프닝 광고 인스턴스를 생성할 수 있습니다. appOpen = AdizAppOpen.initialize(activity, hiveAdKey, adizListener); } // requestLoadAd(); } private void requestLoadAd() { // 앱 오프닝 광고를 로드합니다. if(appOpen != null) appOpen.load(); } private void requestDestroyAd() { // 앱 오프닝 광고를 제거합니다. if(appOpen != null) appOpen.destroy(); } } |