我需要帮助理解深层链接,因为我们的Roku场景图应用程序被Roku拒绝了。
Roku在此处解释了深层链接:https://sdkdocs.roku.com/display/sdkdoc/Deep+Linking,但此文档未详细说明有关深层链接的所有信息。例如,我们如何获取contentId和mediaType?
以下是我们在启动时运行的main()
函数:
function main(args as Dynamic) as Void
print "args" args
if (args.ContentId <> invalid) and (args.MediaType <> invalid)
if (args.mediaType = "season")
HomeScreen()
end if
end if
end function
应用程序启动后,我们打印args,然后我们得到这个关联数组。但是,这不会显示任何contentId和mediaType。
<Component: roAssociativeArray> =
{
instant_on_run_mode: "foreground"
lastExitOrTerminationReason: "EXIT_UNKNOWN"
source: "auto-run-dev"
splashTime: "1170"
}
使用此curl命令,应用程序成功启动,显示contentId和mediaType:
curl -d "" "http://10.1.1.114:8060/launch/dev?contentID=e59066f501310da32b54ec0b64319be0&MediaType=season"
请帮助我们,并提供更好的示例,以便轻松理解和实施深层链接。
答案 0 :(得分:4)
你走在正确的轨道上。深度链接的目的是将用户从Roku搜索列表或横幅广告直接发送到您频道的季节或剧集。
在如何为场景图频道编程的文档中没有一个很好的例子,所以我们也必须自己写这个。一旦实现它,有几种方法可以测试它:
使用Eclipse插件 - &gt;文件&gt;出口&gt; BrightScript部署。像这样填写DeepLinking参数字段:contentID = 1234&amp; MediaType = episode
使用Roku Deep Link Tester:http://devtools.web.roku.com/DeepLinkingTester/
将一些深层链接参数硬编码到您的频道
以下是我们如何在main.brs中实现深层链接逻辑:
sub Main(args as Dynamic)
screen = createObject("roSGScreen")
m.port = createObject("roMessagePort")
screen.setMessagePort(m.port)
m.global = screen.getGlobalNode()
'Deep Linking
'args.ContentId = "78891" 'Testing only
'args.MediaType = "episode" 'Testing only
if (args.ContentId <> invalid) and (args.MediaType <> invalid)
m.global.addField("DeepContentId", "string", true)
m.global.addField("DeepMediaType", "string", true)
m.global.DeepContentId = args.ContentId
m.global.DeepMediaType = args.MediaType
end if
scene = screen.createScene("HomeScene")
screen.show()
'...load content, other startup logic
while true
msg = wait(0, m.port)
msgType = type(msg)
if msgType = "roSGScreenEvent"
if msg.isScreenClosed() then exit while
end if
end while
if screen <> invalid then
screen.close()
screen = invalid
end if
end sub
然后在HomeScene.brs的主屏幕上,一旦您的内容初始化:
'Check for deep link content
if m.global.DeepContentId <> invalid then
if (m.global.DeepMediaType = "short form" or m.global.DeepMediaType = "movie" or m.global.DeepMediaType = "episode") then
'find selected content in feed
'play episode or movie content directly
else if (m.global.DeepMediaType = "season")
'find selected content in feed
'show season screen for content
else
? "Unrecognized Deep Link Media Type"
end if
'It may be necessary to remove deep link params
m.global.DeepContentId = invalid
m.global.DeepMediaType = invalid
end if
我希望这有助于您的深层链接启动和运行。如果我错过了什么,请告诉我。
答案 1 :(得分:1)
深层链接参数由固件传递。如果通过它们,您应该只能处理它们。如果没有传递参数,只需显示主屏幕。例如,如果您在“args”中拥有有效的contentId,则应找到具有此类ID的内容,并在频道启动后播放。