이 설명서를 이용하여 SDK를 빠르게 앱에 통합하고 수익을 창출하십시오. 이 설명서에 사용된 코드 샘플은 C#이지만, GitHub 저장소에서 C#, C++, Visual Basic 및 DirectX+XAML 샘플 앱 파일이 제공됩니다.
시작하기 전에
요구사항
- 통합을 진행하려면 Vungle 계정이 필요하므로 아직 계정을 만들지 않은 경우 Vungle 계정을 만들고 계정에서 새 Windows Universal Windows 앱을 생성합니다. Vungle 대시보드에서 플레이스먼트를 설정하는 방법을 알아 보려면 퍼블리셔 대시보드 사용 문서의 앱 및 플레이스먼트 추가 섹션을 참조하십시오.
- Windows 8.1용으로 개발 중인 경우 Visual Studio 2015를 사용해야 합니다. Microsoft에서는 Visual Studio 2017를 위한 Windows 8.1을 더 이상 지원하지 않습니다.
- 모바일에서는 뒤로 버튼이 지원되지만 PC(키보드)에서는 지원되지 않습니다. 이로 인해 UWP 빌드의 동작 및 사용자 환경이 달라질 수 있습니다.
- 대시보드에서, 테스트 모드로 돌아오는 광고가 없는 경우 어플리케이션을 활성화 모드로 토글하십시오.
SDK 다운로드
수동 통합 옵션을 선택한 경우 https://publisher.vungle.com/sdk/sdks/windows에서 Windows용 Vungle SDK를 다운로드 할 수 있습니다.
참조: 샘플 앱
통합 시 제공된 샘플 앱을 참조하십시오. https://github.com/Vungle/Corona-Plugin/tree/master.
1단계. Vungle SDK를 프로젝트에 통합하기
NuGet 이용(권장) 또는 수동 통합으로 Vungle을 Visual Studio 프로젝트에 추가할 수 있습니다.
옵션 1. NuGet 통합(권장)
- Visual Studio의 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.
- 찾아보기를 클릭하여 ‘Vungle’을 입력하고 Vungle SDK를 선택합니다.
- 설치를 클릭합니다.
옵션 2. 수동 통합
- Vungle 대시보드에서 Vungle Windows SDK를 다운로드합니다.
- 아카이브 압축을 풉니다.
- Visual Studio에서 어플리케이션 및 프로그래밍 언어에 맞는 정확한 템플릿을 사용하여 새 Universal Windows 프로젝트를 만듭니다.
- 프로젝트에 대한 참조를 다운로드한 Vungle Windows SDK 파일에 추가합니다.
Vungle SDK에는 Windows 10 그리고 Windows 8.1 개발용의 두 가지VungleSDK.windmd
파일이 있습니다. 압축을 푼 디렉토리인Win10
또는Win81
에서 올바른 SDK를 사용하십시오. - 프로젝트에
package.appxmanifest
파일의internetClient
기능이 있는지 확인합니다. 새 프로젝트를 생성하면 인터넷(클라이언트) 기능이 기본 설정으로 켜져 있습니다. Visual Studio를 통해 또는 수동 편집을 통해 이것을 확인할 수 있습니다.- Visual Studio에서
internetClient
기능을 확인하는 방법-
솔루션 탐색기에서
appxmanifest
를 더블클릭합니다. - 기능을 선택합니다.
- 인터넷(클라이언트) 옵션이 선택되어 있는지 확인합니다.
-
솔루션 탐색기에서
- 수동 편집을 통해
internetClient
기능을 확인하려면,package.appxmanifeset
파일을 열고internetClient
를Capabilities
섹션에 추가합니다.<Capabilities>
...
<Capability Name="internetClient" />
...
</Capabilities>
- Visual Studio에서
2단계. VungleSDK
네임스페이스 가져오기
다음과 같이 VungleSDK
네임스페이스를 가져옵니다.
using VungleSDK;
3 단계. VungleAd
인스턴스 얻기
Vungle SDK v6.3.0부터 VungleAd
인스턴스는 Vungle 앱 ID만을 단 하나의 매개 변수로 사용합니다.
VungleAd sdkInstance;
string appID = “app_id”;
sdkInstance = AdFactory.GetInstance(appID);
위의 예에서 appId
를 Vungle 앱 ID로 대체합니다. 자동 캐싱이 시작될 수 있도록 앱에서 중요한 구성 요소를 모두 로드하고 나면 바로 초기화 단계를 수행하는 것이 좋습니다.
Vungle SDK v6.2.0 이하에서 VungleAd
인스턴스에 사용되는 매개 변수는 Vungle 앱 ID의 문자열과 플레이스먼트 ID의 문자열 배열의 두 가지입니다. 인스턴스를 얻을 때 포함된 플레이스먼트 ID만 사용할 수 있습니다.
sdkInstance = AdFactory.GetInstance(appID, placementList);
4단계. 코드 추가
이벤트 핸들러 생성 및 등록
Windows SDK에서는 프로그래밍 방식으로 처리할 수 있는 몇 가지 이벤트가 발생합니다. 이 이벤트 핸들러를 사용하여 배경 음악 일시 중지/다시 시작 등의 앱 기능을 제어할 수 있습니다.
UI 스레드 노트
이벤트 리스너는 배경 스레드에서 실행되므로 이벤트 리스너에 의한 UI 상호 작용/업데이트는 실행 이전에 기본 UI 스레드로 전달되어야 합니다. 다음 방법으로 이를 수행할 수 있습니다.
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
new DispatchedHandler(() =>
{ // This block will be executed in the UI thread
} );
진단
이 이벤트 핸들러는 SDK가 진단 로그를 인쇄하려고 할 때 호출됩니다.
샘플 코드:
//Register event handler sdkInstance.Diagnostic += SdkInstance_Diagnostic; ... // Event handler called when SDK wants to print diagnostic logs private void SdkInstance_Diagnostic(object sender, DiagnosticLogEvent e) { System.Diagnostics.Debug.WriteLine("Diagnostic - "
+ e.Level + " "
+ e.Type + " "
+ e.Exception + " "
+ e.Message); }
// DEPRECATED - Use SdkInstance_OnAdEnd() instead
private void SdkInstance_OnVideoView(object sender, AdViewEventArgs e) { }
OnAdPlayableChanged
OnAdPlayableChanged
이벤트에 대한 이벤트 핸들러를 생성합니다. 이 이벤트 핸들러는 광고 가용성 상태에 변경이 있을 경우 호출됩니다. 이 이벤트 핸들러가 조치를 취하여 광고 플레이스먼트에 대해 로딩을 마친 후 광고를 사용할 수 있게 되도록 기다리십시오. e.Placement
를 확인하여 어떤 플레이스먼트가 이 이벤트를 트리거하였는지 알아볼 수 있습니다.
// Event handler for OnAdPlayableChanged event private async void SdkInstance_OnAdPlayableChanged(object sender, AdPlayableEventArgs e) {
if (e.AdPlayable == true)
{ // e.Placement - placement ID in string // Run asynchronously on the UI thread await CoreApplication.MainView.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => methodToRun(e.Placement)));
} }
OnAdPlayableChanged
이벤트에 대한 이벤트 핸들러를 등록합니다.
sdkInstance.OnAdPlayableChanged += SdkInstance_OnAdPlayableChanged;
OnInitCompleted
이 이벤트 핸들러는 SDK 초기화가 완료되면 즉시 호출됩니다. 이전 세션에서 다운로드된 광고가 있는지 확인하거나 플레이스먼트에 광고를 로딩할 수 있습니다.
샘플 코드:
//Register event handler sdkInstance.OnInitCompleted += SdkInstance_OnInitCompleted; ... // OnInitCompleted // e.Initialized - true if initialization succeeded, false if failed // e.ErrorMessage - reason for failure when e.Initialized is false private async void SdkInstance_OnInitCompleted(object sender, ConfigEventArgs e) { var placementsInfo = "OnInitCompleted: " + e.Initialized; // Initilization was success if (e.Initialized == true) { // Print out list of placements for (var i = 0; i < e.Placements.Length; i++) { placementsInfo += "\n\tPlacement" + (i + 1) + ": " + e.Placements[i].ReferenceId; if (e.Placements[i].IsAutoCached == true) placementsInfo += " (Auto-Cached)"; } } // Initilization failed else { placementsInfo += "\n\t" + e.ErrorMessage; } System.Diagnostics.Debug.WriteLine(placementsInfo); await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, new DispatchedHandler(() => NotifyInitialization(e.Initialized))); }
OnAdStart
광고를 재생하기 전에 호출됩니다. 배경 음악 일시 중지 등의 작업을 수행할 수 있습니다.
샘플 코드:
//Register event handler sdkInstance.OnAdStart += SdkInstance_OnAdStart; ... // OnAdStart // e.Id - Vungle app ID in string // e.Placement - placement ID in string private void SdkInstance_OnAdStart(object sender, AdEventArgs e) { System.Diagnostics.Debug.WriteLine("OnAdStart(" + e.Id + "): " + e.Placement); }
OnAdEnd
이 이벤트 핸들러는 사용자가 끝내기 카드를 닫고 컨트롤이 어플리케이션으로 반환되면 호출됩니다. IsCompletedView
또는 CallToActionClicked
가 true이면 사용자가 광고를 시청하였거나 광고의 다운로드 버튼을 클릭한 것입니다. 이 경우, 광고가 보상형 광고면 사용자에게 보상을 제공해야 합니다. 앱 기능 재시작 등의 작업을 수행할 수 있습니다.
샘플 코드:
//Register event handlers sdkInstance.OnAdEnd += SdkInstance_OnAdEnd; ... // OnAdEnd // e.Id - Vungle app ID in string // e.Placement - placement ID in string // e.IsCompletedView- true when 80% or more of the video was watched // e.CallToActionClicked - true when the user has clicked download button on end card // e.WatchedDuration - DEPRECATED private void SdkInstance_OnAdEnd(object sender, AdEndEventArgs e) { System.Diagnostics.Debug.WriteLine("OnVideoEnd(" + e.Id + "): " + "\n\tPlacement: " + e.Placement + "\n\tIsCompletedView: " + e.IsCompletedView + "\n\tCallToActionClicked: " + e.CallToActionClicked + "\n\tWatchedDuration: " + e.WatchedDuration); }
광고 형식 통합
앱에 표시하려는 각 광고 형식에 대한 SDK 통합을 완료합니다. 각 광고 형식에 대한 당사 지침을 다음에서 참조하십시오:
맞춤 광고 추가 설정
당사 고급 설정 문서의 지침에 따라 GDPR, CCPA 구현 및 기타 여러 설정과 같은 추가 구성 옵션으로 앱 통합을 상세하게 조정하십시오.