2017-04-10 20 views
2

私たちのRoku Scene GraphアプリケーションはRokuによって拒否されたため、深いリンクを理解する助けが必要です。Roku SGアプリケーションでDeep Linkingを実装する方法は?

ここではディープリンクを説明しています: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 

、我々は引数を印刷し、そして私たちは、この連想配列を取得します。ただし、これはcontentIdとmediaTypeを表示しません。このcurlコマンドを使用して

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

、アプリケーションが正常にコンテンツIDとMEDIATYPEを示す起動します:

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

私たちを助け、容易にディープリンクを理解し、実装するためのより良い例を提供してください。

答えて

4

あなたは正しい道を歩いています。 Deep Linkingの目的は、Roku Searchのリスティングまたはバナーから、自分のチャンネルのシーズンまたはエピソードに直接ユーザーを誘導することです。

これはシーングラフチャンネルでこれをどのようにプログラムするのかに関する文書の大きな例ではないので、私たちもこれを書く必要がありました。あなたが持ってたら、それはそれをテストするカップルの方法がある実装:

  1. は、Eclipseプラグインを使用するには - > [ファイル]> [エクスポート]> [BrightScript展開。そのようにディープリンクのparamsフィールドに入力します。あなたのチャンネルにいくつかの深いリンクのparams

http://devtools.web.roku.com/DeepLinkingTester/

  • ハードコード:コンテンツID = 1234 &のMediaType =エピソード

  • は、Rokuのディープリンクテスターを使用しますその後

    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 
    

    :ここ

    たちはmain.brsでディープリンクロジックを実装する方法を説明します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

    ディープリンクパラメータは、ファームウェアによって渡されます。あなたが渡された場合にのみそれらを処理することができます。引数が渡されない場合、単純にホーム画面を表示します。たとえば、「args」に有効なcontentIdがある場合は、そのIDを持つコンテンツを見つけて、チャネルが起動するとそのコンテンツを再生する必要があります。

    関連する問題