Vungle 시작하기SDK v.5 - Corona

목차

시작하기 전에

  • 광고가 Corona 시뮬레이터에서 작동하지 않을 것입니다. 광고를 테스트하려면 장치로 빌드해야 합니다.
  • 최신 Corona 빌드를 통합에 사용할 것을 권장합니다. 이 설명서는 데일리 빌드 3103으로 작성 및 테스트되었습니다. 사용 중인 Corona SDK 버전에서 호스팅된 플러그인이 작동하지 않는 경우 tech-support@vungle.com으로 문의합니다.
  • iOS용 Vungle Corona 플러그인은 iOS 8 이상을 지원하며 Corona SDK로 제한됩니다.
  • Android용 Vungle Corona 플러그인은 Android 4.0.3(Ice Cream Sandwich - API version 15) 이상을 지원하며 Corona SDK로 제한됩니다.
  • 샘플 앱 다운로드: https://github.com/Vungle/Corona-Plugin/tree/sdk5.

1단계: build.settings 업데이트

Vungle SDK v5.1용 Corona 플러그인은 공식 Corona 서버에서는 아직 제공되지 않지만 Vungle의 자체 호스팅 플러그인을 사용할 수 있습니다. build.settings에서 플러그인 표에 다음 항목을 추가합니다. 추가가 완료되면 SDK가 서버에 연결되어 빌드 단계에서 Vungle SDK 5+ 플러그인을 통합합니다.

plugins =
{ ["plugin.vungle"] = { publisherId = "com.vungle",
},
..
}

Android에만 적용되는 사항입니다.

Android인 경우, 이 플러그인을 사용하면 다음의 권한이 자동으로 추가됩니다.

androidPermissions = {
    "android.permission.INTERNET",
    "android.permission.WRITE_EXTERNAL_STORAGE",
    "android.permission.ACCESS_NETWORK_STATE"
},

2단계: 코드 추가

SDK 초기화

참고: 앱별로 기본 광고위치가 자동으로 생성됩니다. 이 초기화 단계에서 광고위치 기능을 사용하지 않더라도 반드시 광고위치 참조 ID를 제공해야 합니다. 광고위치를 여러 개 만드는 경우, 참조 ID를 모두 제공합니다.

SDK가 자동 캐시된 광고위치의 광고 자산을 다운로드하는데 충분한 시간을 사용할 수 있도록 앱이 실행되는 즉시 SDK를 초기화하는 것이 좋습니다. SDK를 초기화하려면 다음이 필요합니다.

  • Vungle 광고 가져오기
  • 앱 ID
  • 앱에서 사용할 모든 광고위치의 참조 ID

이 ID는 Vungle 대시보드에서 찾을 수 있습니다(광고위치 설정 및 보고 참조).

샘플 코드:

local ads = require "plugin.vungle"
platform = system.getInfo( "platformName" )
placements = {}

if (platform == "Android") then
    appData = {
        appID="YOUR_ANDROID_APP_ID",
        placements={“PLMT_DEFAULT","PLMT_1","PLMT_2"}
    }
else
    appData = {
        appID="YOUR_IOS_APP_ID",
        placements={“PLMT_DEFAULT","PLMT_1","PLMT_2"}
}

-- vungleAdListner is optional
ads.init("vungle", appData.appID .. "," .. appData.placements[1] .. "," .. appData.placements[2] .. "," .. appData.placements[3] [, vungleAdListener])

SDK가 성공적으로 초기화되면 다음과 같은 이벤트가 호출됩니다.

event.type == "adAvailable"

Vungle SDK가 초기화된 후에는 Vungle 대시보드에서 자동 캐시로 선택한 광고위치에 광고가 자동으로 캐시됩니다. 조회 수가 가장 높은 광고위치를 자동 캐시로 설정하는 것이 좋습니다.

광고가 성공적으로 캐시되면 자동 캐시된 광고위치와 일치하는 광고위치 참조 ID로 adAvailable 이벤트가 호출됩니다. 자동 캐시된 광고위치의 경우 광고 가용성이 true에서 false로 변경되거나 false에서 true로 변경된 경우에만 이 메서드가 호출됩니다. SDK는 자동 캐시된 광고위치에 대한 광고를 계속 요청합니다. 다른 광고위치에서는 "로드 실패"(adAvailable가 '아니오'를 반환)하는 경우에 이 콜백 메서드가 호출됩니다.

다음 속성을 사용하여 광고위치의 광고 가용성을 확인할 수도 있습니다.

- (BOOL)isAdCachedForPlacementID:(nonnull NSString *)placementID;

광고위치에 광고 로드

자동 캐시된 광고위치 외의 다른 광고위치에는 ads.load() 메서드를 호출하여 광고를 로드합니다. 이는 광고위치 참조 ID 문자열을 인수로 사용하고, ads.load()이 발행되고 해당 광고위치에 광고를 사용할 수 없는 경우에만 특정 광고위치에 광고를 로드하려고 시도합니다.

ads.load( "PLMT_1” )

참고: 자동 캐시된 광고는 사전 캐시된 광고를 재생한 직후에 로드되기 때문에 이 메서드는 자동 캐시된 광고가 아닌 광고위치에만 사용됩니다.

광고위치에 광고 재생

광고 자산이 다운로드될 때까지 충분히 기다렸다가 ads.show()을 호출하여 광고를 재생할 수 있습니다. 광고를 재생하기 전에 event.adPlayble를 호출하여 이 광고위치에 사용할 수 있는 광고가 있는지 확인해야 합니다.

샘플 코드:

if (event.placementID == appData.placements[1]) then
    if ( event.adPlayable == true ) then
        ads.show( "PLMT_DEFAULT")
    end
end

이벤트 취급

초기화를 하기 전에 리스너를 설정하여 선택적 이벤트 리스너를 ads.init()에 전달할 수 있습니다. 다음은 사용 가능한 이벤트 리스너 목록입니다.

  • adStart
    유형: adStart
    placementID: 광고위치 참조 ID
    isError: 광고를 재생하지 못한 경우 true, 광고 재생을 시작한 경우

  • adLog
    유형: adLog
    메시지: 광고 액티비티 메시지

  • adInitialize
    유형: adInitialize 

  • adAvailable
    유형: adAvailable
    placementID: 광고위치 참조 ID
    isAdPlayable: 재생 가능한 광고가 있으면 true, 그렇지 않으면 false

  • adEnd
    유형: adEnd
    placementID: 광고위치 참조 ID
    didDownload: 사용자가 다운로드 버튼을 클릭한 경우 true, 그렇지 않으면 false
    completedView: 사용자가 비디오를 80% 이상 시청한 경우 true, 그렇지 않으면 false

  • vungleSDKlog
    유형: vungleSDKlog
    메시지: SDK 이벤트 메시지

샘플 코드:

local function vungleAdListener( event )
    if ( event.type == "adStart" and not event.isError ) then
        -- adStart event is called and ad will play
    end
    if ( event.type == "adStart" and event.isError ) then
        -- Ad has not finished caching and will not play
    end
    if ( event.type == "adLog") then
        -- adLog event is called to pass ad activity information
    end
    if ( event.type == "adInitialize") then
        -- adInitilizaed is called when placement has successfully initialized
    end
    if ( event.type == "adAvailable" ) then
        -- adAvailable is called when playablility changes to/from true/false
        -- Usage example: setting a flag to true when download completes
        --   Check event.placementID and event.isAdPlayable to set a flag to true
        --   Then check this flag later in your app and play an ad when it is true
    end
    if ( event.type == "adEnd" ) then
        -- adEnd is called when the end card is closed and and control is return to the hosting app

    end
    if ( event.type == "vungleSDKlog" ) then
        -- vungleSDKlog is called when logging event from SDK takes place
    end
end

사용자 정의 옵션

ads.show() 방법을 통해 옵션 딕셔너리를 수락하여 광고 재생 경험을 사용자 지정할 수도 있습니다.

밸류

설명

alertTitle

alertText

alertContinue

광고위치

스트링

인센티브화 비디오가 끝나기 전에 사용자가 이를 닫으려고 할 때 표시되는 메시지를 사용자 정의할 수 있습니다.

참고: 이 설정은 표준 Vungle 광고에만 적용됩니다. 동적 템플릿 광고에는 대시보드에서 동일한 사용자 정의 옵션을 사용할 수 있습니다.

isAutoRotation

부울

Android에서는 true(기본)인 경우, 비디오 광고가 장치가 놓인 방향으로 자동으로 회전합니다. false인 경우, 해당 광고에 설정된 방향을 적용합니다.

iOS의 경우, 아래에서 방향 전환 키를 참조합니다.

isSoundEnabled

부울

true인 경우(기본), 비디오 광고를 재생하는 동안 장치의 소리 설정에 따라 사운드를 사용할 수 있습니다. false인 경우, 비디오 재생이 무음 상태로 시작됩니다. 재생되는 중에 사용자가 음향을 끄거나 음소거 상태를 해제할 수 있습니다.

immersive

부울

Android에 한해, KitKat+ 기종에서 몰입형 모드를 사용하거나 중지합니다.

large

부울

iOS에 한해, 음소거 또는 닫기 등의 광고 기능을 제어하는 버튼을 더 크게 표시합니다.

orientation

Integer

iOS에 한해, 가로 방향은 4, 세로 방향은 0, 또는 자동 회전하려면 5로 설정합니다.


샘플 코드:

if (platform == "Android") then
    options = {
        placementId = placements[i],
        incentivized = isIncentivized,
        isAutoRotation = isAutoRotate,
        immersive = isImmersive,
        isSoundEnabled = not isMuted
    }
else
    options = {
        placementId = placements[i],
        incentivized = incentivized.isOn,
        large = large.isOn,
        isSoundEnabled = not muted.isOn
    }
end
if (not isempty(alertTitle.text)) then
            options.alertTitle = alertTitle.text
        end
        if (not isempty(alertText.text)) then
            options.alertText = alertText.text
        end
        if (not isempty(alertClose.text)) then
            options.alertClose = alertClose.text
        end
        if (not isempty(alertContinue.text)) then
            options.alertContinue = alertContinue.text
        end
        if (not isempty(placement.text)) then
            options.placement = placement.text
        end
end

ads.show(options)
또 다른 질문이 있으십니까? 문의 등록

댓글