Roku (BrightScript)

리포지토리에 연결
GitHub

앱스플라이어의 Roku SDK 연동

앱스플라이어는 크로스 플랫폼 어트리뷰션, 모바일 및 웹 분석, 딥링킹, 사기 탐지, 개인 정보 관리 및 보존 등을 포함하여 실제 문제를 해결하는 강력한 도구를 제공하여 게임 마케터가 더 나은 결정을 내릴 수 있도록 지원합니다.

게임 어트리뷰션을 위해서는 게임이 HTTPS를 통해 앱스플라이어 API와 통신하고 첫 번째 열기, 연속 세션 및 인앱이벤트와 같은 사용자 활동을 리포트해야 합니다. 예를 들어 구매 이벤트입니다.
앱스플라이어를 Roku 채널에 연동하기 위한 참고 자료로 이 샘플 앱을 사용하는 것이 좋습니다


AppsFlyerRokuSDK - 인터페이스

AppsFlyerRokuSDK.brssource/appsflyer-integration-files 폴더에 있으며 앱스플라이어 서버에 연결하고 이벤트를 리포트하는 데 필요한 코드 및 논리가 포함되어 있습니다.

Init

이 메서드는 API 키와 앱 ID를 수신하고 앱스플라이어에 first open 및 session 요청을 보내는 앱스플라이어 모듈을 초기화합니다.

Method signature

AppsFlyer().init(<< DEV_KEY >>, << APP_ID >>)

Usage:

' Initialize the AppsFlyer integration (send first-open/session event)
AppsFlyer().init(<< DEV_KEY >>, << APP_ID >>)

Arguments:

NOTE: It is recommended to set the APP_ID manually.

When retrieving the APP_ID 의 값을 GetID() roAppInfo, the channel ID is "dev" if the application is sideloaded, and then app will not be able to communicate with the AppsFlyer endpoint.

Start

이 메서드는 앱스플라이어에 first open 및 session 요청을 보냅니다.

Method signature

start()

Usage:

AppsFlyer().start()

Stop

This method stops the SDK from functioning and communicating with AppsFlyer servers. It's used when implementing user opt-in/opt-out.

Method signature

stop()

Usage:

' Starting the SDK
AppsFlyer().start()
' ...
' Stopping the SDK, preventing further communication with AppsFlyer
AppsFlyer().stop()

LogEvent

이 메서드는 이벤트 이름과 JSON 객체를 수신하고 앱스플라이어에 인앱이벤트를 보냅니다.

Method signature

logEvent: function(eventName as string, eventParameters as object, eventCustomParameters = {})

Usage:

' logEvent without eventCustomParameters
trackEventParameters = { "af_revenue": 24.22, "af_currency": "ILS" }
AppsFlyer().logEvent("af_purchase", trackEventParameters)

' logEvent with eventCustomParameters
trackEventParameters = { "af_revenue": 24.22, "af_currency": "ILS", "freeHandParam": "freeHandValue" }
trackCustomEventParameters = { "freeHandParam": "freeHandValue" }
AppsFlyer().logEvent("af_purchase", trackEventParameters, trackCustomEventParameters)

SetCustomerUserId

This method sets a customer ID that enables you to cross-reference your unique ID with the AppsFlyer unique ID and other device IDs. Note: You can only use this method before calling Start().
The customer ID is available in raw data reports and in the postbacks sent via API.

Method signature

setCustomerUserId(string cuid)

Usage:

AppsFlyer().init(devkey, appid)
AppsFlyer().setCustomerUserId("")
AppsFlyer().start()

샘플 앱 실행

  1. appsflyer-sample-app 폴더(VSCode 안)를 엽니다.
  2. In source/main.brs에서 다음 파라미터를 자신의 것으로 교체합니다:
devkey = << DEV_KEY >>
appid = << APP_ID >>
  1. Deploy the channel: - by (using this plugin makes it easier), - by zipping the content of the source folder
    Zipped source
    and then deploying it to Roku through Roku's Development Application Installer:
    Zipped source

  2. After the app loads, you may use the following commands through the Roku remote:

    • Click the down button to set customer user id (cuid) to "AF roku test CUID".
    • Click the right button to set customer user id (cuid) to "" (reset it).
    • Click the up button to stop the SDK.
    • Click the left button to send the start (first open/session) event.
    • Click the options button (*) to send logEvent.
    • Click the replay button (*) to send logEvent with custom parameters.
    • Click the OK button after every command in order to refresh the logs.

Roku 채널에서 앱스플라이어 구현하기

Setup

  1. appsflyer-integration-files 폴더의 파일을 프로젝트로 복사합니다.
  2. 다음 코드를 main.brs 파일에 추가하고 앱스플이어 연동을 초기화합니다:
Function Main(args as Dynamic) as Void
    ...
    showAppsflyerChannelSGScreen(args)
    ...
End Function

sub showAppsflyerChannelSGScreen(args as Dynamic)
    screen = CreateObject("roSGScreen")
    m.port = CreateObject("roMessagePort")
    screen.setMessagePort(m.port)
    scene = screen.CreateScene("AppsFlyerScene")
    screen.show()

    ' Initialize the AppsFlyer integration
    AppsFlyer().init(DEV_KEY, APP_ID)
    ' Enable debugging if necessary
    AppsFlyer().enableDebugLogs(true) ' same as AppsFlyer().setLogLevel("debug")

    ' ConversionData response arrives here
    while true
        msg = Wait(0, m.port)
        ?"MESSAGE RECEIVED: "msg.GetData()
        msgType = Type(msg)
        if msgType = "roSGScreenEvent"
            if msg.isScreenClosed() then
                return
            end if
        end if
    end while
end sub
  1. Start the SDK.
  2. 인앱 이벤트를 리포트합니다.