1"use strict";(self.webpackChunkdocusaurus=self.webpackChunkdocusaurus||[]).push([[9554],{18906:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>a,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var i=o(74848),n=o(28453);const r={id:"home",title:"Mobile Video SDKs overview",slug:"/mobile",hide_table_of_contents:!0},s=void 0,d={id:"mobile/home",title:"Mobile Video SDKs overview",description:"We provide SDKs for the following mobile app development methods:",source:"@site/docs/mobile/home.md",sourceDirName:"mobile",slug:"/mobile",permalink:"/docs/mobile",draft:!1,unlisted:!1,tags:[],version:"current",frontMatter:{id:"home",title:"Mobile Video SDKs overview",slug:"/mobile",hide_table_of_contents:!0},sidebar:"mobile",next:{title:"Getting started",permalink:"/docs/mobile/android/getting-started"}},a={},l=[{value:"Backend required for highest security",id:"backend-required-for-highest-security",level:3},{value:"Webview support",id:"webview-support",level:3}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h3:"h3",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"We provide SDKs for the following mobile app development methods:"}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Framework"}),(0,i.jsx)(t.th,{children:"Status"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"/docs/mobile/android/getting-started",children:"Android Native Video SDK"})}),(0,i.jsx)(t.td,{children:"Full support \u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"/docs/mobile/ios/getting-started",children:"iOS Native Video SDK"})}),(0,i.jsx)(t.td,{children:"Full support \u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"/docs/mobile/react-native/getting-started",children:"React Native Video SDK"})}),(0,i.jsx)(t.td,{children:"Full support \u2705"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:(0,i.jsx)(t.a,{href:"/docs/mobile/flutter/getting-started",children:"Flutter Video SDK"})}),(0,i.jsx)(t.td,{children:"Full support \u2705"})]})]})]}),"\n",(0,i.jsx)(t.h3,{id:"backend-required-for-highest-security",children:"Backend required for highest security"}),"\n",(0,i.jsxs)(t.p,{children:["Playing VdoCipher hosted videos requires three parameters to\nauthenticate every playback session. From the backend, get the\nfollowing information. The backend application will use\n",(0,i.jsx)(t.a,{href:"/server/playbackauth/otp",children:"this API"})," to generate these values."]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-json",children:'{\n "otp": "____",\n "playbackInfo": "____",\n "videoId": "_____"\n}\n'})}),"\n",(0,i.jsx)(t.admonition,{title:"secret keys",type:"caution",children:(0,i.jsx)(t.p,{children:"You must not call this API from your mobile application. It will result in\nyour secret key getting compromised. Consider the secret key like a\npassword to your account."})}),"\n",(0,i.jsx)(t.admonition,{title:"Why not load video with just the video-id?",type:"info",children:(0,i.jsx)(t.p,{children:"General video streaming platforms like Youtube provides a URL/ID which can be\nused for playback. This means that anybody who has access to this URL is able to\nplay the video. With dynamic authorization, you are able to generate short-lived\ntokens restricted to only those who have priviledge to watch the video."})}),"\n",(0,i.jsx)(t.admonition,{title:"can I test without back-end?",type:"tip",children:(0,i.jsx)(t.p,{children:'If you are just testing the project, you can choose to generate a\nshort-lived tokens from the "Embed" > "Quick Embed" section from your vdocipher\ndashboard. Extract the OTP and playbackInfo values from the generated script\nand use them in your SDK.'})}),"\n",(0,i.jsx)(t.h3,{id:"webview-support",children:"Webview support"}),"\n",(0,i.jsx)(t.p,{children:"Webview is not supported for secure DRM vdocipher playback."}),"\n",(0,i.jsx)(t.p,{children:"You might find webview working on some modern devices, but the support and\nbehaviour is dependent on OS version and also other system components. Hence,\nwe only support native integration through our provided SDKs."}),"\n",(0,i.jsx)(t.admonition,{title:"What is webview?",type:"info",children:(0,i.jsx)(t.p,{children:"Webview is a technology available on mobile platforms to display HTML\ncontent within a native app. Some app development toolkits such as cordova\nor moodle mobile application uses webview to quickly develop mobile apps\nusing web technologies of HTML5 and javascript."})})]})}function h(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>d});var i=o(96540);const n={},r=i.createContext(n);function s(e){const t=i.useContext(r);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.