<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tokbox Blog &#187; Developer</title>
	<atom:link href="http://www.tokbox.com/blog/developer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tokbox.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 06 May 2013 22:01:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Mantis Checklist &#8211; How to get started with Mantis</title>
		<link>http://www.tokbox.com/blog/getting-started-with-mantis/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-started-with-mantis</link>
		<comments>http://www.tokbox.com/blog/getting-started-with-mantis/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 18:00:52 +0000</pubDate>
		<dc:creator>Melih O.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Mantis]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5803</guid>
		<description><![CDATA[We just launched Mantis yesterday, and saw a rush of activity as partners hopped onto the WebRTC cloud. The new things people will be able to build &#8211; a real-time, online dungeons and dragons web app, seminar applications, education applications, and more &#8211; are now going to see a whole new level of quality and [...]]]></description>
				<content:encoded><![CDATA[<p>We just launched <a title="Mantis: Next-generation Cloud Technology for WebRTC" href="http://www.tokbox.com/blog/mantis-next-generation-cloud-technology-for-webrtc/">Mantis</a> yesterday, and saw a rush of activity as partners hopped onto the WebRTC cloud. The new things people will be able to build &#8211; a real-time, online dungeons and dragons web app, seminar applications, education applications, and more &#8211; are now going to see a whole new level of quality and experience. We&#8217;re really excited to be the face-to-face video platform that helps make this happen. But to make it happen more quickly, we&#8217;ve decided to write a quick Mantis checklist. To make your Mantis application work, you will need to:</p>
<ul>
<li><span style="line-height: 15px;">Make sure that you are using the OpenTok on WebRTC JS library. You can find the library <a href="http://tokbox.com/opentok/webrtc/downloads/index.html">here</a>, and find the reference documentation <a href="http://tokbox.com/opentok/webrtc/docs/js/reference/index.html">here</a>. If you are using the v1.1 JS library, you will need to update your application to the v2.0 library.</span></li>
</ul>
<ul>
<li><span style="line-height: 15px;">Use a browser with WebRTC support &#8211; Chrome 26, FireFox Beta, or IE9 with the <a href="http://www.google.com/chromeframe?prefersystemlevel=true">Google Chrome Frame plugin</a>.</span></li>
</ul>
<ul>
<li><span style="line-height: 15px;">When you generate a session, make sure that the <em>p2p.preference</em> flag is set to <em>disabled</em>. If you&#8217;re generating your sessions from the Developer Dashboard, then you will need to <a href="http://tokbox.com/opentok/webrtc/downloads/index.html">download</a> one of our server-side SDKs and generate sessions yourself.</span></li>
</ul>
<ul>
<li>If you haven&#8217;t already asked to participate in the Mantis beta, please contact us at <a href="mailto:mantis@tokbox.com" target="_blank">mantis@tokbox.com</a>. Then make sure that you are using the correct API key for the Mantis beta. <span style="line-height: 15px;">If you are not sure which API key you sent us, then please email us, and we will let you know. Mantis requires that your API key be enabled to access the infrastructure.</span></li>
</ul>
<p>It really is that quick, and if you&#8217;re finding that you need some more help, then let us know. To make sure that your question gets answered as quickly as possible, please send an email to <a href="mailto:support@tokbox.com?subject=Mantis%20bug%20report">support@tokbox.com</a> using the following template:</p>
<p><span id="more-5803"></span></p>
<p>Email subject: [Mantis bug report] [Description of issue]<br />
Email body:</p>
<p>API key:<br />
Session ID:<br />
Browser version:<br />
Time of issue:</p>
<p>and then feel free to describe the issue further after filling out those fields.</p>
<p>We&#8217;re excited to see what our partners can build with Mantis, and we&#8217;re also ready and available whenever you need help. Happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/getting-started-with-mantis/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mantis: Next-generation Cloud Technology for WebRTC</title>
		<link>http://www.tokbox.com/blog/mantis-next-generation-cloud-technology-for-webrtc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mantis-next-generation-cloud-technology-for-webrtc</link>
		<comments>http://www.tokbox.com/blog/mantis-next-generation-cloud-technology-for-webrtc/#comments</comments>
		<pubDate>Wed, 24 Apr 2013 23:09:50 +0000</pubDate>
		<dc:creator>Badri Rajasekar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Industry News]]></category>
		<category><![CDATA[New Products & Features]]></category>
		<category><![CDATA[OpenTok on WebRTC]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5754</guid>
		<description><![CDATA[Today we’re proud to announce our latest WebRTC innovation: Mantis, a cloud-scaling infrastructure for our OpenTok on WebRTC platform. This is another big step forward for the TokBox team as we continue to pursue our goal of providing application developers with simple yet powerful APIs. APIs that not only leverage the latest standards to deliver [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.tokbox.com/blog/wp-content/uploads/2013/04/OpenTok_allplatforms-1.jpg"><img class="alignleft  wp-image-5775" alt="OpenTok_allplatforms (1)" src="http://www.tokbox.com/blog/wp-content/uploads/2013/04/OpenTok_allplatforms-1.jpg" width="382" height="86" /></a>Today we’re proud to announce our latest WebRTC innovation: Mantis, a cloud-scaling infrastructure for our <a href="http://tokbox.com/opentok/webrtc/docs/index.html">OpenTok on WebRTC </a>platform.</p>
<p>This is another big step forward for the TokBox team as we continue to pursue our goal of providing application developers with simple yet powerful APIs. APIs that not only leverage the latest standards to deliver the best possible experience, but that are backed by a scalable, smart cloud which supports interoperability across a variety of end-points.</p>
<p><span id="more-5754"></span></p>
<p>It was just over six months ago that we <a href="http://www.tokbox.com/blog/opentok-on-webrtc-offering-the-technology-of-tomorrow-today/">launched the OpenTok on WebRTC platform</a>. Since that time we’ve been hard at work, constantly pushing the boundaries of OpenTok on WebRTC’s functionality and performance. We launched the <a href="http://www.tokbox.com/blog/opentok-webrtc-for-ios-raises-the-bar/">first iOS SDK for WebRTC</a>, introduced cross-platform and device support, improved connectivity with cross-platform TURN support and more.</p>
<p>Mantis for OpenTok on WebRTC acts as a central switching station for all the WebRTC streams in the OpenTok cloud.  Mantis enables:</p>
<ul>
<li>Reduced upload bandwidth consumption, with the ability to scale out a single WebRTC stream to many endpoints</li>
<li>High-quality multi-party video calls</li>
<li>Cross-browser compatibility for Chrome, Firefox and Internet Explorer (through <a href="www.google.com/chromeframe">Google Chrome Frame</a>)</li>
<li>Cross-device compatibility for iOS native apps and Chrome on Android</li>
<li>SIP interop: the ability to dial in to a WebRTC video session from any cell or landline phone</li>
</ul>
<p>Why should you care about Mantis?</p>
<p><strong style="font-size: 20px;">1) It’s scalable…</strong></p>
<p>WebRTC inherently uses a <a href="http://dev.w3.org/2011/webrtc/editor/webrtc.html">peer-to-peer based</a> communication model.</p>
<p>In reality, while this is useful, several real-world applications naturally lend themselves to a multi-party use-case:  online classrooms, collaboration tools, the list goes on. The only way to enable a group video call using off-the-shelf WebRTC would be to create a mesh of PeerConnections between all participants in a call.</p>
<p>This mechanism doesn&#8217;t scale the number of connections well (it <a href="http://en.wikipedia.org/wiki/Complete_graph">scales quadratically</a> with the number of participants), and it is bandwidth inefficient. Every publisher needs to pipe out one video stream per call participant, leading to a linear increase in the amount of upload bandwidth required.</p>
<p>Mantis is a cloud-based media routing server, which enables us to get around this mesh problem by providing a centralized relay authority.</p>
<p>Every browser/device end-point thinks it&#8217;s connecting to a peer, but instead connects to one of our Mantis servers. Mantis can mediate multiple connections and then route streams from each publisher to any relevant end-point subscribing to that stream. Now OpenTok on WebRTC can scale subscribers effectively without constraints on publisher upload bandwidth, all while still leveraging standards-compliant WebRTC implementations under the covers.</p>
<p><img class="aligncenter size-full wp-image-5759" alt="Mantis Diagram" src="http://www.tokbox.com/blog/wp-content/uploads/2013/04/Mantis-Diagram.png" width="1164" height="656" /></p>
<p><strong style="font-size: 20px;">2) It’s smart…</strong></p>
<p>Scale is just one piece of the puzzle.</p>
<p>Mantis also provides a call-control/signaling mechanism that works in lockstep with media routing. This means OpenTok on WebRTC uses some pretty sophisticated algorithms to dynamically adapt to various network conditions that the client endpoints may experience.</p>
<p>Let&#8217;s say you were on your iPhone in a coffee shop with Wi-Fi, and then you step out into the street and switch to a much slower cellular connection. Mantis is aware of the change in network conditions and can adapt the bitrate of the encoded stream in order to adapt.</p>
<p><strong style="font-size: 20px;">3) It interoperates…</strong></p>
<p>Supporting different devices endpoints is one of the core tenets we strive towards at TokBox.  Mantis helps us work towards interoperability between WebRTC and other communications ecosystems.</p>
<p>One such use-case we are demonstrating with Mantis is interoperability with telephony endpoints. Leveraging <a href="http://www.jajah.com/">Telefónica Digital’s telecom</a> infrastructure, OpenTok on WebRTC can now connect PSTN or VOIP endpoints with WebRTC-enabled group video calls, using SIP to interoperate. This enables a user who is not video-enabled to dial-in to a multi-party OpenTok video session, and have the audio streams appropriately mixed and piped in each direction.</p>
<p>We believe Mantis lays the foundation for not only a powerful routing technology, but also for other functionality that can be layered on top of it: stream mixing, recording of media, signaling/event-notification APIs, and more.</p>
<p>We’re excited to show off our initial implementation of Mantis at the The Next Web &#8217;13 in Amsterdam.  If you are going to be around, swing by our demo booth to see bandwidth-efficient multi-party WebRTC video in action, as well as a demo of dialing in to a WebRTC video call from your everyday mobile phone.</p>
<p>Mantis is now in external beta.  If you are interested in taking it for a spin, please contact us at <a href="mailto:mantis@tokbox.com">mantis@tokbox.com</a>.</p>
<p><iframe src="http://player.vimeo.com/video/64613446?color=0099cc" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
<p><a href="http://vimeo.com/64613446">Mantis: Cloud-scaling infrastructure for OpenTok on WebRTC</a> from <a href="http://vimeo.com/tokboxinc">TokBox</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/mantis-next-generation-cloud-technology-for-webrtc/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>New changes for WebRTC in Chrome 26</title>
		<link>http://www.tokbox.com/blog/new-changes-for-webrtc-in-chrome-26/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-changes-for-webrtc-in-chrome-26</link>
		<comments>http://www.tokbox.com/blog/new-changes-for-webrtc-in-chrome-26/#comments</comments>
		<pubDate>Fri, 29 Mar 2013 22:58:30 +0000</pubDate>
		<dc:creator>Melih O.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Industry News]]></category>
		<category><![CDATA[OpenTok on WebRTC]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5730</guid>
		<description><![CDATA[A new version of Chrome is out, and with it changes in the WebRTC stack. We dug through the commit logs for Chrome 26, and found the following list of WebRTC bug fixes, enhancements, and updates that we thought were relevant to the OpenTok community: Highlights A lot of audio bugs in WebRTC were fixed [...]]]></description>
				<content:encoded><![CDATA[<p>A new version of Chrome is out, and with it changes in the WebRTC stack. We dug through the commit logs for Chrome 26, and found the following list of WebRTC bug fixes, enhancements, and updates that we thought were relevant to the OpenTok community:</p>
<h3><strong>Highlights</strong></h3>
<ul>
<li>A lot of audio bugs in WebRTC were fixed dealing with crashes and non-standard audio bitrates</li>
<li>Chrome on Android can now be WebRTC-enabled by enabling a flag</li>
<li>Improvements to the connectivity stack in WebRTC</li>
<li>Ability to set media constraints for audio</li>
</ul>
<h3><strong>Full list</strong></h3>
<ul>
<li>Avoids crash in WebRTC audio clients for unsupported capture sample rates.</li>
<li>Avoids crash in WebRTC audio clients for 96kHz render rate on Mac OSX.</li>
<li>Enable webrtc build on android.</li>
<li>
<div>Set WebMediaPlayerMS network state to loading instead of loaded</div>
<ul>
<li>
<div>This indirectly fixes the problem where WebRTC audio is muted upon refresh. The HTMLMediaElement will try to cache fully Loaded videos when the element is destructed. This will signal to the HTMLMediaElement that the player was destroyed when loading, so it needs to recreate WebMediaPlayerMS upon destruction of the media tag.</div>
</li>
</ul>
</li>
<li>Allowing multiple MediaPlayers to connect to WebRtcAudioDeviceImpl by sharing one WebRtcAudioRenderer.
<ul>
<li>
<div> The audio is gone when new PeerConnection is connecting to a media stream. What is happening is that the stream will pause the existing MediaPlayer and create new MediaPlayers to associated to it. But since we only allow one WebRtcAudioRenderer to connect to WebRtcAudioDeviceImpl, the new MediaPlayers audio won&#8217;t be able to associate to stream.</p>
<p><span id="more-5730"></span></p>
<p>This patch fixes the problem by allowing multiple MediaPlayers to connect to WebRtcAudioDeviceImpl by sharing one WebRtcAudioRenderer</p>
</div>
</li>
</ul>
</li>
<li> Add webrtc audio-mirroring flag for automated testing</li>
<li>Set MediaConstraints for audio to WebRTC</li>
<li>
<div>When both stun and turn server are provided, use the turn server as the stun server.</div>
</li>
<li> This patch fixes two audio issues for webrtc hangout.
<ul>
<li>#1 Audio is muted when switching between the local stream to remote stream.</li>
<li>#2 It has glitches when switching between views.
<div>The first issue is fixed by storing the volume for local stream before muting, and recover the volume when it goes away. The second issue is fixed by re-using the |audio_renderer_| between different webmediaplayer.</div>
</li>
</ul>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/new-changes-for-webrtc-in-chrome-26/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OpenTok on WebRTC now supports Firefox!</title>
		<link>http://www.tokbox.com/blog/opentok-on-webrtc-now-supports-firefox/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=opentok-on-webrtc-now-supports-firefox</link>
		<comments>http://www.tokbox.com/blog/opentok-on-webrtc-now-supports-firefox/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 20:34:32 +0000</pubDate>
		<dc:creator>Rolly</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Industry News]]></category>
		<category><![CDATA[New Products & Features]]></category>
		<category><![CDATA[OpenTok on WebRTC]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5656</guid>
		<description><![CDATA[On February 4th Mozilla and Google announced that their respective browsers could now talk to each other via WebRTC. This is another big milestone in WebRTC&#8217;s path towards becoming available in all modern web browsers, albeit, today only in an early development build of Firefox, version 21+ (currently Nightly and soon to be Aurora). We&#8217;ve [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.tokbox.com/blog/wp-content/uploads/2013/02/OpenTok_WebRTC_FF-1.png"><img class="alignleft size-full wp-image-5685" alt="OpenTok_WebRTC_FF-1" src="http://www.tokbox.com/blog/wp-content/uploads/2013/02/OpenTok_WebRTC_FF-1.png" width="308" height="183" /></a>On February 4th <a href="https://hacks.mozilla.org/2013/02/hello-chrome-its-firefox-calling/">Mozilla and Google announced</a> that their respective browsers could now talk to each other via WebRTC. This is another big milestone in WebRTC&#8217;s path towards becoming available in all modern web browsers, albeit, today only in an early development build of Firefox, version 21+ (currently Nightly and soon to be Aurora).</p>
<p>We&#8217;ve also been working hard on making OpenTok on WebRTC work with both Firefox and Chrome so you too can enjoy all this cross-browser goodness!</p>
<h2>Off to the races</h2>
<p>The first thing that you need is version 21 or higher of Firefox, currently available through the <a href="http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-aurora/">Aurora FTP</a> site and <a href="http://nightly.mozilla.org/">Nightly</a> site.</p>
<p><span id="more-5656"></span>If you&#8217;re a Firefox user already you may want to set up a separate profile to test with. This will keep your default profile clean, and your test profile will likely also start up a bit faster than your default one. You can find instructions on how to do this <a href="http://kb.mozillazine.org/Using_multiple_profiles_-_Firefox#Using_new_profiles_in_secondary_Firefox_installations" target="_blank">here</a> and <a href="http://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles" target="_blank">here</a>.</p>
<p>If you&#8217;re testing with Chrome, you will want to make sure that you have updated to the latest version (version 25 at the time of this article), which has all of the fixes required for interoperability with Firefox. All of the relevant WebRTC bits are enabled by default in Firefox 21+ and in Chrome 25, so you should be ready to roll. Now go have a play with TokBox&#8217;s <a href="https://www.tokbox.com/opentok/api/demo/v2" target="_blank">OpenTok on WebRTC demo</a>. Then come back here afterwards.</p>
<h2>When can I have this in the production release of Firefox?</h2>
<p>Parts of WebRTC are working in the current production release version of Firefox (Firefox 19). However, Firefox 21 is the version that interoperates successfully with Chrome, and it also has all of the WebRTC preferences turned on by default. The gang at Mozilla is also pushing hard to fix lots of critical WebRTC bugs before production release of Firefox 21 and hopefully turning on WebRTC for everyone. According to the <a href="https://wiki.mozilla.org/RapidRelease/Calendar">Mozilla release calendar</a>, Firefox 21 is targeted to be released the week of May 13th.</p>
<p><strong>If this isn’t in the production release of Firefox, why is this news?</strong></p>
<p>What we’re doing today is giving you a head start.</p>
<p>The great thing about OpenTok on WebRTC is that we make face-to-face video work in your users’ browsers when those browsers are ready to work correctly.  So our announcement today lets you know that we are ready for Firefox WebRTC support to go production.  Right now, you can install Firefox Aurora and use it to test your app using OpenTok on WebRTC.  And you can watch as Firefox 21 makes it from Aurora to Beta and then to release and know when a big new chunk of your users can get access to WebRTC through OpenTok on WebRTC, all without your having to write an extra line of code.</p>
<h2>What doesn&#8217;t work yet?</h2>
<p>Mozilla isn&#8217;t quite done yet, so there are still some holes. The biggest one involves anything to do with disabling audio and video tracks. Namely:</p>
<ul>
<li>Muting audio</li>
<li>subscribeToAudio and subscribeToVideo on Subscribers</li>
<li>publishAudio and publishVideo on Publishers</li>
</ul>
<p>You may also see some connectivity issues in particularly restrictive networks. We&#8217;re working on these issues now, and we&#8217;ll update you as we have good news to share in the not too distant future.</p>
<h2>What were some of the challenges of getting Firefox and Chrome to play nicely?</h2>
<p>Some of things we had to do were pretty straight-forward &#8211; normalizing the cosmetic differences between the APIs, for example. This just involved making sure that we were using the appropriate vendor prefixed object and function names, say webkitGetUserMedia in Chrome and mozGetUserMedia in Mozilla.</p>
<p>The more complex bits involved working around browser specific issues and incompatibilities in the messaging layer (this is the part that uses text blobs of SDP). One notable example was that earlier implementations in Chrome and Firefox didn&#8217;t support compatible implementations of cryptography, with Firefox supporting DTLS and Chrome SDES. This was eventually resolved, but a <a href="http://code.google.com/p/webrtc/issues/detail?id=1314" target="_blank">new related issue</a> popped up in Chrome as a result.</p>
<p>Simply, DTLS adds an extra &#8220;a=fingerprint&#8221; line to the SDP payload which makes Chrome 25 incorrectly assume that the payload is SDES when it sees it. If SDES <em>was</em> being used there should also be an &#8220;a=crypto&#8221; line, but in this case there won&#8217;t be. So Chrome complains and won&#8217;t accept the SDP message.</p>
<p>As Chrome doesn&#8217;t actually care about the value of the crypto line, only that it&#8217;s present and well formed, the solution is to add a dummy crypto line when sending offers from Firefox to Chrome. Google is landing a fix for this in Chrome 26, but leaving the extra line in causes no harm and allows compatibility with Chrome 25. The dummy line we add in OpenTok looks like this:</p>
<pre>a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:FakeFakeFakeFakeFakeFakeFakeFakeFakeFake\\r\\n</pre>
<p>On the Mozilla side, Firefox doesn&#8217;t support FQDNs when specifying ICE servers for the PeerConnection. There&#8217;s a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=837919" target="_blank">Bug</a> open for this on Bugzilla, but in the meantime, ICE servers must to be specified as raw IPs for Firefox.</p>
<p>Another issue is caused by Firefox sending Data Channel information as part of its JSEP Offers &#8211; something that Firefox is doing temporarily until its Data Channels implementation is completed. Unfortunately this upsets Chrome and requires another workaround.</p>
<p>The good news is that we are doing all this hard work for you &#8211; making OpenTok on WebRTC interoperate smoothly &#8211; so you can spend your time building great applications, not worrying about browser compatibility between different implementations of the WebRTC standard.</p>
<p><span class="Apple-style-span" style="font-weight: bold; color: #000000;">Wrapping it up</span></p>
<p>At TokBox we&#8217;re super excited to see another great browser jump on board with the WebRTC standard, and we&#8217;re really impressed with how quickly the Firefox and Chrome teams have come together to make this happen. We really believe in the power of WebRTC &#8211; in particular, in the quality of the video and audio it delivers while maintaining low latency. We&#8217;re constantly keeping an eye out for all of the new developments in WebRTC, making sure we&#8217;re staying ahead of the curve to keep our API supporting the latest and greatest. Now we&#8217;re off to take a hard look at Microsoft&#8217;s first implementation of CU-RTC-Web.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/opentok-on-webrtc-now-supports-firefox/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>LiveNinja: Video chat face-to-face with experts</title>
		<link>http://www.tokbox.com/blog/liveninja-video-chat-face-to-face-with-experts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=liveninja-video-chat-face-to-face-with-experts</link>
		<comments>http://www.tokbox.com/blog/liveninja-video-chat-face-to-face-with-experts/#comments</comments>
		<pubDate>Fri, 08 Feb 2013 20:26:52 +0000</pubDate>
		<dc:creator>Lauren Slattery</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[App of the Week]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[OpenTok API]]></category>
		<category><![CDATA[Partner News]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5570</guid>
		<description><![CDATA[There is a new breed of Ninjas taking over. Instead of covert agents wielding nunchucks and wearing ninja-yoroi, you’ll find gentler individuals donned in yoga pants, weaponed with guitars and Adobe CSS. LiveNinja, our App of the Week, is responsible. They&#8217;ve created a searchable marketplace of experts (Certified Ninjas) in the topics you care about, using the [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.tokbox.com/blog/wp-content/uploads/2013/02/LiveNinja-logo.png"><img class="alignleft size-medium wp-image-5571" title="LiveNinja logo" src="http://www.tokbox.com/blog/wp-content/uploads/2013/02/LiveNinja-logo.png" alt="" width="240" height="161" /></a>There is a new breed of Ninjas taking over. Instead of covert agents wielding nunchucks and wearing ninja-yoroi, you’ll find gentler individuals donned in yoga pants, weaponed with guitars and Adobe CSS. <a href="http://www.liveninja.com/">LiveNinja</a>, our App of the Week, is responsible. They&#8217;ve created a searchable marketplace of experts (Certified Ninjas) in the topics you care about, using the OpenTok API to facilitate live video consultations.</p>
<p><span id="more-5570"></span>In today&#8217;s struggling economy, the founders of LiveNinja saw a new work trend emerging. Friends, family and acquaintances were setting up consultancy shops online, using siloed video chat services like Skype to connect face-to-face with clients. While this worked for some consultants, they also saw many people struggling to bring in to new clients. Just google &#8220;Spanish lessons&#8221; and imagine how hard it would be to stand out amongst the 59 million + results. ¡Ay caramba!</p>
<p>On why his team decided to develop LiveNinja, CEO and Co-founder Will Weinraub said:</p>
<blockquote><p>The number of skillful individuals across the world that are unemployed and unable to produce income is exorbitant. However, we feel if we can modernize the traditional concepts of employment by providing the proper tools, we can eliminate the barriers to both job and income creation. LiveNinja effectively allows people to create and accelerate these jobs by empowering any individual with all the tools they need for an online service-based business.</p></blockquote>
<p>In response, LiveNinja created a full service marketplace that enables experts to set up their own web page and customize the look and feel. Certified Ninjas can set their own rates and schedules, and collect income in the LiveNinja one stop shop.</p>
<p><a href="http://www.tokbox.com/blog/wp-content/uploads/2013/02/liveninja-screenshot.png"><img class="alignleft size-full wp-image-5600" title="liveninja screenshot" src="http://www.tokbox.com/blog/wp-content/uploads/2013/02/liveninja-screenshot.png" alt="" width="640" height="296" /></a></p>
<p>What is the experience like for a student? Let&#8217;s say you&#8217;re dying to improve the height of your round-house kick (who isn&#8217;t?) Simply head over to LiveNinja and search for &#8220;martial arts&#8221;. If they can&#8217;t find exactly what you&#8217;re looking for, LiveNinja&#8217;s intelligent search will make recommendations for other areas you may be interested in. Once you find the expert you&#8217;re looking for, simply book an appointment and let them welcome you to their virtual dojo.</p>
<p>Have a skill that you&#8217;d like to share with the world? <a href="http://www.liveninja.com/">Become a Certified Ninja</a> today. Prefer to learn something new? <a href="http://www.liveninja.com/browse/">Start browsing</a> expert profiles, reading user reviews, and booking sessions. Welcome to the dojo.</p>
<p><iframe src="http://player.vimeo.com/video/37270865" frameborder="0" width="400" height="300"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/liveninja-video-chat-face-to-face-with-experts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What I learned on my cross platform development panel</title>
		<link>http://www.tokbox.com/blog/what-i-learned-on-my-cross-platform-development-panel/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-i-learned-on-my-cross-platform-development-panel</link>
		<comments>http://www.tokbox.com/blog/what-i-learned-on-my-cross-platform-development-panel/#comments</comments>
		<pubDate>Fri, 08 Feb 2013 01:40:21 +0000</pubDate>
		<dc:creator>Melih O.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenTok API]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5581</guid>
		<description><![CDATA[Last Thursday, I had the pleasure of being a part of the Mobile + Web developer conference held at the Hilton Hotel in San Francisco. I spoke on a panel about where development was headed in a world where Web + Mobile are the two predominant platforms. There were four of us total, and we [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.tokbox.com/blog/wp-content/uploads/2013/02/mobile-+-web-dev-con.png"><img class="alignleft size-medium wp-image-5630" title="mobile + web dev con" src="http://www.tokbox.com/blog/wp-content/uploads/2013/02/mobile-+-web-dev-con.png" alt="" width="286" height="120" /></a>Last Thursday, I had the pleasure of being a part of the Mobile + Web developer conference held at the Hilton Hotel in San Francisco. I spoke on a panel about where development was headed in a world where Web + Mobile are the two predominant platforms. There were four of us total, and we had a great time talking about how each of us lived in, and viewed the future of development in this two platform world. The panel was composed of (beyond myself) John Hammink, a QA engineer from Mozilla, Jonathan Smiley, a partner at Zurb building their own HTML5 framework, and Ted Drake, a senior accessibility engineer from Intuit.</p>
<p><span id="more-5581"></span></p>
<p>Walking away from the panel, I found myself quite convinced of a few things that beforehand I had only held as loose opinions, and I wanted to share those with the TokBox blog audience.</p>
<p><strong>1) Ultimately a common language set will prevail&#8230; but not for the reasons you’re thinking</strong><br />
Today, as we all know, it takes a developer a long time, and real effort, to be available on all platforms (namely web, iOS, and Android) from day one. The reason is simple &#8211; HTML5 based applications don’t perform as well as their native counterparts. If anyone learned this lesson the hard way, it was <a href="http://techcrunch.com/2012/12/13/facebook-android-faster/">Facebook</a>, but other app developers have similar horror stories.</p>
<p>Further, it takes first-world incomes to be able to buy the top of the line smartphones from the likes of Apple, Samsung, and Motorola. Most of these devices are extreme luxury items outside of the US and Western Europe. As a result, an already saturated app store for existing platforms is a daunting marketplace for new and emerging apps.</p>
<p>Given all of that, we asked ourselves&#8230; but what if the native API was HTML5?</p>
<p>The upcoming launch of Firefox OS is exciting exactly because developers targeting untapped markets (Latin America, South America, Africa) using skills (HTML5, JS, and CSS) that they already have is a large ocean of opportunity.</p>
<p>Firefox OS phones, a device our Telefonica Digital family have dedicated significant time to developing, may not compete on hardware specs with the iPhones we have in the US and Western Europe, but, as a platform for the masses, their reach could be much greater, open much larger markets, and open many more interesting opportunities in the years to come. Simultaneously, as mobile browsers continue to invest in speed and quality, a second wave of HTML5 apps wrapped in native application bindings could make a comeback.</p>
<p>The sum of these parts is that developers who have built HTML5-based apps will be well positioned to take advantage of the next generation of smartphone devices, but the panel agreed that today the burden lies on the developer to build multiple native applications.</p>
<p><strong>2) Frameworks are only as powerful as the developer who wields them</strong><br />
Ted Drake spoke a lot about how accessibility has been pushed to new, and powerful, places with the emergence of smartphones and tablet devices. However, he decried frameworks as a programming paradigm where, “shit goes in, and shit comes out.”</p>
<p>This, I thought, was one of the better topics we debated.</p>
<p>It started with the thesis that frameworks are used by developers who don’t know what they’re doing as a shortcut or to quickly prototype their work. However, Jonathan Smiley spoke up for framework users by giving the example of his agency who had built a framework that they used to quickly, and robustly, build responsive applications for their clients. Zurb  knew what they were doing, and knew how to use the tool effectively.</p>
<p>Ultimately, I think the entire panel agreed that the issue with frameworks is speed more than complexity. If people are moving too fast, while not understanding the programming paradigm, and producing second-class applications as a result, then of course, “shit goes in, and shit comes out.” But a framework in the right hands used to solve the right problems can really help development, especially when it has to work across both mobile + web at launch.</p>
<p>I’m personally a huge fan of frameworks as they abstract the mess away from developers. Our OpenTok thesis is that we worry about the details so that our partners don’t have to. Instead they build really great applications that take advantage of a live-video platform without signing up for the hassle that usually comes with one.</p>
<p><strong>3) Regardless of the target audience &#8211; mobile + web will both be part of the solution</strong><br />
One of the questions from the audience was about whether our discussions over the course of the hour applied equally to enterprise as well as consumer. At TokBox we’ve learned over the last two years of the OpenTok platform that solutions need to exist wherever the users are.</p>
<p>Doing a customer support app? People may want to call in from a website, a native app, or from the phone.</p>
<p>Heading to the doctor’s office remotely? Requiring patients to buy an iPad would make the solution impossible for most doctors, but having a solution that works as long as the patient has a web connection opens this door.</p>
<p>Mobile + Web is not a consumer only phenomenon, though the headlines are dominated by these types of products. The truth is that mobile + web is the new paradigm in which all products are being built.</p>
<p>I wanted to quickly thank Lisa Oshima who was the moderator of our panel, and just say again how much fun I had. I’d love to hear more about where you think mobile + web development is going so please comment or email me at <a href="mailto:melih@tokbox.com">melih@tokbox.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/what-i-learned-on-my-cross-platform-development-panel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What the CU-RTC-Web vs. WebRTC debate means for developers</title>
		<link>http://www.tokbox.com/blog/what-the-cu-rtc-web-vs-webrtc-debate-means-for-developers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-the-cu-rtc-web-vs-webrtc-debate-means-for-developers</link>
		<comments>http://www.tokbox.com/blog/what-the-cu-rtc-web-vs-webrtc-debate-means-for-developers/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 22:46:33 +0000</pubDate>
		<dc:creator>Ben Pedrick</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Industry News]]></category>
		<category><![CDATA[OpenTok on WebRTC]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5542</guid>
		<description><![CDATA[About six months ago, Microsoft released an alternative proposal to the W3C WebRTC 1.0 Working Draft[2], dubbed CU-RTC-Web[1]. Like all W3C groups, the WebRTC Working Group enlists membership from a majority of the industry, including names like Nokia, Cisco, Google, and Mozilla. The most important question raised by the Microsoft proposal is how the Working [...]]]></description>
				<content:encoded><![CDATA[<p>About six months ago, Microsoft released an alternative proposal to the W3C WebRTC 1.0 Working Draft<a href="http://dev.w3.org/2011/webrtc/editor/webrtc.html">[2]</a>, dubbed CU-RTC-Web<a href="http://blogs.msdn.com/b/interoperability/archive/2012/07/28/customizable-ubiquitous-real-time-communication-over-the-web-cu-rtc-web.aspx">[1]</a>. Like all W3C groups, the WebRTC Working Group enlists membership from a majority of the industry, including names like Nokia, Cisco, Google, and Mozilla. The most important question raised by the Microsoft proposal is how the Working Group would react to criticism of its draft proposal, and whether Microsoft would accept the published APIs of the Working Group, even if CU-RTC-Web is not adopted. So what exactly does this mean for the development community?</p>
<p>The Microsoft draft outlines a low-level API that allows developers more direct access to the underlying network and media delivery components. It exposes objects representing network sockets and gives explicit application control over the media transport<a href="http://en.wikipedia.org/wiki/Real-time_Transport_Protocol">[3]</a>. In contrast, the WebRTC API abstracts these details with a text-based interface that passes encoded strings between the two participants in the call. With the WebRTC draft, developers are responsible for passing the strings between communicating browsers, but not explicitly configuring media transport for a video chat.</p>
<p><span id="more-5542"></span></p>
<p>In terms of functionality and interoperability, these two approaches are equivalent. The text strings used by the WebRTC API are formatted according to the Session Description Protocol (SDP) <a href="http://en.wikipedia.org/wiki/Session_Description_Protocol">[4]</a>. SDP was initially developed for setting up SIP and VoIP phone calls, and contains all the configuration needed for two parties to initiate a call. CU-RTC-Web argues that SDP is not appropriate for use in a Web API, and that the limitation of endpoints that understand SDP is too prohibitive. As a result, the bulk of the difference between the two drafts is that CU-RTC-Web re-imagines the functionality of SDP in JavaScript.</p>
<p>While it is fairly straightforward to translate between the WebRTC 1.0 use of SDP and the equivalent CU-RTC-Web JavaScript interface definitions, there is an additional hurdle that would prevent interoperability. There is an ongoing discussion about required video codecs, focused on the choice between competing video codec specifications, H.264 and VP8. H.264 is used by default for YouTube and iTunes video content. Many modern mobile devices also offer native H.264 processing. However, many in the W3C Working Group have raised concern that the patents on H.264 are too restrictive to be used as a core Web technology. As an alternative, Google offers the VP8 codec, which was purchased in 2010 and relicensed as free-to-use under Creative Commons Attribution 3.0. Right now, Firefox and Chrome are using VP8 for WebRTC support. Microsoft has not yet committed its browser to a video format. Until browser vendors converge on this decision, the cost of interoperability will remain prohibitive for most web application developers.</p>
<p>Shortly after Microsoft announced CU-RTC-Web, the W3C Working Group voted on whether to incorporate the alternative ideas from the Microsoft proposal. The Working Group decided to continue using SDP to configure media transport<a href="http://lists.w3.org/Archives/Public/public-webrtc/2012Sep/0098.html">[5]</a>. Microsoft is continuing forward with CU-RTC-Web, and recently released a demo using the proposed API<a href="http://blogs.msdn.com/b/interoperability/archive/2013/01/17/ms-open-tech-publishes-html5-labs-prototype-of-a-customizable-ubiquitous-real-time-communication-over-the-web-api-proposal.aspx">[6]</a>.</p>
<p>As far as web developers are concerned, this is both good news and bad. While it appears that face-to-face communication will be supported in all browsers, they may not work together seamlessly. For OpenTok users, there’s no need to worry. We will continue to offer a consistent API that bridges the technical gaps left behind by the standards development process. OpenTok on WebRTC will work across all browsers and will tackle interoperability issues of today, and tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/what-the-cu-rtc-web-vs-webrtc-debate-means-for-developers/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Parse has OpenTok iOS SDK&#8217;s back(end), so you don&#8217;t have to</title>
		<link>http://www.tokbox.com/blog/parse-has-opentok-ios-sdks-backend-so-you-dont-have-to/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=parse-has-opentok-ios-sdks-backend-so-you-dont-have-to</link>
		<comments>http://www.tokbox.com/blog/parse-has-opentok-ios-sdks-backend-so-you-dont-have-to/#comments</comments>
		<pubDate>Wed, 19 Dec 2012 11:29:04 +0000</pubDate>
		<dc:creator>Ankur Oberoi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5425</guid>
		<description><![CDATA[Developing an iOS App itself is a huge undertaking: you want your product to be beautiful, interactive, and functional. That&#8217;s why Parse makes so much sense, it helps you avoid writing a backend server to power your App by giving you a data store and providing the most basic web services. These days many web [...]]]></description>
				<content:encoded><![CDATA[<p>Developing an iOS App itself is a huge undertaking: you want your product to be beautiful, interactive, and functional. That&#8217;s why <a href="http://www.parse.com">Parse</a> makes so much sense, it helps you avoid writing a backend server to power your App by giving you a data store and providing the most basic web services. These days many web services are incredibly powerful and help developers do really amazing things, like OpenTok, but they are targeted at having a backend. That&#8217;s where <a href="http://blog.parse.com/2012/09/11/welcoming-cloud-code-to-the-parse-family/">Parse Cloud Code</a> comes in: it gives developers the ability to leverage the best of a back-end server in the path of least resistance.</p>
<p><span id="more-5425"></span></p>
<p><strong>TL;DR:</strong> Upload the code from <a href="https://github.com/aoberoi/OpenTok-Parse">this repo</a> into your Parse Cloud Code application. Include it into your own script (<a href="https://github.com/aoberoi/OpenTok-Parse/blob/master/opentok-example.js">here&#8217;s an example</a>). Now you can create Sessions, generate Tokens, and more right from your own iOS (or any Parse powered) App by calling your cloud functions right from your client code (<a href="https://github.com/aoberoi/Broadcasts/blob/end/iOS/Broadcasts/BroadcastViewController.m#L118-L126">another example</a>).</p>
<h1>A few words about Security</h1>
<p>OpenTok uses an API Key/Secret mechanism to authenticate a developer&#8217;s server-side requests when performing actions like <a href="http://www.tokbox.com/opentok/api/tools/js/documentation/overview/session_creation.html">making a new Session</a>. The Secret is also used to sign data that you want to store in a <a href="http://www.tokbox.com/opentok/api/tools/js/documentation/overview/token_creation.html">Token</a>. What you <strong>don&#8217;t want to do</strong> is include that Secret in your client side App, whether it be Javascript for a web App or an iOS App. This is important because there are real costs that come from a stream being published in your sessions with your API Key, you wouldn&#8217;t want to be picking up a malicious person&#8217;s minutes tab.</p>
<p>Parse has <a href="https://www.parse.com/docs/ios_guide#users/iOS">built-in authentication and authorization mechanisms</a> that really come in handy here. As a developer, you get to decide how to handle login (maybe you want to use Twitter or Facebook or just plain email/password) to authenticate your users. Then you can use ACLs (Access Control Lists) to define what users are allowed to do (read public data, write private data, identify as part of a group, etc); this is authorization. Or maybe your application isn&#8217;t as intense and you are cool with simple anonymous users with all of the data being publicly readable and writable. The choice is yours, you know your needs the best, and thats the important part. We can piggyback off of these mechanisms to help you describe exactly who can make OpenTok Sessions, and to choose what data (like the Role) goes into their Tokens. Poof! <strong>You now have a solid security story behind your App.</strong></p>
<h1>Our Example App: Broadcasts</h1>
<p>I&#8217;m going to take you through building an example App called Broadcasts to help illustrate how to set up an integration for yourself. The goal for Broadcasts is pretty simple, we want an App that lets any user start a Broadcast and lets any of the other users of the App watch. When a certain user creates a Broadcast, only that user can Publish video to it, and the rest can subscribe (this adds a little bit of authorization logic to our example).</p>
<p>There still are two parts to Broadcasts, the iOS code and the server-side code. The main difference here is that the server code is easy to write and deploy because its just a few functions using the existing Parse objects in the App, and I&#8217;ll show you how to write them.</p>
<p>You need to have an <a href="https://dashboard.tokbox.com/">OpenTok Account</a> for an API Key and Secret, and a <a href="https://parse.com/apps/new">Parse Application</a> (call it Broadcasts) for an Application ID and Client Key. Let&#8217;s get started.</p>
<p><strong>Setting Up:</strong> Let&#8217;s first set up Cloud Code for your App by installing the command line tool and creating a new directory to hold the project (<a href="https://www.parse.com/docs/cloud_code_guide">more detailed instructions</a>):</p>
<script src="https://gist.github.com/4329703.js?file=setting_up.txt"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p>Now <code>parse/cloud/main.js</code> is the file we will write our functions within. But before we do that we need to pull in the OpenTok library that I&#8217;ve provided. Copy the contents of <a href="https://github.com/aoberoi/OpenTok-Parse">this repository</a> into a new directory called <code>opentok</code> so that you now have the directory layout as seen below:</p>
<script src="https://gist.github.com/4329703.js?file=added_opentok_library.txt"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p><strong>Writing our Cloud Code:</strong> Now we&#8217;re going to create a few functions inside <code>main.js</code>. This code is customized to how we want Broadcasts to work. I&#8217;ve decided beforehand that the App contains objects of the class Broadcast that have two important properties: <code>sessionId</code> and <code>owner</code>. Note that I&#8217;m not calling it a Session; I&#8217;ve assigned it a name that is meaningful for the logic of this App (Broadcast) and then referenced an OpenTok Session with its <code>sessionId</code> property. The <code>owner</code> property is a <a href="https://www.parse.com/docs/js/symbols/Parse.User.html">Parse.User</a> object and helps us figure out who is <strong>authorized</strong> to publish to the Broadcast. Use the code below and substitute your OpenTok API Key and Secret:</p>
<script src="https://gist.github.com/4329703.js?file=main.js"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p>The comments in the code above should help you understand what&#8217;s going on. You are not limited to follow the exact same logic, all that I&#8217;ve done is use the <a href="https://www.parse.com/docs/js/">Parse JavaScript API</a> to describe how I want to handle creating my Sessions (before a Broadcast object is saved) and generating my Tokens (when I call the function). Lets deploy it:</p>
<script src="https://gist.github.com/4329703.js?file=deploy.txt"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p>Server-side, done.</p>
<p><strong>Setting iOS Up:</strong> Now we just hook the backend up to the iOS App. I&#8217;ve already provided a <a href="https://github.com/aoberoi/Broadcasts/tree/start/iOS">shell of the Broadcasts App</a> for you. Download it into the iOS directory so your directory structure is as below:</p>
<script src="https://gist.github.com/4329703.js?file=added_ios_shell.txt"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p>The first thing you need to do is to add your OpenTok API Key, Parse Application ID, and Parse Client Key to the <a href="https://github.com/aoberoi/Broadcasts/blob/start/iOS/Broadcasts/Constants-sample.h">iOS/Broadcasts/Constants-sample.h</a> file and then rename it to Constants.h. Now open Broadcasts.xcodeproj in Xcode. If you run the App now, you will see that you can create a Broadcast by tapping the &#8216;+&#8217; in the top right, naming it, and hitting done. If you then select that row, you will go into that Broadcast but nothing will happen, there is a Label at the bottom that says we are Disconnected from OpenTok.</p>
<p><strong>Sessions:</strong> You may have not realized, but this part is already done. When a new Broadcast gets saved, the beforeSave function we created in the Cloud Code should run and attach a sessionId property to each Broadcast object. Use the <a href="https://parse.com/apps/broadcasts/collections">Parse Data Explorer</a> to confirm this.</p>
<p><strong>Tokens:</strong> There are two pieces we need to correctly generate a token: owners and calling the <code>getBroadcastToken</code> Cloud function</p>
<p style="padding-left: 30px;"><strong>Owners</strong>: In the shell, the Broadcast object has no concept of an owner. We will be creating anonymous users through Parse so that every user has some sort of identity, and then assign a Broadcast&#8217;s owner when a new one is saved. Then we will use that information to help display which Broadcasts can be published to by the current user in the Table View. Lastly, we will use that owner information to decide whether we should publish or subscribe when we have opened a particular Broadcast. Follow the code examples below.</p>
<script src="https://gist.github.com/4329703.js?file=BroadcastsAppDelegate.m"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p style="padding-left: 30px;">Add Line 9 above to make sure an anonymous user is created.</p>
<script src="https://gist.github.com/4329703.js?file=BroadcastsCreationViewController.m"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p style="padding-left: 30px;">Add Lines 9-14 above to add an owner property to new Broadcasts before they are saved, and specify that they are publicly readable but only writable by the owner.</p>
<script src="https://gist.github.com/4329703.js?file=BroadcastTableViewController.m"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p style="padding-left: 30px;">Edit the line matching line 8 to enable a ★ icon next to the Broadcasts in the Table that is owned by the current user.</p>
<script src="https://gist.github.com/4329703.js?file=owner-BroadcastViewController.m"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p style="padding-left: 30px;">Create the method on lines 3-5 as a helper to find out of the current Broadcast is owned by the current user. Then use that method in the if statements that wrap the code on lines 12-15 and 23-25.</p>
<p style="padding-left: 30px;"><strong>Calling getBroadcastToken in the Cloud:</strong> The last part is to call our Cloud Code function, which returns asynchronously, and then we use the result to finally connect to the OpenTok session.</p>
<script src="https://gist.github.com/4329703.js?file=function-BroadcastViewController.m"></script><noscript><p>View the code on <a href="https://gist.github.com/4329703">Gist</a>.</p></noscript>
<p style="padding-left: 30px;">Add the method call on lines 11-18 which contains a block that connects to the Session.</p>
<p><strong>Build and Run:</strong> If all went well, you should be able to Run and play with the completed Broadcasts App. If you have any problems you can compare with the <a href="https://github.com/aoberoi/Broadcasts">completed version of the App</a>.</p>
<h1>But wait, there&#8217;s more&#8230;</h1>
<p>Why limit ourselves to using Parse for iOS Apps? You can also use their <a href="https://parse.com/docs/js_guide">JavaScript API</a> to save you the trouble of writing a backend for your web Apps, too. With the security model benefits I highlighted before, that might not be such a bad idea after all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/parse-has-opentok-ios-sdks-backend-so-you-dont-have-to/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>OpenTok for Mobile: now on Android OS</title>
		<link>http://www.tokbox.com/blog/opentok-for-android/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=opentok-for-android</link>
		<comments>http://www.tokbox.com/blog/opentok-for-android/#comments</comments>
		<pubDate>Thu, 15 Nov 2012 18:56:58 +0000</pubDate>
		<dc:creator>Charley Robinson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[New Products & Features]]></category>
		<category><![CDATA[OpenTok API]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5179</guid>
		<description><![CDATA[Nearly 7 months ago, we publicly announced that the OpenTok API would extend its reach to native mobile application developers by publishing the OpenTok iOS SDK. In the time since, we have tightened the performance of the SDK runtime for iOS devices and spent a good deal of time learning about how best to deliver [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-5194" src="http://www.tokbox.com/blog/wp-content/uploads/2012/10/img_email_android_10112012-jpeg.jpg" alt="" width="155" height="124" /></p>
<p>Nearly 7 months ago, we publicly announced that the OpenTok API would extend its reach to native mobile application developers by publishing the OpenTok iOS SDK. In the time since, we have tightened the performance of the SDK runtime for iOS devices and spent a good deal of time learning about how best to deliver video to the mobile platform. While iOS commands a large portion of the mobile app market, it is intuitive that we should build similar SDKs for other popular platforms outside of the browser. It is a pleasure to announce that we are developing the OpenTok Android SDK, to allow native Android developers to bring live video chat to their apps.</p>
<p><span id="more-5179"></span></p>
<p>The Android OS opens a wide set of devices and system API versions to with which to work. While we do not expect to target the entire Android device landscape, most mobile devices built in the past two years that run Android OS should be able to support video chat in a native app. As we learn the baseline of devices and OS versions that developers wish to target, we will work to ensure a quality experience with the OpenTok API for the broadest set of mobile devices possible.</p>
<p>A demo application using the OpenTok Android SDK is <a href="https://github.com/opentok/Android-Hello-World">available on GitHub</a>, which developers can download and run on their Android devices today. The standalone SDK is <a href="https://github.com/opentok/opentok-android-sdk">hosted separately</a>. We&#8217;re collecting data on which devices work, so go ahead and give it a spin, then <a href="https://github.com/opentok/opentok-android-sdk/issues">let us know</a> how it went. Finally, <a href="https://docs.google.com/a/tokbox.com/spreadsheet/viewform?formkey=dHpTTC1GMmhxRFFRcnczUVhvM2c3NHc6MQ">tell us about your app</a>! We are interested in what kind of application you&#8217;re working on, devices you&#8217;re interested in getting video chat to work with, and Android OS API versions those devices are able to support.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/opentok-for-android/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>OpenTok on WebRTC for iOS raises the bar</title>
		<link>http://www.tokbox.com/blog/opentok-webrtc-for-ios-raises-the-bar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=opentok-webrtc-for-ios-raises-the-bar</link>
		<comments>http://www.tokbox.com/blog/opentok-webrtc-for-ios-raises-the-bar/#comments</comments>
		<pubDate>Mon, 12 Nov 2012 20:10:18 +0000</pubDate>
		<dc:creator>Don</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[iOS SDK]]></category>
		<category><![CDATA[New Products & Features]]></category>
		<category><![CDATA[OpenTok on WebRTC]]></category>

		<guid isPermaLink="false">http://www.tokbox.com/blog/?p=5176</guid>
		<description><![CDATA[A new standard is making its way into web browsers and other clients around the world over the next few months that will likely change the way that we communicate with each other. WebRTC (Real-Time Communication) is a set of protocols and technologies that have been proposed to allow modern web browsers (currently Chrome 23 has [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.tokbox.com/blog/wp-content/uploads/2012/11/img_email_iOSWebRTC_10112012.png"><img class="size-full wp-image-5287 alignleft" title="img_email_iOSWebRTC_10112012" src="http://www.tokbox.com/blog/wp-content/uploads/2012/11/img_email_iOSWebRTC_10112012.png" alt="" width="250" height="200" /></a>A new <a href="http://dev.w3.org/2011/webrtc/editor/webrtc.html" target="_blank">standard</a> is making its way into web browsers and other clients around the world over the next few months that will likely change the way that we communicate with each other. WebRTC (Real-Time Communication) is a set of protocols and technologies that have been proposed to allow modern web browsers (currently Chrome 23 has support) to embed live audio/video communications without a plugin like flash.</p>
<p>Over the last few months we&#8217;ve been hard at work on a new variant to our iOS Video SDK, which we&#8217;re dubbing the <a href="https://github.com/opentok/opentok-ios-sdk-webrtc" target="_blank">OpenTok WebRTC for iOS SDK</a>.</p>
<p>In the world of video WebRTC is a really big deal. The quality increase we&#8217;ve seen in WebRTC video versus our current Flash SDK is pretty phenomenal. For instance, video latency is typically less than 250ms under most network conditions. This is important to maintain a flowing conversation and avoid talking over other people on the call. Video quality is also noticeably better. The framerate and resolution are higher and adjusted dynamically over time to take advantage of the bandwidth and device capabilities that&#8217;s available between the clients.</p>
<p><span id="more-5176"></span>We&#8217;ve seen some pretty exciting results under typical network conditions (broadband WiFi or 4G). The latency (or lack thereof) is instantly noticeable. The days of talking over people due to delays in video transmission are going away.</p>
<p>In addition to these improved stats we&#8217;re seeing with our WebRTC implementation, we&#8217;re getting a couple additional heavily requested featured implemented in our new iOS SDK. This new SDK introduces support for Peer-to-Peer calls and orientation support with mobile clients. This new Framework will allow you to make video calls between iOS devices and with our new (v2.0) JavaScript SDK in the browser; and it&#8217;s fully WebRTC compliant!</p>
<p>When we started looking into implementing peer-to-peer video on our iOS SDK, we were faced with some challenges. One of the big features that sets our platform aside from other video products today is the ability to interoperate between web browsers and mobile clients. We wanted to keep this functionality, but having it work with our current JS/Flash offering wasn&#8217;t a viable solution. We started working on a WebRTC implementation of our API back in July for Chrome and this began to open some doors for us.</p>
<p>Google has been one of the driving forces behind the WebRTC standard. They&#8217;ve made several <a href="http://www.webrtc.org/faq#TOC-Are-the-WebRTC-components-from-Google-s-acquisition-of-Global-IP-Solutions-">acquisitions</a> in order to leverage some key technologies in the standard. In doing this, Google has also open sourced the WebRTC source code. We decided this may be the best place to start when adding peer-to-peer video to iOS. Not only was it already implemented in Chrome &#8211; it was also being kept up to date for us by Google and the open source community.</p>
<p>That being said, this wasn&#8217;t exactly easy. We faced many challenges when we decided to get WebRTC running, let alone compiled, on iOS devices. The challenge was getting that very large codebase, which was not intended to run on mobile devices (at least yet) to compile for the iOS platform. This required modifying the WebRTC codebase fairly extensively to enable specific code paths that didn&#8217;t expect the iOS platform to be executing. Parts of the codebase, including an iOS implementation of the capture pipeline (getting frames from the camera down to the VP8 encoder) had to be built from scratch. Once we got it running, we faced some problems keeping it compatible with the version in Chrome (it&#8217;s a pretty rapidly changing codebase). For instance, the implementation of PeerConnection has changed (in a breaking fashion) at least a handful of times since we began this journey back in July.</p>
<p>Once we got it stable and started doing testing, we also realized that this SDK was not going to be able to run on older devices. The key reason is because the current iteration of WebRTC uses a different video codec than we use in our original iOS SDK (VP8 vs H.264). What this meant for us is that we couldn&#8217;t rely on hardware accelerated video encoding for this new SDK out of the box. All video encoding and decoding is now taking place in software running on the CPU. This unfortunately is <a href="http://www.zdnet.com/google-wants-webm-not-h-264-for-html5-video-chat-7000001896/">out of our control</a> at the browser implementation. However, with our iOS SDK, we have the ability to dig into the codebase and modify it to our liking.</p>
<p>Adding H.264 support between iOS devices is an effort we have already begun. Once completed, we&#8217;ll be able to rely on hardware H.264 video encoding between iOS clients which means the CPU consumption on those devices will go down significantly. At this point in time, we&#8217;re limited to newer, dual-core devices for our WebRTC stack (such as the iPhone 4S, 5, iPad 2, the <em>new</em> iPad and 5th Gen iPod Touch). This is something we&#8217;re very aware of as a pain-point for developers that want to add live video to their iOS apps. We hope that support for older devices (iPhone 3GS and iPhone 4) will come in the future, though.</p>
<p>We&#8217;re excited to release this new SDK (currently a new project on our <a href="https://github.com/opentok/opentok-ios-sdk-webrtc">GitHub</a> page). It&#8217;s yet another option we&#8217;re offering to enable developers around the world to add live video to their iOS applications. This new Framework raises the bar for acceptable video quality and we&#8217;re looking forward to seeing even more use-cases take advantage of what it has to offer. Dive right into our <a href="http://www.tokbox.com/opentok/ios/docs/index.html">docs</a> to get started. You can be up and running your own version of FaceTime in less 30 minutes.</p>
<p><strong>Related Posts:</strong></p>
<p><strong></strong><a href="http://www.tokbox.com/blog/opentok-on-webrtc-offering-the-technology-of-tomorrow-today/">OpenTok on WebRTC: Offering the technology of tomorrow, today</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tokbox.com/blog/opentok-webrtc-for-ios-raises-the-bar/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
