맞춤 이벤트를 사용하면 Ad Manager 폭포식 구조 미디에이션이 아닌 제3자 광고 네트워크에 대한 폭포식 구조 미디에이션을 추가하기 위한 지원되는 광고 네트워크 중에서 선택합니다. 이 가이드에서는 Android용으로 제작된 기존 맞춤 이벤트를 사용하는 방법과 실행할 수 있습니다
기본 요건
시작하기를 모두 읽어보세요. Unity 앱에 이미 Google 모바일 광고 Unity 플러그인이 있어야 합니다.
맞춤 이벤트 어댑터는 이미 Android 및 iOS용으로 구축되었습니다. 커스텀 모델을 이벤트 어댑터에 관한 자세한 내용은 Android 및 iOS
맞춤 이벤트 정의
맞춤 이벤트가 미디에이션에 참여하려면 맞춤 이벤트가 다음 조건을 충족해야 합니다. 웹 인터페이스에 Ad Manager 정의되어야 합니다. 맞춤 이벤트를 Android 및 iOS 미디에이션 그룹
매개변수 입력 방법 | |
---|---|
클래스 이름 (iOS) |
iOS의 경우 맞춤 이벤트를 구현하는 클래스의 이름을 입력합니다. 클래스가 Swift로 구현된 경우 클래스 이름 앞에
앱 / 프레임워크 모듈의 이름 (예:
프로젝트에 대상이 여러 개 있거나
프로젝트 이름이 대상 이름과 다른 경우 대상 이름을 사용하면
다음과 같이 표시됩니다. |
클래스 이름 (Android) | Android의 경우 Class Name 에 제공하는 값이 다음과 같아야 합니다.
Android의 정규화된 클래스 이름 (예: com.google.ads.mediation.sample.customevent.SampleCustomEvent )입니다.
|
라벨 | 이벤트의 고유한 이름을 입력합니다. |
매개변수 | 맞춤 이벤트에 문자열 인수를 전달하려는 경우(예: 광고 단위 ID입니다. |
맞춤 이벤트 라이브러리 가져오기
맞춤 이벤트가 작동하려면 추가 라이브러리가 필요할 수 있음 있습니다. 예를 들어 다음 라이브러리를 포함해야 할 수 있습니다.
- Android 서드 파티 SDK
- Android 서드 파티 맞춤 이벤트
- iOS 서드 파티 광고 SDK
- iOS 서드 파티 맞춤 이벤트
라이브러리 유형
Android 또는 iOS 코드를 Unity 프로젝트로 가져오는 방법에는 여러 가지가 있습니다. 포함:
- 외부 종속 항목을 사용하여 사전 빌드된 Android 또는 iOS 아티팩트 가져오기 Unity 관리자
- AAR 플러그인 및 Android 라이브러리 가져오기
- Java 및 Kotlin 소스 파일 가져오기
- iOS 소스 파일 및 정적 라이브러리 가져오기
사용하는 라이브러리의 패키징 방식에 따라 가져오기 전략을 세울 수 있습니다. 각 옵션에 대해서는 뒷부분에서 자세히 설명합니다.
(권장) 사전 빌드된 Android 또는 iOS 아티팩트 가져오기
Unity용 종속 항목 관리자 이 플러그인은 GoogleMobileAds 플러그인과 함께 포함되어 있습니다.
기존 아티팩트를 가져오려면 구성 파일을 만들어 가져올 수 있습니다 파일 이름과 경로 요구사항은 다음과 같습니다.
- 파일은
/Editor/
폴더에 있어야 합니다. - 파일 이름은
Dependencies.xml
로 끝나야 합니다.
예를 들어 가상의 광고 네트워크에 대한 맞춤 이벤트 어댑터를 가져오는 경우
이름이 AdPub
인 경우 파일을 만듭니다.
Assets/AdPub/Editor/AdPubDependencies.xml
다음으로, AdPubDependencies.xml
파일 내에 종속 항목을 정의합니다. 규칙
가져오기 구성은
Unity용 외부 종속 항목 관리자
시작됨을 선택합니다. 이
다음 코드 스니펫에는 Android 및 iOS SDK와 맞춤 이벤트가 포함되어 있습니다.
가상의 'AdPub' 라이브러리를 위한 광고 네트워크
Assets/AdPub/Editor/AdPubDependencies.xml
<dependencies>
<androidPackages>
<androidPackage spec="com.adpub.android:adpub-sdk:1.0.0" />
<androidPackage spec="com.adpub.android:adpub-custom-event:1.0.0">
<repositories>
<repository>https://repo.maven.apache.org/maven2/</repository>
<repository>https://dl.google.com/dl/android/maven2/</repository>
</repositories>
</androidPackage>
</androidPackages>
<iosPods>
<iosPod name="AdPubSDK" version="1.0" />
<iosPod name="AdPubCustomEvent" version="1.0">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>
맞춤 이벤트 아티팩트에 이미 필수 광고에 대한 종속 항목이 있는 경우 네트워크 SDK를 사용한다면 SDK 종속 항목을 명시적으로 정의할 필요가 없습니다. 예시
외부 종속 항목 관리자는 구성 변경을 자동으로 모니터링 종속 항목을 해결합니다 또한 실행할 수 있습니다
Assets > External Dependency Manager > Android Resolver > Force Resolve
AAR 플러그인 및 Android 라이브러리 가져오기
Unity는 Android 라이브러리 프로젝트뿐만 아니라 *.aar
파일 가져오기를 지원합니다. 만약
자세한 내용은 AAR 플러그인 및 Android
라이브러리를 참조하세요.
포함하는 방법을 설명합니다.
Java 및 Kotlin 소스 파일 가져오기
Android 맞춤 이벤트 코드가
컴파일되지 않은 *.java
또는 *.kt
파일의 경우 Java 또는 Kotlin 소스 파일을 사용할 수 있습니다.
플러그인으로 설치할 수 있습니다.
iOS 소스 파일 및 정적 라이브러리 가져오기
Unity는 *.framework
아티팩트, *.h
, *.m
소스 파일을 지원합니다. 가져오는 중
iOS 아티팩트 및 소스 파일에 대한 설명은 Unity의 네이티브 광고 코드 생성 가이드
플러그인을 사용합니다.
광고 검사기로 맞춤 이벤트 테스트하기
광고 검사기를 사용하면 맞춤 이벤트를 애플리케이션으로 올바르게 가져왔는지 확인하세요. 광고 검사기는 동작만 사용하거나 최소한의 코드를 사용하여 프로그래매틱 방식으로 열 수 있습니다.
(선택사항) C# 스크립트에서 서드 파티 SDK 네이티브 메서드 호출
서드 파티 광고 네트워크 SDK에는 직접 호출할 수 있습니다. 이러한 메서드를 호출하는 프로세스 다음과 같습니다.
- 플랫폼 클라이언트의 공통 인터페이스 정의
- 지원되지 않는 플랫폼에 기본 클라이언트 구현
- Android 메서드 호출을 위한 Android 클라이언트 구현
- iOS 메서드 호출을 위한 iOS 클라이언트 구현
- 클라이언트 팩토리를 사용하여 iOS 및 Android 클라이언트 간 전환
- 제3자 광고 네트워크 SDK 기능에 액세스하기 위한 API 정의
다음 섹션에서는 가상의 가상 머신에 이러한 단계가 구현되는 방법을 보여줍니다. 외부 광고 네트워크인 'AdPub' Android에서 메서드를 호출할 수 있는 C# API 및 iOS:
Android
package com.adpub.android;
public class AdPubSdk
{
public static void setHasUserConsent(boolean hasUserConsent);
}
iOS
@interface AdPubSdk : NSObject
+ (void)setHasUserConsent:(BOOL)hasUserConsent;
@end
플랫폼 클라이언트의 공통 인터페이스 정의
기본 IAdPubClient
인터페이스를 나타내는 메서드로
Android 및 iOS API
Assets/AdPub/Common/IAdPubClient.cs
namespace AdPub.Common
{
public interface IAdPubClient
{
///<summary>
/// Sets a flag indicating if the app has user consent for advertisement.
///</summary>
void SetHasUserConsent(bool hasUserConsent);
}
}
지원되지 않는 플랫폼에 대한 기본 클라이언트 정의
IAdPubClient
인터페이스를 구현하는 DefaultClient
클래스를 만듭니다.
메서드 이름만 기록합니다. Unity 편집기와 모든
다른 플랫폼에서도 작동합니다.
Assets/AdPub/Common/DefaultClient.cs
namespace AdPub.Common
{
public class DefaultClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
Debug.Log("SetHasUserConsent was called.");
}
}
}
iOS 플랫폼 클라이언트 구현
IAdPubClient
인터페이스를 구현하는 iOSAdPubClient
클래스 만들기
iOS를 탭합니다. 이 구현은
InteropServices를 사용하여
iOS AdPubSdk
클래스의 setHasUserConsent()
메서드
Assets/AdPub/Platforms/iOS/iOSAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on iOS.
#if UNITY_IOS
// Reference InteropServices to include the DLLImportAttribute type.
using System.Runtime.InteropServices;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class iOSAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
GADUAdPubSetHasUserConsent(hasUserConsent);
}
[DllImport("__Internal")]
internal static extern void GADUAdPubSetHasUserConsent(bool hasUserConsent);
}
}
#endif
다음으로 정의된 GADUAdPubSetHasUserConsent()
메서드를 구현합니다.
참조하세요. C
메서드로 AdPubClientBridge.m
만들기
GADUAdPubSetHasUserConsent()
: Unity에서 메서드 호출을 처리하고
AdPubSDK
.
AdPubClientBridge
는 iOS 소스 파일이며
Plugins/iOS
폴더에 대한 Unity 설치 가이드
플러그인을 사용합니다.
Assets/AdPub/Plugins/iOS/AdPubClientBridge.m
#import <AdPubSDK/AdPubSDK.h>
void GADUAdPubSetHasUserConsent(BOOL hasUserConsent) {
[AdPubSDK setHasUserConsent:hasUserConsent];
}
Android 플랫폼 클라이언트 구현
IAdPubClient
인터페이스를 구현하는 AndroidAdPubCient
클래스 만들기
Android 이 구현은 Android Java 도우미를 사용합니다.
수업
Android 정적 메서드 setHasUserConsent()
를 호출합니다.
Android Java 도우미 클래스는
런타임 시 UNITY_ANDROID
컴파일러를 사용하여 컴파일 오류를 방지할 수 있습니다.
지시어를 사용하여 래핑
클래스를 생성할 수 있습니다. 또는 Assembly를 사용하여
정의
이 문제를 해결하세요.
Assets/AdPub/Platforms/Android/AndroidAdPubClient.cs
// Wrap this class in a conditional operator to make sure it only runs on Android.
#if UNITY_ANDROID
// Reference the UnityEngine namespace which contains the JNI Helper classes.
using UnityEngine;
using AdPub.Common;
namespace AdPub.Platforms.Android
{
public class AndroidAdPubClient : IAdPubClient
{
public void SetHasUserConsent(bool hasUserConsent)
{
// Make a reference to the com.adpub.AdPubSDK.
AndroidJavaClass adPubSdk = new AndroidJavaClass("com.adpub.AdPubSdk");
// Call the native setHasUserConsent method of com.adpub.AdPubSDK.
adPubSdk.CallStatic("setHasUserConsent", hasUserConsent);
}
}
}
#endif
팩토리 메서드를 만들어 올바른 클라이언트 구현 반환
이제 모든 플랫폼에 대한 클라이언트를 구현했으므로
AdPubClientFactory
클래스를 사용하여
런타임 플랫폼에 따른 IAdPubClient
인터페이스 이 클래스는
컴파일러
명령어를 사용하여
올바른 IAdPubClient
클라이언트를 반환합니다.
Assets/AdPub/Common/AdPubClientFactory.cs
namespace AdPub.Common
{
public class AdPubClientFactory
{
// Return the correct platform client.
public static IAdPubClient GetClient()
{
#if !UNITY_EDITOR && UNITY_ANDROID
return new AdPub.Platforms.Android.AndroidAdPubClient();
#elif !UNITY_EDITOR && UNITY_IOS
return new AdPub.Platforms.iOS.iOSAdPubClient();
#else
// Returned for the Unity Editor and unsupported platforms.
return new DefaultClient();
#endif
}
}
}
각 인터페이스 메서드의 공개 API 정의
다음과 같이 각 클라이언트 메서드의 메서드 호출이 포함된 AdPubApi
클래스를 만듭니다.
IAdPubClient
인터페이스 이 클래스는 AdPubClientFactory
를 사용하여
IAdPubClient
의 인스턴스와 기본 SDK의 이 클라이언트를 호출합니다.
기능을 제공합니다
Assets/AdPub/AdPubApi.cs
using AdPub.Common;
namespace AdPub
{
public class AdPubApi
{
private static readonly IAdPubClient client = GetAdPubClient();
// Returns the correct client for the current runtime platform.
private static IAdPubClient GetAdPubClient()
{
return AdPubClientFactory.GetClient();
}
// Sets the user consent using the underlying SDK functionality.
public static void SetHasUserConsent(bool hasUserConsent)
{
client.SetHasUserConsent(hasUserConsent);
}
}
}
새로 정의된 API 호출
위에 정의된 API를 호출하는 방법은 다음과 같습니다.
Assets/Scripts/AdPubController.cs
using UnityEngine;
using AdPub;
public class AdPubController : MonoBehaviour
{
// TODO: Get consent from the user and update this userConsent field.
public bool userConsent;
// Called on startup of the GameObject it's assigned to.
public void Start()
{
// Pass the user consent to AdPub.
AdPubApi.SetHasUserConsent(userConsent);
}
}
추가적인 서드 파티 광고 네트워크 어댑터의 예
Google 모바일 광고 Unity 플러그인 GitHub로 이동 저장소 C# API를 구현하는 서드 파티 미디에이션 어댑터의 추가 예 iOS 및 Android 메서드에 대한 호출을 래핑합니다.