Мы разработали канал Roku, используя образец канала Roku VideoPlayer (https://github.com/rokudev/videoplayer-channel). Хотя недавняя отправка в Roku была отклонена из-за отсутствия возможности создания прямых ссылок. main.brs
предоставляет средства для анализа запроса на глубокую ссылку, которую я смог реализовать для получения моих contentID
и mediaType
на основе команды curl следующим образом:
curl -d '' 'http://192.168.1.24:8060/launch/dev?MediaType=special&contentID=49479'
Комментарии main.brs
говорят
запустить / подготовить контент, сопоставленный с contentID здесь.
Мы используем файлы xml для обеспечения экрана «категорий» Roku и экрана для списка после выбора элемента на экране категорий (включая экран трамплина). В этих xml-файлах мы помечаем contentID
и mediaType
каждого элемента видео.
Я новичок в разработке Roku. Хотя мы и раньше могли создавать каналы, используя их шаблон видеоканала, я не знаю, как «запустить / подготовить контент, сопоставленный с contentID». Я искал и пробовал различные другие вызовы (например, - playMedia(ContentID, Screen)
), но я получаю ошибки в отладчике, связанные с «попыткой вызова функции operator () не для функции».
Я был бы признателен за некоторые инструкции о том, как перейти к трамплину видео на основе значения contentID
, переданного с помощью команды глубокой привязки. Или средство для воспроизведения видео на основе contentID
в файле xml.
Вот мой main.brs:
sub Main(input as Dynamic)
print "################"
print "Start of Channel"
print "################"
' Add deep linking support here. Input is an associative array containing
' parameters that the client defines. Examples include "options, contentID, etc."
' See guide here: https://sdkdocs.roku.com/display/sdkdoc/External+Control+Guide
' For example, if a user clicks on an ad for a movie that your app provides,
' you will have mapped that movie to a contentID and you can parse that ID
' out from the input parameter here.
' Call the service provider API to look up
' the content details, or right data from feed for id
if input <> invalid
print "Received Input -- write code here to check it!"
if input.reason <> invalid
if input.reason = "ad" then
print "Channel launched from ad click"
'do ad stuff here
end if
end if
if input.contentID <> invalid
m.contentID = input.contentID
print "contentID is: " + input.contentID
print "mediaType is: " + input.mediaType
'launch/prep the content mapped to the contentID here
end if
end if
showHeroScreen(input)
end sub
' Initializes the scene and shows the main homepage.
' Handles closing of the channel.
sub showHeroScreen(input as object)
print "main.brs - [showHeroScreen]"
screen = CreateObject("roSGScreen")
m.port = CreateObject("roMessagePort")
screen.setMessagePort(m.port)
scene = screen.CreateScene("VideoScene")
m.global = screen.getGlobalNode()
'Deep link params
m.global.addFields({ input: input })
screen.show()
while(true)
msg = wait(0, m.port)
msgType = type(msg)
if msgType = "roSGScreenEvent"
if msg.isScreenClosed() then return
end if
end while
end sub
Я думаю, если я смогу правильно настроить параметры для глубокой ссылки до вызова screen.show, это должно сработать? Я могу вывести значения outputID и mediaType с помощью отладчика при использовании curl для вызова глубинной ссылки, но он просто переходит на главный экран, не вызывая видео, которое было глубоко связано.
Любая помощь приветствуется.