인모비 네이티브 광고는 앱의 콘텐츠에 원활하게 섞여 들어가 사용자 경험에 영향을 주지 않으면서 사용자 참여를 최대화합니다. 앱의 디자인과 가장 잘 맞는 레이아웃을 선택하여 사용자 지정할 수 있습니다. 인모비 네이티브 광고는 뉴스, 유틸리티 및 커뮤니케이션 앱에 이상적입니다.
인모비 네이티브 광고는 비디오 및/또는 정적 이미지를 모두 포함할 수 있습니다. 배치 위치에 따라 다음을 선택할 수 있습니다.
다음의 간단한 단계에 따라 네이티브 광고를 통해 수익을 창출하십시오.
인피드 비디오 광고 배치
정적 피드 광고 배치
nativeAd.getPrimaryViewOfWidth(context,convertView, parent, width);
를 확인합니다.
스플래시 비디오 광고 배치
네이티브 광고 레이아웃으로 SPLASH를 선택합니다.
네이티브 광고를 생성하려면 InMobiNative
인스턴스를 생성합니다.
public class NativeAdsActivity extends Activity {
private final List<inmobinative> mNativeAds = new ArrayList<>();
InMobiNative nativeAd = new InMobiNative(NativeAdsActivity.this, YOUR_PLACEMENT_ID, nativeAdEventListener);
nativeAd.load();
mNativeAds.add(nativeAd);
</inmobinative>
여기서 nativeAdEventListener
는 NativeAdEventListener
추상 클래스의 구현입니다. 네이티브 광고를 작성하려면 이 인터페이스의 구현을 제공해야 합니다.
필수: InMobiNative
생성자에 컨텍스트 구현을 제공해야합니다.. 구현 시 InMobiNative
에 대한 강력한 참조가 있는지 확인하십시오. 그렇지 않으면 SDK에서 이 참조를 위해 콜백을 받을 수 없습니다. 이를 위해서는 클래스의 멤버 변수로 만들거나 애플리케이션 수명 주기 동안 존재하는 컬렉션에 저장합니다.
NativeAdListener
인터페이스를 사용하면 네이티브 광고의 키 수명 주기 이벤트를 수신할 수 있습니다.
inMobiNative
는 항상 강력한 참조 여야합니다. 그렇지 않으면이 참조에 대해 콜백 (로드 성공,로드 실패 등)을 수신하지 못할 수 있습니다.inMobiNative
가 모든 변수에 의해 참조되는 경우 해당 참조가 강력한 참조인지 확인하십시오.inMobiNative
가 제거되지 않도록하십시오.NativeAdEventListener
추상 클래스를 사용하면 기본 광고의 주요 수명주기 이벤트를 수신 할 수 있습니다.
/**
* A listener for receiving notifications during the lifecycle of a Native ad.
*/
public abstract class NativeAdEventListener {
/**
* Called to indicate that an ad is available in response to a request for an ad (by calling
* {@link InMobiNative#load()}.
<strong>Note</strong> This does not * indicate that the ad can be shown yet.
Your code should show an ad <strong>after</strong> the
* {@link #onAdLoadSucceeded(InMobiNative)} method is called.
Alternately, if you do not * want to handle this event,
you must test if the ad is ready to be shown by checking the * result of calling the
{@link InMobiNative#isReady()} method.* *
@param ad Represents the {@link InMobiNative} ad for which ad content was received
*/ public void onAdReceived(InMobiNative ad) {}
/** * Called to indicate that an ad was loaded and it can now be shown.
This will always be called * after the {@link #onAdReceived(InMobiNative)} callback.
* * @param ad Represents the {@link InMobiNative} ad which was loaded */
public void onAdLoadSucceeded(InMobiNative ad) {}
/** * Called to notify that a native ad failed to load.
* * @param ad Represents the {@link InMobiNative} ad which failed to load
* @param requestStatus Represents the {@link InMobiAdRequestStatus} status containing error reason */
public void onAdLoadFailed(InMobiNative ad, InMobiAdRequestStatus requestStatus) {}
/** * * @param ad Represents the {@link InMobiNative} ad whose fullscreen was dismissed */
public void onAdFullScreenDismissed(InMobiNative ad) {}
/** * Called to notify that the ad will open an overlay that covers the screen.
* * @param ad Represents the {@link InMobiNative} ad which will go fullscreen */
public void onAdFullScreenWillDisplay(InMobiNative ad) {}
/** * Called to notify that the ad opened an overlay that covers the screen.
* * @param ad Represents the {@link InMobiNative} ad whose fullscreen will be displayed */
public void onAdFullScreenDisplayed(InMobiNative ad) {}
/** * Called to notify that the user is about to leave the application as a result of interacting with it.
* * @param ad Represents the {@link InMobiNative} ad */
public void onUserWillLeaveApplication(InMobiNative ad) {}
/** * Called to notify impression has been recorded for this ad. Note:Override this method to notify
* viewable impression to the Mediation Adapter.
* * @param ad Represents the {@link InMobiNative} ad for which impression is recorded. */
public void onAdImpressed(InMobiNative ad) {}
/** * Called to notify ad was clicked. Note:Override this method to notify click to the Mediation Adapter.
* * @param ad Represents the {@link InMobiNative} ad which was clicked */
public void onAdClicked(InMobiNative ad) {}
/** * Called to notify that the ad status has changed.
* * @param nativeAd Represents the {@link InMobiNative} ad */
public void onAdStatusChanged(InMobiNative nativeAd) {} }
VideoEventListener
추상 클래스를 사용하면 기본 광고의 동영상주기 이벤트를 수신 할 수 있습니다.
/**
* A listener for receiving notifications during the lifecycle of a Native ad.
*/
public abstract class VideoEventListener {
/**
* Called to notify that the video has finished playing.
*
* @param ad Represents the {@link InMobiNative} ad
*/
public void onVideoCompleted(InMobiNative ad) {
}
/**
* Called to notify that the user has skipped video play.
*
* @param ad Represents the {@link InMobiNative} ad
*/
public void onVideoSkipped(InMobiNative ad) {
}
/**
* Called to notify when media audio state changes.
*
* @param isMuted Represents whether media is muted or not.
*/
public void onAudioStateChanged(InMobiNative inMobiNative, boolean isMuted) {
}
}
네이티브 광고를 요청하려면 위에 생성한 InMobiNative
인스턴스의 load() 메서드를 호출하십시오.
nativeAd.load();
NativeAdEventListener 추상 클래스는이 메서드의 결과를 알립니다. 광고 요청이 완료되면 onAdReceived(InMobiNative)
이벤트가 생성됩니다. 그 다음에 onAdLoadSucceeded
또는 onAdLoadFailed
이벤트가옵니다. onAdLoadFailed
이벤트가 생성되면이 이벤트에서 전달 된 InMobiAdRequestStatus
개체의 이유가 표시됩니다.
비디오 이벤트를 받으려면 위에 작성한 InMobiNative
인스턴스에 setVideoEventListener
(VideoEventListener videoEventListener
) 메소드를 사용하여 videoEventListener
nativeAd.setVideoEventListener (videoEventListener);
VideoEventListener
추상 클래스는 네이티브 광고에 대한 비디오 이벤트를 알립니다.
광고를 연결하는 데 도움이 되는 InMobiNative
의 중요한 API는 다음과 같습니다.
View getPrimaryViewOfWidth(context, convertView, parent, width)
- 지정된 너비의 뷰를 반환합니다(실제 픽셀 크기로 지정됨). 네이티브 광고의 메인 광고 콘텐츠입니다. 네이티브 배치를 생성하는 동안 인모비 대시보드에서 선택한 것과 동일한 가로 세로 비율의 뷰가 반환됩니다. 이 기본 뷰가 화면에 표시될 때 모든 광고노출 렌더링 이벤트도 자동으로 실행됩니다.
배치를 생성하는 동안 피드 레이아웃을 선택한 경우 primaryView
를 가져오는 동안 너비를 25로 지정하십시오. 그러면 AdChoices 아이콘이 표시되고 광고 렌더링 이벤트가 실행됩니다.
getPrimaryViewOfWidth(..)
4가지 매개 변수가 사용됩니다.
context
- 렌더링되는 광고의 컨텍스트입니다.convertView
- ListView의 행에 대한 전체 뷰입니다. 이 매개 변수를 사용하여 광고를 효과적으로 재활용할 수 있기 때문에 이 값을 NULL로 제공해서는 안 됩니다. 이렇게 하면 원활한 스크롤 성능을 얻을 수 있습니다.parentView
- 기본 뷰(getPrimaryViewOfWidth()
함수로 반환됨)를 배치할 부모 뷰입니다. 기본 뷰의 레이아웃 매개 변수를 결정하는 데 필요합니다.adViewWidthInPixels
- 기본 뷰가 차지할 너비(픽셀 단위)입니다.String getAdTitle()
- 광고의 문자열 제목을 반환합니다.String getAdDescription()
- 광고의 문자열 설명을 반환합니다.String getAdIconUrl()
- 광고의 아이콘 이미지 문자열 URL을 반환합니다.String getAdCtaText()
- 광고의 CTA(Click To Action) 문자열을 반환합니다.String getAdRating()
- 광고 평가를 반환합니다(옵션).String getAdLandingPageUrl()
- 광고 연결 URL을 반환합니다.boolean isAppDownload
- 주요 광고가 앱 설치 광고주의 것이면 True를 반환합니다.boolean isReady()
- True는 광고를 표시할 준비가 되었음을 의미합니다.Boolean isVideo()
- 반환 된 광고가 동영상을 포함하거나 포함하지 않으면 Boolean을 반환하고 잘못된 상태에서 호출 된 경우 null을 반환합니다.void reportAdClickAndOpenLandingPage()
- 이 함수는 클릭 이벤트를 실행하고 연결 페이지를 엽니다. 이 함수를 사용하는 동안 연결 페이지를 직접 열지 않아도 됩니다.JSONObject getCustomAdContent()
- 이 함수는 JSONObject를 반환합니다. 이 json에는 광고의 기본 뷰 주변에 사용자화된 UI를 생성하는 데 사용될 수 있는 추가 정보(설명, 이미지 URL 등)가 있습니다.네이티브 광고는 세 가지 방식으로 앱에서 연결할 수 있습니다.
예를 들면 4번째 위치에 광고를 표시합니다.
private static final int AD_POSITION = 4;
광고가 성공적으로 로드되면 콜백 onAdLoadSucceeded(InMobiNative)
를 가져옵니다. 그런 다음 이 리스너 안의 데이터 소스에 InMobiNativeAd
개체를 추가해야 합니다. 앱의 피드가 ListView
인 경우 ListView
의 샘플 구현은 다음과 같습니다.
@Override
public void onAdLoadSucceeded(@NonNull InMobiNative nativeAd) {
AdFeedItem nativeAdFeedItem = new AdFeedItem(nativeAd);
mFeedItems.add(AD_POSITION, nativeAdFeedItem);
mFeedAdapter.notifyDataSetChanged();
}
위의 단계에서 AdFeedItem
은 FeedItem
클래스의 확장 클래스입니다. 여기서 FeedItem
은 ListView
의 각 행에 적용되는 클래스입니다. 또한 mItems
는 ArrayList
로, 이 ListView
의 어댑터를 지원합니다.
지금까지 광고를 로드하여 데이터 소스에 추가했습니다. 이제 광고를 표시할 차례입니다. ListView
의 샘플 구현은 다음과 같습니다.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int itemViewType = getItemViewType(position);
if (itemViewType == VIEW_TYPE_CONTENT_FEED) {
//Your app code
} else {
//Since this content type is InMobi Ad, you need to get native Ad view
final InMobiNative nativeAd = ((AdFeedItem) feedItem).mNativeAd;
View primaryView = nativeAd.getPrimaryViewOfWidth(context, convertView, parent, parent.getWidth());
if(convertView==null){
convertView = mLayoutInflater.inflate(R.layout.ad_item, parent, false);
}
((RelativeLayout)convertView.findViewById(R.id.primaryView)).addView(primaryView);
((TextView)convertView.findViewById(R.id.title)).setText(nativeAd.getTitle());
((TextView)convertView.findViewById(R.id.desc)).setText(nativeAd.getDescription());
((TextView)convertView.findViewById(R.id.cta)).setText(nativeAd.getCtaText());
return convertView;
}
}
getItemViewType(position)
함수는 아래와 같이 콘텐츠 유형이 FEED 또는 AD인지 여부를 확인합니다.
@Override
public int getItemViewType(int position) {
FeedItem feedItem = getItem(position);
if (feedItem instanceof AdFeedItem) {
return VIEW_TYPE_INMOBI_STRAND;
}
return VIEW_TYPE_CONTENT_FEED;
}
위에서 설명한 일부 API를 사용하여 광고의 제목, 설명 및 CTA 텍스트를 표시했습니다. 마찬가지로 다른 API를 사용하여 광고의 해당 부분을 표시할 수 있습니다.
스플래시 경험은 동일한 InMobiNative 클래스를 사용하여 구현할 수 있습니다. 그러나 유의해야 할 몇 가지 사항이 있습니다.
InMobiNativeAd.isReady()
함수를 사용하여 광고를 표시할 준비가 되었는지 확인해야 합니다. 때로는 주 스레드가 점유된 상태일 수 있으므로 onAdLoadSucceeded
을 제때 수신하지 못할 수 있습니다. 그러므로 차단 기간이 경과된 직후에 광고가 준비되었는지 사전에 확인하는 것이 좋습니다.onAdFullScreenDisplayed
에서 이를 확인하고 이 콜백이 실행되면 광고를 닫지 않을 수 있습니다.샘플 구현은 다음과 같습니다.
@Override
public void onAdFullScreenDisplayed(InMobiNative nativeAd) {
isSecondScreenDisplayed = YES;
}
public void dismissAd() {
if(isSecondScreenDisplayed){
Log.d(TAG, "DO NOT DISMISS THE AD WHILE THE SCREEN IS BEING DISPLAYED");
}
else
{
splashAdView.setVisibility(View.GONE);
nativeAd.destroy();
}
}
프리 롤 비디오 경험은 동일한 InMobiNative
클래스를 사용하여 구현할 수 있습니다. videoEventListener
를 등록해야하며 다음 콜백에서 광고보기를 닫아야합니다.
@Override
public void onVideoCompleted(@NonNull InMobiNative nativeAd) {
Log.d(TAG, "Media playback complete " + mPosition);
}
프리롤 광고는 다음과 같이 닫을 수 있습니다.
public void dismissAd() {
splashAdView.setVisibility(View.GONE);
nativeAd.destroy();
}
사용자에 대한 광고 노출을 최적화하려면 다양한 시점에 광고를 새로 고침해야 합니다. 광고를 새로 고침하려면 정확한 순서로 다음 함수를 호출해야 합니다.
참고: 새로 고치기 전에 adFeedItem
개체를 데이터 소스에서 제거하고 삭제해야 합니다. 그런 후 다음 코드와 같이 새 개체를 생성하고 load를 호출해야 합니다.
private void refreshAd() {
Iterator<feeditems> feedItemIterator = mFeedItems.iterator();
while (feedItemIterator.hasNext()) {
final FeedItem feedItem = feedItemIterator.next();
if (feedItem instanceof AdFeedItem) {
feedItemIterator.remove();
}
}
// refresh feed
mFeedAdapter.notifyDataSetChanged();
// destroy InMobiNative object
inMobiNativeAd.destroy();
// create InMobiNative object again
InMobiNative inMobiNativeAd = new InMobiNative(
<<activity instance="">>,
<<your id="" placement="">>,
<<inmobinativeadlistener 1="" created="" in="" step="">>);
inMobiNativeAd.load();
}
</inmobinativeadlistener></your></activity></feeditems>
InMobiNative
의 모든 인스턴스는 정확히 하나의 광고를 나타냅니다.InMobiNative
의 인스턴스를 생성합니다.onCreate()
Activity 콜백 또는 onActivityCreated()
Fragment 콜백에서 InMobiNative
인스턴스를 생성해야 합니다.onDestroy()
Activity 콜백 또는 OnDestroyView()
Fragment 콜백에서 InMobiNative
인스턴스를 삭제해야 합니다.InMobiNativeAd
개체는 데이터 소스에서 제거한 후에는 항상 삭제해야 합니다. InMobiNativeAd
가 삭제되면 광고 뷰와의 모든 사용자 상호 작용이 존중되지 않습니다. 따라서 InMobiNativeAd
를 삭제하기 전에 광고 뷰를 삭제해야 합니다.InMobiNativeAd
인스턴스를 호스팅하는 구성 요소(이 경우 해당 활동)가 destroy () API를 사용하여 삭제되면 모든 InMobiNativeAd
인스턴스도 삭제해야 합니다.클릭 보고 이외에 인모비 SDK에서 연결 URL을 열려면 네이티브 광고 인스턴스에서 reportAdClickAndOpenLandingPage()
메서드를 호출하십시오.
nativeAd.reportAdClickAndOpenLandingPage();
중국에는 Google Play가 없기 때문에 InMobi Downloader라는 도구를 통해 APK를 직접 다운로드할 수 있습니다. 이 기능은 InMobi Android SDK의 중국 버전에서만 사용할 수 있습니다. InMobi Downloader는 광고주 앱 다운로드 및 설치를 관리합니다. 게시자와 사용자에게 맞춤식 환경을 제공하면서 귀속을 활성화하기 위해 이벤트를 광고주에게 전달합니다.
다음과 같이 매니페스트 파일에 새 서비스를 추가해야 합니다.
<service android:enabled="true" android:name="com.inmobi.ads.ApkDownloader$ApkDownloadService">
</service>
다운로더는 다음과 같이 외부 저장소에 쓸 수 있는 권한을 필요로 합니다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
파일 공유를 위한 설계가 변경되었으므로 Android N 이후부터 새로운 변화가 필요합니다. 다른 애플리케이션은 앱의 파일에 액세스할 수 없으므로 우리가 다운로드한 APK 파일을 설치하려면 PackageInstaller 앱이 필요합니다. 여기를 참조하십시오.
다음을 추가합니다. res/xml/provider.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path=".">
</external-path></paths>
AndroidManifest.xml
에서 다음을 추가합니다.
<provider android:authorities="{appPackageName}.fileprovider" android:exported="false" android:granturipermissions="true" android:name="android.support.v4.content.FileProvider">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider" />
</provider>
Android Oreo(8 이상)의 경우 AndroidManifest.xml
에 다음을 추가합니다.
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES">
</uses-permission>
다음과 같이 InMobi 네이티브 광고 개체를 생성하는 동안 다운로더를 활성화해야 합니다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
InMobiNative nativeAd = new InMobiNative(
<<activity instance="">>,
<<your id="" placement="">>,
<<inmobinativeadlistener>>);
nativeAd.setDownloaderEnabled(true);
nativeAd.load();
//Your App code here
}
</inmobinativeadlistener></your></activity>
InMobi Downloader는 onAdStatusChanged()
라는 리스너 메소드에서 콜백을 제공합니다.. 이것은 다운로더 상태가 바뀔 때마다 실행됩니다. 다운로더 상태는 getDownloadStatus()
메소드를 통해 액세스할 수 있습니다. 가능한 상태 및 해당 상태 메시지는 다음과 같습니다.
STATE_UNINITIALIZED = -2;
STATE_INITIALIZING = -1;
STATE_DOWNLOADING = 0;
STATE_DOWNLOADED = 1;
STATE_ERROR = 2;
다운로더가 APK( STATE_DOWNLOADING = 0
)를 다운로드하는 동안 getDownloadProgress()
메서드를 사용하여 다운로드 진행률에 액세스할 수 있습니다. 이 진행 상황을 사용하여 사용자에게 진행률 표시줄을 표시할 수 있습니다.
참고: STATE_DOWNLOADING = 0
인 상태에서 다운로드 비율이 변경될 때마다 onAdStatusChanged()
가 실행된다는 점에 유의하십시오. 이 샘플 구현은 아래와 같습니다.
public void onAdStatusChanged(@NonNull InMobiNative nativeAd) {
Log.d("InMobi Downloader status is", "value: " + nativeAd.getDownloader().getDownloadStatus());
if (nativeAd.getDownloader().getDownloadStatus() == InMobiNative.Downloader.STATE_DOWNLOADING) {
progressBar.setProgress(nativeAd.getDownloader().getDownloadProgress());
}
}
인모비의 SDK는 네이티브 배치에 대해 HTML과 네이티브 유닛을 모두 실행할 수 있습니다. 기본 배치 위치에 예약된 자산에 따라 다음과 같은 크기의 광고를 실행할 수 있습니다.
이 기능을 설정하려면 원하는 백필 크기로 담당 파트너 관리자에게 문의해야 합니다. 또한 코드에서 다음과 같이 처리해야 합니다.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int itemViewType = getItemViewType(position);
if (itemViewType == VIEW_TYPE_CONTENT_FEED) {
//Your app code
}
else {
//Since this content type is InMobi Ad, you need to get native Ad view
final InMobiNative nativeAd = ((AdFeedItem) feedItem).mNativeAd;
//Render according to the type of response served
if(currentNativeAd.getCustomAdContent().has("isHTMLResponse")){
View primaryView = nativeAd.getPrimaryViewOfWidth(context, convertView, parent, Math.round(getResources().getDisplayMetrics().density*250));
if(convertView==null){
convertView = mLayoutInflater.inflate(R.layout.ad_item, parent, false);
}
((RelativeLayout)convertView.findViewById(R.id.primaryView)).addView(primaryView);
return convertView;
}
else {
View primaryView = nativeAd.getPrimaryViewOfWidth(context, convertView, parent, parent.getWidth());
if(convertView==null){
convertView = mLayoutInflater.inflate(R.layout.ad_item, parent, false);
}
((RelativeLayout)convertView.findViewById(R.id.primaryView)).addView(primaryView);
((TextView)convertView.findViewById(R.id.title)).setText(nativeAd.getTitle());
((TextView)convertView.findViewById(R.id.desc)).setText(nativeAd.getDescription());
((TextView)convertView.findViewById(R.id.cta)).setText(nativeAd.getCtaText());
return convertView;
}
}
}
참고:
isHTMLResponse
라는 문자열이 포함됩니다.진행되고 있는 모든 광고 품질 검사를 피해나와, 관련성이없고 불쾌한 소재 또는 사용자에게 혼란을주는 광고를 보여줌으로써 앱의 사용자 경험을 손상시키는 불량 광고주가 가끔 있습니다. 이러한 상황을 극복하기 위해 광고 인스턴스의 creativeID를 검색하고 InMobi 담당자에게 암호화 된 creativeID를보고 할 수 있습니다.
mNativeAd.getCreativeId()// mNativeAd
는 예제 인스턴스입니다.
Tools(도구) - Diagnostics(진단)로 이동하여 테스트 모드를 Global ON(전역 켜기) 또는 Selective ON(선택 켜기)으로 전환합니다.
광고 단위를 처음으로 통합하는 경우 | Test Mode(테스트 모드)를 Global ON(전역 켜기)으로 설정합니다. |
한 세트의 장치에 대한 테스트 트래픽을 선택적으로 켜려는 경우 이 특정 광고 단위에 SDK의 이전 버전이 이미 통합되어 있으므로 테스트를 일부 장치에만 제한해야 합니다. |
Test Mode(테스트 모드)를 Selective ON(선택 켜기)으로 설정합니다.
장치 섹션에서:
이미 장치가 구성되어 있으면 장치를 선택하고 테스트 모드를 사용할 수 있습니다. |
참고: 게시하기 전에 반드시 테스트 모드를 해제해야 합니다. 그렇지 않으면 앱에서 수익을 창출하지 못합니다.
이제는 모두 테스트 광고를 가져올 준비가 되었습니다.
장치 ID 가져오기
장치 ID는 GPID(Google Play Advertising ID)입니다. 장치 ID를 얻으려면 디버그 로그를 콘솔에 출력하도록 SDK를 구성하십시오. 이렇게 하려면 네이티브 광고를 통합하는 Activity에 다음 행을 추가하십시오.
InMobiSdk.setLogLevel(LogLevel.DEBUG);
이제 장치 ID가 다음과 같이 DDMS 콘솔의 디버그 로그에 출력됩니다.
1단계에서 설명한 대로 디버그 로그를 활성화하면 SDK가 초기화 및 광고 로드 수명 주기에 대한 유용한 정보를 제공하는 키 로그를 DDMS 콘솔에 출력합니다.
다음 표에는 이러한 로그가 캡처되어 있습니다.
SDK 초기화
시나리오 | 로그 수준 | 로그 메시지 |
게시자가 null 또는 빈 계정 ID를 전달함 | 오류 | Account id cannot be null or empty. Please provide a valid Account id. (계정 ID는 null이거나 비워 둘 수 없습니다. 올바른 계정 ID를 입력하십시오.) |
게시자가 올바른 계정 ID를 전달함 | 디버그 | InMobi SDK initialized with account id: <account id="" /> |
게시자가 잘못된 계정 ID를 전달함 | 오류 | Invalid account id passed to init. Please provide a valid account id. (init에 잘못된 계정 ID가 전달되었습니다. 올바른 계정 ID를 입력하십시오.) |
게시자가 필수 권한을 부여하지 않음 | 디버그 | Please grant the mandatory permissions : INTERNET & ACCESS_NETWORK_STATE, SDK could not be initialized. (다음의 필수 권한을 부여하십시오. INTERNET & ACCESS_NETWORK_STATE, SDK를 초기화하지 못했습니다.) |
SDK에 권한이 부여됨 | 디버그 | Permissions granted to the SDK are : <list granted="" of="" permissions="" /> (SDK에 다음 권한이 부여됨: <부여된 권한 목록>) <list granted="" of="" permissions="" /> |
SDK의 최신 버전이 제공됨 | 디버그 | A newer version (ver. 6.0.0) of the InMobi SDK is available! You are currently on an older version (ver. 5.3.1). Download the latest InMobi SDK from http://www.inmobi.com/products/sdk/#downloads (InMobi SDK의 최신 버전(버전 6.0.0)을 사용할 수 있습니다! 현재 이전 버전(버전 5.3.1)입니다. 최신 인모비 SDK는 http://www.inmobi.com/products/sdk/#downloads에서 다운로드하십시오.) |
일반적인 광고 수명 주기 메시지
시나리오 | 로그 수준 | 로그 메시지 |
네트워크를 사용할 수 없을 때 광고가 요청됨 | 오류 | Network not reachable currently. Please try again. (현재 네트워크에 연결할 수 없습니다. 다시 시도하십시오.) |
광고 상태가 로드 중 또는 사용 가능일 때 광고가 요청됨 | 오류 | An ad load is already in progress. Please wait for the load to complete before requesting for another ad (Placement id : <placement id="" /> ). (광고 로드가 이미 진행 중입니다. 다른 광고를 요청하기 전에 로드가 완료되기를 기다리십시오(배치 ID: <배치 id>). |
게시자 장치 ID | 디버그 | Publisher device id is <device id="" /> (게시자 장치 ID가 <장치 Id>입니다.) |
네이티브 광고 통합 메시지
시나리오 | 로그 수준 | 로그 메시지 |
게시자가 null 컨텍스트를 제공함 | 오류 | Unable to create InMobiNative ad with null Activity object (null Activity 개체로 InMobiNative 광고를 생성할 수 없습니다.) |
게시자가 SDK를 초기화하지 않고 네이티브 광고를 생성함 | 오류 | Please initialize the SDK before creating a Native ad (네이티브 광고를 생성하기 전에 SDK를 초기화하십시오.) |
게시자가 올바른 배치 ID로 네이티브 광고를 생성함 | 오류 | NA |
게시자가 제공하는 다음 항목이 null임 - InMobiNativeAdListenerobject |
오류 | Listener supplied is null,the Native Ad cannot be created (리스너가 null을 제공했습니다. 네이티브 광고를 생성할 수 없습니다.) |
게시자가 네이티브에서 load를 호출함 | 디버그 | Fetching a Native ad for placement id: <placement id="" /> (<배치 id>에 대한 네이티브 광고를 가져오는 중) |
광고를 서버에서 성공적으로 가져옴 | 디버그 | Native ad successfully fetched for placement id: <placement id="" /> (<배치 id>에 대한 네이티브 광고를 성공적으로 가져왔습니다.) |
광고 가져오기 실패 | 오류 | Failed to fetch Native ad for placement id : <placement id="" /> with error : <status code="" message="" /> (<배치 id>에 대한 네이티브 광고를 가져오지 못했습니다. 오류 <상태 코드/메시지> 발생) |
AdView가 객체화(inflate)될 때 | 디버그 | Ad markup loaded into the container will be inflated into a View (컨테이너에 로드된 광고 마크업이 뷰에 객체화됩니다.) |
잠금 화면 통합의 경우 광고를 미리 가져와 특정 활동에 연결하지 않을 수 있습니다. 인모비 SDK를 사용하면 Application
하위 클래스에서 유지 관리할 수있는 기본 광고 단위를 생성할 수 있습니다. 그러면 앱에서 수익 창출 이벤트가 발생하는 잠금 화면 Activity의 네이티브 광고 단위를 사용할 수 있습니다.
InMobiAdRequest
를 생성합니다.아래에 설명된 대로 NativeAdRequestListener
인터페이스에 대한 구현을 제공하여 InMobiNative.requestAd(Context, InMobiAdRequest, NativeAdRequestListener)
를 호출합니다.
public class YourApplication extends Application {
...
private InMobiAdRequest mInMobiAdRequest;
private NativeAdRequestListener mListener;
Private InMobiNative mNativeAd;
...
public void onCreate() {
mInMobiAdRequest = new InMobiAdRequest.Builder(PlacementId.YOUR_PLACEMENT_ID)
.build();
mListener = new InMobiNative.NativeAdRequestListener() {
@Override
public void onAdRequestCompleted(InMobiAdRequestStatus status, InMobiNative nativeAd) {
if (status.getStatusCode() == NO_ERROR && nativeAd != null) {
mNativeAd = nativeAd;
}
}
};
InMobiNative.requestAd(this, mInMobiAdRequest, mListener);
...
}
public InMobiNative getNativeAd() {
return mNativeAd;
}
}
getNativeAd()
메서드를 호출하여 이 광고 단위의 인스턴스를 가져올 수 있습니다.
showOnLockScreen(LockScreenListener lockScreenListener)
를 사용하여 잠금 화면 활동에 대한 이 네이티브 인스턴스를 등록합니다. 이 리스너는 사용자가 광고와 상호 작용하자마자 호출되며 이 상호 작용을 완료하려면 잠금 화면을 닫아야 합니다.
* 이 메서드는 load(Context) 또는 load()보다 먼저 호출되어야 합니다.
load(Context)
를 호출하여 광고 마크업을 로드하고 수익 창출 이벤트가 발생할 위치에 Activity를 제공합니다.getAdContent()
를 호출하여 광고 자산을 요청합니다.
이 메서드를 호출하면 사용자가 잠금 화면에서 광고 뷰와 상호 작용할 때 발생하는 활동을 수행할 수 있습니다. 이 상호 작용은 com.inmobi.ads.InMobiNative.LockScreenListener#onActionRequired(InMobiNative)
에 의해 보고됩니다. 이 메서드는 android.content.Intent.ACTION_USER_PRESENT
브로드캐스트 후 앱에서 호출해야 합니다.