Skip to content

AR ads integration

pineglobal edited this page Jan 7, 2019 · 14 revisions

AR 광고 통합

개요

AR(증강 현실)은 물리적인 세계에 직접적으로 디지털 콘텐츠를 통합하여, 상호작용할 수 있는 온전한 몰입형 경험을 플레이어에게 제공합니다. 이를 통해 플레이어는 기억에 남을 색다른 순간을 경험하는 동시에 자신만의 이야기를 만들어 가며 강력한 주체감을 느낄 수 있습니다. 아래 세부 단계를 따라 프로젝트에 AR 광고를 통합할 수 있습니다.

  1. 에셋 스토어에서 최신 SDK를 다운로드 및 설치합니다.
  2. 기기 카메라 허용 설정에 액세스할 수 있도록 프로젝트를 구성합니다.
  3. AR 콘텐츠를 받아서 표시할 수 있도록 플레이스먼트를 생성하고 관련 스크립트도 생성합니다.
  4. 유니티 광고 팀에 문의하여 프로젝트의 AR 광고를 활성화합니다.

요구 사항

Unity Project에 AR 광고를 구현하려면 다음의 요구 사항을 충족해야 합니다.

경고: 13세 미만 어린이를 대상으로 하는 게임에서는 현재 AR 광고를 사용할 수 없습니다.

Unity Project 구성

이 섹션에서는 Unity 통합을 위해 프로젝트를 설정하는 방법을 자세히 소개합니다. 게임에서 이미 AR 기능을 사용하고 있다면 바로 구현 섹션으로 이동할 수 있습니다.

카메라 권한 설정

AR 광고를 사용하려면 기기 카메라 액세스 권한이 필요합니다. 구성이 완료되면 Unity Ads SDK가 이 권한 쿼리를 핸들링할 수 있습니다.

iOS

  1. Unity Editor에서 Edit > Project** Settings > Player**를 선택합니다.
  2. 플랫폼 탭 메뉴에서 iOS 아이콘을 선택하고 Other Settings 섹션으로 스크롤합니다.
  3. Camera Usage Description 필드를 찾은 다음, 이 게임에서 기기 카메라에 액세스하는 이유를 설명하는 지문을 입력합니다. 유니티에서는 “증강 현실 광고 표시 목적”과 같이 입력할 것을 권장합니다. 이 설정에 대한 자세한 내용은 iOS 플레이어 설정 참고 문서를 참조하세요.

Android

  1. Google AR 코어 라이브러리를 다운로드하는 방법은 다음과 같습니다.

    • 여기에서 Maven 저장소에 액세스합니다.
    • 가장 최신 버전을 클릭합니다.
    • Files에 있는 목록에서 .aar 버튼을 선택합니다.
  2. 프로젝트의 Assets/Plugins/Android 디렉토리로 .aar 파일을 옮깁니다.

  3. 유니티에 문의하여, AR 광고가 프로젝트에서 작동되기 위해 필요한 수정된 Android 매니페스트(AndroidManifest.xml)와 Android Manifes를 로딩할 수 있는 project.properties 파일을 요청합니다.

  4. 제공된 UnityAdsARConfigManifest.zip 압축 파일을 푼 다음 폴더를 프로젝트의 Assets/Plugins/Android 디렉토리로 옮깁니다.

중요: Google은 카메라 권한을 명시적으로 허용해 줄 것을 최종 사용자에게 요구합니다. Unity AR 광고를 지원하는 Android 게임은 기본값으로 게임 시작 시 해당 권한을 요청합니다. 권한에 대한 쿼리를 미루고 싶다면 Android Manifest에서 unityplayer.SkipPermissionsDialog 값을 true로 변경하면 됩니다. 그러나 이 설정은 카메라 권한뿐 아니라 게임의 모든 권한에 관한 쿼리를 제어합니다. 카메라 권한에 관한 쿼리는 Unity Ads에서 핸들링하겠지만, 해당 컴포턴트에 액세스하기 전에 다른 컴포넌트에서 마이크 액세스 등의 다른 권한 요청이 있었는지도 확인해야 합니다. 프로젝트 플러그인 중에서 이를 지원하지 않는 것이 있다면 크래시가 일어날 수 있습니다. 유니티는 이 옵션을 활성화하기 전에 구현 사항을 완전하게 테스트해 볼 것을 권장합니다.

비Unity 게임 구성

이 섹션에서는 iOS 또는 Android 통합을 위해 게임을 설정하는 방법을 자세히 소개합니다. 게임에서 이미 AR 기능을 사용하고 있다면 바로 구현 섹션으로 이동할 수 있습니다.

카메라 권한 설정

AR 광고를 사용하려면 기기 카메라 액세스 권한이 필요합니다. 구성이 완료되면 Unity Ads SDK가 이 권한 쿼리를 핸들링할 수 있습니다.

iOS

게임의 프로퍼티 목록(Info.plist)에 Privacy - Camera Usage Description을 추가하십시오. 예를 들어, 문자열 값을 “AR 광고가 카메라에 액세스하려 합니다” 등으로 설정할 수 있습니다.

Android

  1. 게임의 Android 매니페스트(UnityAdsARConfigManifest.zip 에 포함된 AndroidManifest.xml 파일 참조)에 다음을 추가합니다.
// Manifest level
<uses-permission android:name="android.permission.CAMERA" />
// Application level
<meta-data android:name="com.google.ar.core" android:value="optional" />
  1. 게임의 빌드 구성 파일(build.gradle)에 ARCore 라이브러리를 종속 관계로 추가합니다.
dependencies {
    ...
    implementation 'com.google.ar:core:1.4.0'
}

빌드 중 오류가 발생하면 프로젝트의 빌드 구성 파일이 Google의 Maven 저장소를 참조하는지 확인합니다.

allprojects {
    repositories {
        google ()}
}

구현

전용 플레이스먼트 구현

AR 콘텐츠 전용 플레이스먼트를 구현하십시오. Dashboard는 현재 AR 콘텐츠 활성화를 지원하지 않습니다. 대신에 쉽게 식별할 수 있는 플레이스먼트 ID(‘arPlacement’ 권장)를 사용하여 다른 콘텐츠에는 사용하지 않을 플레이스먼트를 구성할 수 있습니다. 마지막 설정 단계에서는 유니티에 문의하여 해당 플레이스먼트의 AR 콘텐츠를 사용할 수 있도록 요청하십시오.

플레이스먼트 스크립트 수정

전용 AR 플레이스먼트 스크립트에서, 플레이스먼트 로직을 다음과 같이 구성하십시오.

  • 전용 AR 플레이스먼트를 채우는 데 이용할 수 있는 AR 콘텐츠가 있는지 확인합니다.
    • 이용할 수 있는 경우 AR 플레이스먼트에서 콘텐츠를 표시합니다.
    • 이용할 수 없는 경우 다른 플레이스먼트에서 광고나 Promo 콘텐츠를 표시합니다.

다음 코드 예제를 참조하세요.

Unity 개발자(C#)

다음 예제에서는 Monetization API(권장)를 사용하여 PlacementContent 오브젝트를 가져오고 AR 광고를 표시합니다.

using UnityEngine;
using UnityEngine.Monetization;

public class ARTest : MonoBehaviour {
    private PlacementContent MyPlacementContent;

    void Start () {
        Monetization.Initialize ("1234567", false);
        Monetization.onPlacementContentReady += PlacementContentReady;
    }

    public void ShowAd () {
        if (MyPlacementContent != null) {
            ShowAdPlacementContent ad = MyPlacementContent as ShowAdPlacementContent;
            ad.Show (myAdCallbackHandler); // See note on callback handlers, below
        }
    }

    public void PlacementContentReady (object sender, PlacementContentReadyEventArgs e) {
        Debug.LogFormat ("PlacementID: {0}, Object: {1}", e.placementId, e.placementContent.GetType ());
        if (e.placementId == "arPlacement") {
            MyPlacementContent = e.placementContent;
        }
    }
}

참고: 콜백 핸들러 구현에 대한 추가정보는 c# 광고 통합 문서를 참고해주세요.

아니면 다음의 예제처럼 Advertisement API를 사용하여 AR 광고를 표시할 수도 있습니다.

if (Advertisement.IsReady ("arPlacement")) {
   ShowOptions so = new ShowOptions ();
   so.resultCallback = MyARAdCallbackHandler;
   Advertisement.Show ("arPlacement", so);
} else if (Advertisement.IsReady ()) {
   ShowOptions so = new ShowOptions ();
   so.resultCallback = MyAdCallbackHandler; 
   // Replace MyAdCallbackHandler with the one you are already using
   Advertisement.Show (so);
}

참고: 스크립트가 결정하는 플레이스먼트가 이미 여러 개라면 전용 AR 플레이스먼트 핸들링이 먼저 실행되도록 해야 합니다.

게임을 다시 빌드하십시오. AR 콘텐츠를 활성화하면 이제 게임에서 AR 콘텐츠를 받을 준비가 완료됩니다.

iOS 개발자(Objective-C)

다음 예제에서는 UnityMonetization API(권장)를 사용하여 UMONPlacementContent 오브젝트를 가져오고 AR 광고를 표시합니다. 코드는 UMONShowAdDelegate 델리게이트의 델리게이트 클래스로서 구현해야 합니다.

-(void) showAdIfReady: {
    UMONShowAdPlacementContent * arPlacement = (UMONShowAdPlacementContent *) [UnityMonetization getPlacementContent: @"arPlacement"];
    if ([arPlacement isReady]) {
        [arPlacement show: self withDelegate: self];
    } else {
        UMONShowAdPlacementContent * interstitialPlacement = (UMONShowAdPlacementContent *) [UnityMonetization getPlacementContent: @"video"];
        if ([interstitialPlacement isReady]) {
            [interstitialPlacement show: self withDelegate: self];
        }
    }
}

아니면 다음의 예제처럼 UnityAds API를 사용하여 AR 광고를 표시할 수도 있습니다.

if ([UnityAds isReady: @"arPlacement"]) {
    [UnityAds show: self placementId: @"arPlacement"];
} else if ([UnityAds isReady: @"video"]) {
    [UnityAds show: self placementId: @"video"];
}

참고: 스크립트가 결정하는 플레이스먼트가 이미 여러 개라면 전용 AR 플레이스먼트 핸들링이 먼저 실행되도록 해야 합니다.

게임을 다시 빌드하십시오. AR 콘텐츠를 활성화하면 이제 게임에서 AR 콘텐츠를 받을 준비가 완료됩니다.

Android 개발자(Java)

다음 예제는 UnityMonetization API(권장)를 사용하여 PlacementContent 오브젝트를 가져오고 AR 광고를 표시합니다.

protected void showAdIfReady() {
    PlacementContent arPlacement = UnityMonetization.getPlacementContent ("arPlacement");

    if (arPlacement instanceof ShowAdPlacementContent && arPlacement.isReady ()) {
        ((ShowAdPlacementContent) arPlacement).show (thisActivity, new ShowAdListenerAdapter () {
            @Override
            public void onAdStarted (String placementId) {
                Log.d ("UnityAds", "Starting AR ad!");
            }

            @Override
            public void onAdFinished (String placementId, UnityAds.FinishState withState) {
                Log.d ("UnityAds", "Finished an AR ad with state - " + withState);
            }
        });
    } else {
        PlacementContent interstitialPlacement = UnityMonetization.getPlacementContent ("video");


        if (interstitialPlacement instanceof ShowAdPlacementContent && interstitialPlacement.isReady ()) {
            ((ShowAdPlacementContent) interstitialPlacement).show (thisActivity, new ShowAdListenerAdapter () {
                @Override
                public void onAdStarted (String placementId) {
                    Log.d ("UnityAds", "Starting an interstitial ad!");
                }

                @Override
                public void onAdFinished (String placementId, UnityAds.FinishState withState) {
                    Log.d ("UnityAds", "Finished an interstitial ad with state - " + withState);
                }
            });
        }
    }
}

아니면 다음의 예제처럼 UnityAds API를 사용하여 AR 광고를 표시할 수도 있습니다.

String arPlacementId = "arPlacement";
String interstitialPlacementId = "video";

if (UnityAds.isReady (arPlacementId)) {
    UnityAds.show (self, arPlacementId);
} else if (UnityAds.isReady (interstitialPlacementId)) { 
    UnityAds.show (self, interstitialPlacementId);
}

참고: 스크립트가 결정하는 플레이스먼트가 이미 여러 개라면 전용 AR 플레이스먼트 핸들링이 먼저 실행되도록 해야 합니다.

게임을 다시 빌드하십시오. AR 콘텐츠를 활성화하면 이제 게임에서 AR 콘텐츠를 받을 준비가 완료됩니다.

(선택 사항) 표면 추적 조정

AR 광고 콘텐츠를 이용하는 동안 사용자의 행동에 따라 게임의 표면 추적이 꺼질 수 있습니다. 이 경우 오브젝트가 공중이나 표면 내부로 뜰 수 있습니다. 따라서 유니티는 AR 광고를 위한 커스텀 핸들러를 추가할 것을 권장합니다. C#의 경우 예를 들면 다음과 같습니다.

void MyARAdCallbackHandler (ShowResult result) {
   Debug.Log ("AR ad successfully finished with result " + result.ToString ());
   // Implement any custom logic related to returning from an AR ad.
}

유니티를 통해 AR 콘텐츠 활성화

Unity Ads에 다음의 정보를 제공하면서 AR 콘텐츠 활성화를 문의하십시오.

  • 프로젝트 ID
  • AR 콘텐츠 표시를 위한 전용 플레이스먼트의 ID

테스트

참고로 AR 콘텐츠는 유니티 서버에서 직접 로드되기 때문에 AR 광고는 테스트 모드가 아닌 프로덕션 모드에서만 작동합니다. 통합 테스트용 AR 캠페인은 AR 콘텐츠의 최종 품질을 반영하지 못할 수 있습니다.

테스트 시, 다음의 게임 ID와 플레이스먼트 ID 조합을 사용할 수 있습니다.

플랫폼 Game ID 플레이스먼트 ID
iOS 1767349 arPlacement
Android 2085042 arPlacement

게임을 퍼블리시하기 전에 테스트 게임 ID와 플레이스먼트 ID를 실제 프로덕션 ID로 반드시 변경해야 합니다.

Clone this wiki locally