Roku (Brighscript)

Link to repository

AppsFlyer Roku SDK integration

AppsFlyer empowers gaming marketers to make better decisions by providing powerful tools that solve real pain points, including cross-platform attribution, mobile and web analytics, deep linking, fraud detection, privacy management and preservation, and more.

Game attribution requires the game to communicate with AppsFlyer APIs over HTTPS and report user activities like first opens, consecutive sessions, and in-app events. For example, purchase events.
We recommend you use this sample app as a reference for integrating AppsFlyer into your Roku channel

AppsFlyerRokuSDK - Interface

AppsFlyerRokuSDK.brs, included in the source/appsflyer-integration-files folder, contains the required code and logic to connect to AppsFlyer servers and report events.


This method receives your API key and app ID and initializes the AppsFlyer Module that sends first open and session requests to AppsFlyer.

Chữ ký phương thức

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


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



This method receives an event name and JSON object and sends in-app events to AppsFlyer.

Chữ ký phương thức

AppsFlyer().logEvent(eventName, trackEventValues)


trackEventValues = CreateObject("roAssociativeArray")
trackEventValues = {"af_revenue": 24.22, "af_currency":"ILS", "freeHandParam": "freeHandValue"}

AppsFlyer().logEvent("af_purchase", trackEventValues)

Running the sample app

  1. Open the appsflyer-sample-app folder in VSCode.
  2. In source/main.brs, replace the following parameters with your own:
devkey = << DEV_KEY >>
appid = << APP_ID >>
  1. Deploy the channel. (Using this plugin makes it easier)

  2. After the app loads:

    1. Click OK to see the start event details.
    2. Click the options button (*) and then OK to see the logEvent.

Implementing AppsFlyer in your Roku channel


  1. Copy the files from the appsflyer-integration-files folder into your project.
  2. Add the following code to your main.brs file and Initialize the AppsFlyer integration:
Function Main(args as Dynamic) as Void
End Function

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

    ' Initialize the AppsFlyer integration (send first-open/session event)
    AppsFlyer().start(DEV_KEY, APP_ID)
    ' Enable debugging if necessary
    AppsFlyer().enableDebugLogs(true) ' same as AppsFlyer().setLogLevel("debug")

    if args.Lookup("contentId") <> invalid then

    ' 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
            end if
        end if
    end while
end sub
  1. Report in-app events.