2017-04-10 3 views
2

J'ai besoin d'aide pour comprendre les liens profonds, car notre application Roku Scene Graph a été rejetée par Roku. Roku explique la liaison profonde ici: https://sdkdocs.roku.com/display/sdkdoc/Deep+Linking, mais cette documentation ne détaille pas toutes les informations sur la liaison profonde. Par exemple, comment obtenons-nous contentId et mediaType?Comment implémenter Deep Linking dans l'application Roku SG?

Voici notre fonction main() qui fonctionne sur le lancement:

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 

Après le lancement de l'application, nous imprimons args, et nous obtenons ce tableau associatif. Cependant, cela n'affiche pas contentId et mediaType.

<Component: roAssociativeArray> = 
{ 
    instant_on_run_mode: "foreground" 
    lastExitOrTerminationReason: "EXIT_UNKNOWN" 
    source: "auto-run-dev" 
    splashTime: "1170" 
} 

Cette commande boucle, l'application se lance avec succès le montrant contentId et mediaType:

curl -d "" "http://10.1.1.114:8060/launch/dev?contentID=e59066f501310da32b54ec0b64319be0&MediaType=season" 

nous aider S'il vous plaît et de fournir un meilleur exemple pour comprendre et mettre en œuvre facilement des liens profonds.

Répondre

4

Vous êtes sur la bonne voie. L'objectif de Deep Linking est d'amener un utilisateur d'une annonce ou d'une bannière Roku Search directement à une saison ou à un épisode de votre chaîne.

Il n'y a pas un grand exemple dans les docs de la façon dont vous programmeriez ceci pour un canal Scene Graph, donc nous avons dû l'écrire nous-mêmes aussi. Une fois que vous avez mis en place il y a une deux manières de le tester:

  1. Utilisez le plugin Eclipse -> Fichier> Exporter> BrightScript déploiement. Remplissez le champ de deeplinking comme ceci: contentID = 1234 & MediaType = épisode

  2. Utilisez le Roku lien profond Tester: http://devtools.web.roku.com/DeepLinkingTester/

  3. dur code des params de lien profond dans votre canal

Voilà comment nous avons implémenté la logique de lien profond dans 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 

Ensuite, sur votre écran d'accueil HomeScene.brs, une fois que votre contenu a été initialisé:

'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 

J'espère que cela est utile pour obtenir votre Deep Linking et en cours d'exécution. Faites-moi savoir si j'ai manqué quelque chose.

1

Les paramètres de liaison profonde sont transmis par le microprogramme. Vous ne devriez pouvoir les manipuler que s'ils sont réussis. Si aucun argument n'est passé, affichez simplement l'écran d'accueil. Si, par exemple, vous avez contenu contentId valide dans "args", vous devriez trouver un contenu avec un tel ID et le lire une fois que le canal sera lancé.