<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>BlackBerry Developer Blog &#187; Cascades</title>
	<atom:link href="http://devblog.blackberry.com/category/cascades/feed/" rel="self" type="application/rss+xml" />
	<link>http://devblog.blackberry.com</link>
	<description></description>
	<lastBuildDate>Tue, 18 Jun 2013 16:50:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='devblog.blackberry.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/9ef0a66c09615fa946c4179662398878?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>BlackBerry Developer Blog &#187; Cascades</title>
		<link>http://devblog.blackberry.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://devblog.blackberry.com/osd.xml" title="BlackBerry Developer Blog" />
	<atom:link rel='hub' href='http://devblog.blackberry.com/?pushpress=hub'/>
		<item>
		<title>Qt China Developer Day 2013</title>
		<link>http://devblog.blackberry.com/2013/06/qt-china-developer-day-2013/</link>
		<comments>http://devblog.blackberry.com/2013/06/qt-china-developer-day-2013/#comments</comments>
		<pubDate>Tue, 18 Jun 2013 16:50:19 +0000</pubDate>
		<dc:creator>Jiazi Xu</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[china]]></category>
		<category><![CDATA[Beijing]]></category>
		<category><![CDATA[Qt Developer Day]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15362</guid>
		<description><![CDATA[Here&#8217;s a guest post from Sha Sa &#8211; Ed. On June 6th, more than 500 developers across China attended the long-awaited Qt China Developer Day 2013 in Beijing. It’s extremely exciting to see how familiar Qt developers are with BlackBerry 10 platform. As soon as registration started, the BlackBerry booth was flooded with developers! Mike [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15362&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><em>Here&#8217;s a guest post from Sha Sa &#8211; Ed.</em></p>
<p>On June 6<sup>th</sup>, more than 500 developers across China attended the long-awaited <a href="http://qt.epi.tietokoura.com/cn/China/Qt-Developer-Day-China-2013/#.Ubq_NudpPW0">Qt China Developer Day 2013</a> in Beijing. It’s extremely exciting to see how familiar Qt developers are with BlackBerry 10 platform. As soon as registration started, the BlackBerry booth was flooded with developers!</p>
<p style="text-align:left;"><img class="aligncenter size-full wp-image-15363" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/06/chinaqt1-e1371559161326.jpg?w=600&#038;h=400" width="600" height="400" /></p>
<p style="text-align:left;">Mike Zhou from our Developer Relations team presented on overview of the recent developments in Qt on BlackBerry 10 and discussed future plans. Coming all the way from Europe, our very own Qt Expert Vladimir Minenko also joined Mike on stage to co-present the technical session on “Developing with Qt for BlackBerry 10”.  The room was packed to the brim with eager developers wanting to learn how to build a <a href="http://developer.blackberry.com/cascades/" target="_blank">BlackBerry 10 Cascades</a> app using Qt.</p>
<p style="text-align:left;"><img class="aligncenter size-full wp-image-15364" alt="chinaqt2" src="http://rimdevblog.files.wordpress.com/2013/06/chinaqt2-e1371559217178.jpg?w=600&#038;h=400" width="600" height="400" /></p>
<p style="text-align:left;">Vlad and Mike showcased really cool Qt apps on BlackBerry 10 smartphones developed with Qt 5.0. Not only that, they showed the developers how easy it was by porting apps <b><i>live on stage</i></b>! Think converting from Qt to a BlackBerry 10 native app would be hard? Not at all when you joined the onsite coding demo session on how to easily convert their existing Qt app to Cascades based applications.  Developers were very excited about BlackBerry 10 supporting the Qt framework and how easy the porting process is.</p>
<p>When Mike and Vlad announced “Bring your Qt app source code to BlackBerry booth to win a BlackBerry smartphone” challenge, the developers went wild! So they came forward, and so easily, they ported into BlackBerry 10.</p>
<div id="attachment_15365" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-15365" alt="chinaqt3" src="http://rimdevblog.files.wordpress.com/2013/06/chinaqt3-e1371559252753.jpg?w=600&#038;h=338" width="600" height="338" /><p class="wp-caption-text">Jonah Lin, BlackBerry Elite from China joined BlackBerry experts on stage to showcase 2 of his apps developed on Qt, and also shared his experience on commercialization and internalization.</p></div>
<p style="text-align:center;"><img class="aligncenter size-full wp-image-15366" alt="chinaqt4" src="http://rimdevblog.files.wordpress.com/2013/06/chinaqt4-e1371559316241.jpg?w=600&#038;h=338" width="600" height="338" /></p>
<div>
<p>QNX also showed their support to Qt onsite! Howard Zhang, the QNX Expert in China hosted the QNX Corner with hardware demos at the booth, sharing insights on QNX technology and future trends, attracting his fair share of keen and excited developers!</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15362/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15362&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/06/qt-china-developer-day-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/262099594d8c258beb619f2a5bedcb61?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jiazeex</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/chinaqt1-e1371559161326.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/chinaqt2-e1371559217178.jpg" medium="image">
			<media:title type="html">chinaqt2</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/chinaqt3-e1371559252753.jpg" medium="image">
			<media:title type="html">chinaqt3</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/chinaqt4-e1371559316241.jpg" medium="image">
			<media:title type="html">chinaqt4</media:title>
		</media:content>
	</item>
		<item>
		<title>Appcelerator Titanium: BlackBerry 10 SDK Update</title>
		<link>http://devblog.blackberry.com/2013/06/appcelerator-blackberry-10-update/</link>
		<comments>http://devblog.blackberry.com/2013/06/appcelerator-blackberry-10-update/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 23:00:37 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Appcelerator]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Titanium]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15357</guid>
		<description><![CDATA[Today I have two huge announcements for all our Appcelerator Titanium developers out there. First, the Appcelerator Titanium SDK is entering version 3.1.1. Second, this release includes integrated support for the BlackBerry 10 Beta SDK! Since the announcement of BlackBerry 10 support in Titanium, there have been huge strides made to get as many Titanium [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15357&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Today I have two huge announcements for all our <a href="http://www.appcelerator.com/" target="_blank">Appcelerator Titanium</a> developers out there. First, the Appcelerator Titanium SDK is entering version 3.1.1. Second, this release includes integrated support for the BlackBerry 10 Beta SDK! Since the <a href="http://devblog.blackberry.com/2012/12/appcelerator-titanium-blackberry-10/">announcement of BlackBerry 10 support in Titanium</a>, there have been huge strides made to get as many Titanium APIs supported on BlackBerry 10 as possible and today marks a major step in that direction, getting just inches away from the final GA release. Anyone interested in taking a look at just how far we&#8217;ve come can take a look at the <a href="https://github.com/appcelerator/titanium_mobile_blackberry/blob/master/CHANGELOG.md">change log</a> to see what a remarkable feat has been accomplished by the Appcelerator developers in just a few short months.</p>
<p><img class="aligncenter size-full wp-image-15358" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/06/appcelerator-e1371498875466.png?w=600&#038;h=475" width="600" height="475" /></p>
<p>Up to this release, the BlackBerry 10 SDK was supported using a pre-release version of the Titanium SDK which added a both few extra steps and downloads in order to start testing/building your application for BlackBerry. Now the BlackBerry 10 SDK is officially supported in the public version of the Titanium SDK 3.1.1 and can be installed just like any of the other supported platform SDKs.</p>
<p>For those of you familiar with Appcelerator and the Titanium platform, this release brings the BlackBerry 10 SDK to about 90% coverage of the core Titanium APIs, including supporting the Alloy framework. This is a great time to start taking your existing applications and testing to see how great they look, feel and run on the BlackBerry 10 platform. The way Titanium builds for BlackBerry is using the Cascades framework, meaning you will receive native, intuitive applications with solid and fluent user experience out of the box. With just a few keystrokes you can have your existing application compiled and tested on a BlackBerry 10 device or simulator, then just a few more steps to get it signed and uploaded to BlackBerry World.</p>
<p><img class="aligncenter size-full wp-image-15359" alt="appcelerator2" src="http://rimdevblog.files.wordpress.com/2013/06/appcelerator2-e1371498950694.png?w=600&#038;h=295" width="600" height="295" /></p>
<p>On the other hand, if you have heard of Appcelerator but are not really sure what they offer, allow me to break it down very simply: Appcelerator’s Titanium IDE allows you to create full featured cross-platform applications using JavaScript. Titanium also recently added support for a new UI framework dubbed “Alloy” which allows developers to define all application UI using a mixture of XML and CSS. “JavaScript” and “XML” may make Titanium sound like it creates web applications, however the applications are actually bundled with a JavaScript engine that interprets the code and displays it in the native UI of the platform for which the application was compiled. The result is an application that can be created very quickly to support multiple platforms (ex BlackBerry 10, iOS, Android) but with the performance, look and feel of a native application.</p>
<p>Existing Titanium developers can get the 3.1.1 SDK update which includes the BlackBerry 10 SDK using the Titanium SDK’s built-in update mechanism. Anyone that needs to download the full IDE can grab it from <a href="http://www.appcelerator.com/developers/" target="_blank">here</a>.</p>
<p>For more details on all that 3.1.1 has to offer please check out this <a href="http://developer.appcelerator.com/blog/?p=21251" target="_blank">Appcelerator blog post</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15357/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15357&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/06/appcelerator-blackberry-10-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/appcelerator-e1371498875466.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/appcelerator2-e1371498950694.png" medium="image">
			<media:title type="html">appcelerator2</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry 10.2 SDK Beta Available Now!</title>
		<link>http://devblog.blackberry.com/2013/06/blackberry-10-2-sdk-beta/</link>
		<comments>http://devblog.blackberry.com/2013/06/blackberry-10-2-sdk-beta/#comments</comments>
		<pubDate>Thu, 13 Jun 2013 14:02:13 +0000</pubDate>
		<dc:creator>Tim N.</dc:creator>
				<category><![CDATA[Adobe AIR Development]]></category>
		<category><![CDATA[Android Development]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[adobe air]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[BlackBerry 10.2]]></category>
		<category><![CDATA[BlackBerry 10.2 SDK]]></category>
		<category><![CDATA[BlackBerry Runtime for Android Apps]]></category>
		<category><![CDATA[roadmap]]></category>
		<category><![CDATA[roadmaps]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15338</guid>
		<description><![CDATA[Back at BlackBerry Jam Americas in May, we talked about the BlackBerry 10.2 SDK that would be available in June. Well, it’s June and we now have brand new updates available for you to experiment and build with. These updates include additions to the BlackBerry 10 Native SDK  and both our Android and Adobe AIR run-times. We have [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15338&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Back at <a href="http://www.blackberryjamconference.com/americas" target="_blank">BlackBerry Jam Americas</a> in May, we talked about the BlackBerry 10.2 SDK that would be available in June. Well, it’s June and we now have brand new updates available for you to experiment and build with. These updates include additions to the <a href="https://developer.blackberry.com/cascades/download/beta/" target="_blank">BlackBerry 10 Native SDK</a>  and both our <a href="http://developer.blackberry.com/android/" target="_blank">Android</a> and <a href="http://developer.blackberry.com/air/" target="_blank">Adobe AIR</a> run-times. We have also been up-streaming core <a href="http://developer.blackberry.com/html5/" target="_blank">HTML5</a> BlackBerry 10 support into Apache Cordova and it should be hitting an official Cordova PhoneGap release very soon!</p>
<p>The updates to the run-times have been ones that have had a lot of anticipation. Adobe AIR 3.5 brings with it <a href="http://www.adobe.com/devnet/flashplayer/stage3d.html" target="_blank">Stage3D</a> for accelerated OpenGL graphics and the Android run-time upgrade brings it up to Android 4.2 (Jelly Bean) compatibility. As with any beta, this is a work in progress as we work our way towards the gold release of the BlackBerry 10.2 SDK. Known issues will be outlined in the release notes for each run-time.</p>
<p>There are also BlackBerry 10.2 SDK OS updates for BlackBerry 10 Dev Alpha B and C testing devices as well as the BlackBerry 10.2 SDK OS updates available for those who have BlackBerry Z10 and BlackBerry Q10 smartphones. All updates can be performed via the autoloader tool. Again, this is an SDK OS beta that is a trimmed down version of the BlackBerry 10.2 Operating System and is meant to provide a testing environment for you to try out the new SDK and experiment with the added capabilities that have been released. We have also released BlackBerry 10.2 SDK OS updates for the simulator. For this first release, Android 4.2 Jelly Bean testing is not yet supported in the simulator.</p>
<p>If you run into any issues or find bugs, please be sure to report them in the forums and the <a href="https://www.blackberry.com/jira/secure/Dashboard.jspa" target="_blank">Developer Issue Tracker</a> to make sure that we have them logged and ensure they are fixed for the BlackBerry 10.2 Gold SDK.We value your feedback as we continue to build the best mobile platform for our users.</p>
<p>There’s a bunch of new functionality that’s available in the beta and I encourage you to check out the roadmap pages and release notes for your favorite run-time to find out what all has been made available in this release. We have a lot more functionality scheduled to arrive in the BlackBerry 10.2 Gold SDK release as well, so I encourage you to check back often with the roadmap pages to find out more on timing and details.</p>
<p>So with all that said… grab the latest SDKs and development OS and have some fun coding!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15338/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15338&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/06/blackberry-10-2-sdk-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/3939390650b170ba28e9bf3c53d397ad?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">timneil1</media:title>
		</media:content>
	</item>
		<item>
		<title>Easy Facebook Graph API Integration for BlackBerry 10</title>
		<link>http://devblog.blackberry.com/2013/06/facebook-graph-api-blackberry10/</link>
		<comments>http://devblog.blackberry.com/2013/06/facebook-graph-api-blackberry10/#comments</comments>
		<pubDate>Fri, 07 Jun 2013 09:55:18 +0000</pubDate>
		<dc:creator>Erin Rahnenfuehrer</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Graphi API]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15242</guid>
		<description><![CDATA[There are several different options available to Cascades developers who want to integrate their app with Facebook.  The Share Framework allows users to post pictures and status updates  to Facebook directly from any application.  Developers can invoke the native BlackBerry 10 Facebook application from their app in order to show a Facebook profile page.  Or developers [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15242&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-15246" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/06/fc4-e1370355891753.png?w=600&#038;h=328" width="600" height="328" /></p>
<p>There are several different options available to Cascades developers who want to integrate their app with Facebook.  The <a href="https://developer.blackberry.com/cascades/documentation/device_platform/invocation/facebook.html" target="_blank">Share Framework</a> allows users to post pictures and status updates  to Facebook directly from any application.  Developers can <a href="http://devblog.blackberry.com/2013/03/cascades-socialinvocation/" target="_blank">invoke</a> the native BlackBerry 10 Facebook application from their app in order to show a Facebook profile page.  Or developers can use OAuth to interact with the Facebook Graph API to display Facebook data right in their application.</p>
<p>The development team at <a href="http://quickblox.com/developers/Blackberry" target="_blank">QuickBlox</a> has provided an easy way for developers to connect their app to the Facebook Graph API.  The QuickBlox Facebook Connect framework is built upon the<a href="https://github.com/blackberry/bb-cascades-oauth" target="_blank"> public OAuth library</a> contributed by <a href="http://twitter.com/kfow35" target="_blank">Kyle Fowler</a>.  Dozens of Facebook Graph calls are provided, and the framework can be easily extended to add more.  The QuickBlox framework helps developers load a user’s profile and newsfeed, integrate with Facebook Places, create a post, and much more!  Check out the <a href="https://github.com/QuickBlox/BB10-Facebook-Connector" target="_blank">QuickBlox Facebook Connect framework</a> on GitHub, and the <a title="Liverpool Connect official BB10 app powered with QuickBlox" href="http://appworld.blackberry.com/webstore/content/28055657/">Liverpool Connect app for BB10</a> which implements it.<a title="Liverpool Connect official BB10 app powered with QuickBlox" href="http://appworld.blackberry.com/webstore/content/28055657/"><br />
</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15242/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15242&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/06/facebook-graph-api-blackberry10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0432900fe27aa1429d5e6809cd149a3c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erahnen</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/fc4-e1370355891753.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 14: In App Payment</title>
		<link>http://devblog.blackberry.com/2013/06/porting-app-payment/</link>
		<comments>http://devblog.blackberry.com/2013/06/porting-app-payment/#comments</comments>
		<pubDate>Wed, 05 Jun 2013 09:55:58 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[digital goods]]></category>
		<category><![CDATA[payment]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15222</guid>
		<description><![CDATA[Do you have an application built using BlackBerry Java that makes use of the Payment Service APIs? You’ll be happy to know that Cascades support the exact same digital goods types meaning you can provide the same monetization model in BlackBerry 10; you can even use the same digital goods already in your vendor portal. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15222&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://rimdevblog.files.wordpress.com/2013/06/588db54f-6b93-4ff0-8f08-0efa73e9bb26.jpg"><img class="aligncenter size-full wp-image-15226" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/06/588db54f-6b93-4ff0-8f08-0efa73e9bb26.jpg?w=600&#038;h=400" width="600" height="400" /></a></p>
<p>Do you have an application built using BlackBerry Java that makes use of the Payment Service APIs? You’ll be happy to know that Cascades support the exact same digital goods types meaning you can provide the same monetization model in BlackBerry 10; you can even use the same digital goods already in your vendor portal. This means less time planning how to monetize your app and less time creating and managing digital goods giving you more time and freedom to develop the rest of the app or letting you finish a few days earlier.</p>
<p><span id="more-15222"></span></p>
<h1>BlackBerry World Client</h1>
<p>In BlackBerry OS 7 and lower the Payment Service was included as a separate library which was heavily dependent on the version of BlackBerry World that was installed on the device. This meant that your application would need to query what version of BlackBerry World was installed and, if not at the version required by the library, prompt the user to upgrade the client to a newer version.</p>
<p>In BlackBerry 10 the Payment Service libraries are integrated directly into the OS and the tight coupling with the BlackBerry World client has been removed; meaning you only need to worry about developing.</p>
<h1>Vendor Portal</h1>
<p>As mentioned above the same digital goods used for BlackBerry OS 7 app releases can be used against any device/OS including BlackBerry 10. To make use of the existing digital goods you simply need to create a new BlackBerry 10 release that references the SKUs of the existing goods. If you are creating a new app altogether then you only need to create the digital goods in the same manner done for your Java apps:</p>
<p><a href="http://docs.blackberry.com/en/developers/deliverables/47831/1278466.jsp">http://docs.blackberry.com/en/developers/deliverables/47831/1278466.jsp</a></p>
<p>If your BlackBerry Java application has a good user base then I would recommend the above approach, it will allow existing users to download your new BlackBerry 10 version as soon as they upgrade, being visible right in the “My World” section of their BlackBerry World client app when they start up their new BlackBerry 10 device. You will, however, want to upload separate metadata for each platform you are targeting (screenshots, descriptions, keywords etc):</p>
<p><a href="http://devblog.blackberry.com/2012/11/blackberry-app-world-success/">http://devblog.blackberry.com/2012/11/blackberry-app-world-success/</a></p>
<h2>Environment Setup:</h2>
<p>Both BlackBerry OS 7 and 10 require an additional library to be added to the project, the difference is that in BlackBerry 7 you need to download and add the library (JAR) to your project, whereas in BlackBerry 10 you only need to reference the library that is integrated with the SDK and OS meaning less work for you and a library that stays updated as you change SDK versions.</p>
<h3><strong>Java:</strong></h3>
<p>Add the JAR to your project</p>
<p><a href="http://docs.blackberry.com/en/developers/deliverables/40131/Add_Payment_Service_library_to_build_path_1316204_11.jsp">http://docs.blackberry.com/en/developers/deliverables/40131/Add_Payment_Service_library_to_build_path_1316204_11.jsp</a></p>
<h3><strong>Cascades:</strong></h3>
<p>Add the LIB reference to your .PRO file</p>
<p><a href="https://developer.blackberry.com/cascades/documentation/device_platform/paymentservice/selling.html#pat1339516868668">https://developer.blackberry.com/cascades/documentation/device_platform/paymentservice/selling.html#pat1339516868668</a></p>
<h2>Initializing the Payment Engine/Manager:</h2>
<p>The “brains” of the payment service, where all calls are initiated, stems from one object which needs to be instantiated before any further calls can be made. Below are code snippets that show how this instantiation occurs in BlackBerry OS 7 in Java followed by BlackBerry OS 10 using Cascades APIs:</p>
<h3><strong>Java:</strong></h3>
<p>A prerequisite to using the payment service is to verify that the version of BlackBerry World client on the device is at a sufficient level and, if not, prompting for the update to be installed prior to making any payment calls.</p>
<pre>try {
 PaymentEngine.isAppWorldInstalledAndAtCorrectVersion();
} catch (AppWorldUpdateRequired e) {
 PaymentEngine.upDateAppWorld();
 System.exit(0);
}
PaymentEngine engine = PaymentEngine.getInstance();</pre>
<h3><strong>Cascades:</strong></h3>
<p>The payment service in Cascades requires information on which window group the app is using so the payment prompts can be properly drawn overtop.</p>
<pre>bb::platform::PaymentManager *m_paymentManager = new PaymentManager();
 bb::cascades::Application::instance()-&gt;mainWindow()-&gt;groupId();
m_paymentManager-&gt;setWindowGroupId(windowGroupId);</pre>
<p>The PaymentManager lets you define properties that will be displayed to the user in all purchase requests, specifically the application name and the URL of a custom icon if desired.<b></b></p>
<pre>m_paymentManager-&gt;setApplicationName("The Awesome Store");
m_paymentManager-&gt;setApplicationIconUrl(QUrl("http:///mycompany.com/100x100.png"));</pre>
<h3><strong>Test Mode:</strong></h3>
<p>Not available in BBOS</p>
<h3><strong>Cascades:</strong></h3>
<pre>PaymentManager::setConnectionMode(PaymentConnectionMode::Test);</pre>
<h1>Initiating a Purchase</h1>
<h3><strong>Java:</strong></h3>
<pre>PurchaseArgumentsBuilder arguments = new PurchaseArgumentsBuilder()
     .withDigitalGoodId( "1234" )
     .withDigitalGoodName( "My Product" )
     .withDigitalGoodSku( "Ab34t2eC" )
     .withPurchasingAppIcon( bitmapIconImageVariable ); 
     .withPurchasingAppName( "My Application" ); 
     .withMetadada( "Extra info for consumable goods" );
 try 
 {
     PurchaseResult result = engine.purchase(arguments.build());
 }
 …</pre>
<h3><strong>Cascades:</strong></h3>
<pre>const PurchaseReply *reply = m_paymentManager-&gt;requestPurchase("1234", "Ab34t2eC", "My Product", "Extra info for consumable goods");
connect(reply, SIGNAL(finished()), SLOT(handlePurchase()));</pre>
<h1>Restoring Past Purchases</h1>
<h3><strong>Java:</strong></h3>
<pre>try
 {
     ExistingPurchasesResult result = engine.getExistingPurchases(false/true);
     Purchase[] resultPurchases = result.getPurchases();
 }
 catch (PaymentException e)
 { 
 }</pre>
<h3><strong>Cascades:</strong></h3>
<pre>const ExistingPurchasesReply *reply = paymentManager-&gt;requestExistingPurchases(false/true);
connect(reply, SIGNAL(finished()), SLOT(handleExistingPurchases()));</pre>
<p>If you happen to be new to C++ and would still like to monetize your Cascades application then you will be happy to know that our Payment Services developers have created a nice sample which takes the bulk of the payment calls needed and exposes then through to QML, allowing you to make payment calls without writing a single line of C++ yourself, just copy the important parts from the sample into your own application. This sample can be gitted from here:</p>
<p><a href="https://github.com/blackberry/Cascades-Samples/tree/master/paymentservice">https://github.com/blackberry/Cascades-Samples/tree/master/paymentservice</a></p>
<p>Of course there are a few more calls available through the Payment Service in both Java and Cascades, but the above set provides a solid baseline for the main functions developers using the Payment Service should be aware of. If there is anything else you would like to know about the Payment Service, or have trouble porting the pieces from Java to Cascades, there are a few great options for support:</p>
<p>1)      Support forums: <a href="http://supportforums.blackberry.com/t5/Payment-Service/bd-p/pay_serv">http://supportforums.blackberry.com/t5/Payment-Service/bd-p/pay_serv</a></p>
<p>2)      BlackBerry Developer Twitter account: <a href="https://twitter.com/BlackBerryDev">@BlackBerryDev</a></p>
<p>3)      Garett B (Developer Relations Payment Service Expert): <a href="https://twitter.com/garettBeuk">@garettBeuk</a></p>
<p>Happy porting!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15222/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15222&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/06/porting-app-payment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/588db54f-6b93-4ff0-8f08-0efa73e9bb26.jpg" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 13: Analytics</title>
		<link>http://devblog.blackberry.com/2013/06/cascades-porting-series-analytics/</link>
		<comments>http://devblog.blackberry.com/2013/06/cascades-porting-series-analytics/#comments</comments>
		<pubDate>Tue, 04 Jun 2013 09:00:50 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[Count.ly]]></category>
		<category><![CDATA[Flurry]]></category>
		<category><![CDATA[porting]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15151</guid>
		<description><![CDATA[This blog is going to take a slight side-step from the theme of the previous articles in the porting series. All previous articles were of a format “this is how it was done on BlackBerry OS 7 and here is how you can do it using BlackBerry 10”, which works great for core APIs and [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15151&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This blog is going to take a slight side-step from the theme of the previous articles in the porting series. All previous articles were of a format “this is how it was done on BlackBerry OS 7 and here is how you can do it using BlackBerry 10”, which works great for core APIs and native services but not when those services don’t exist in the BlackBerry 10 SDK. Allow me to explain: in BlackBerry OS 7 there is an official Analytics Service which is documented and distributed from the BlackBerry site for both Java and WebWorks/HTML5 developers. The SDK and the portal are essentially white-labeled versions of the Webtrends Analytics service, which you may have noticed from the URL used to login to the dashboard:</p>
<p><a href="http://blackberry.webtrends.com/" target="_blank">http://blackberry.webtrends.com</a></p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/analytics1.jpg?w=450" /></p>
<p>This provides a great option for devs that need analytics for only BlackBerry applications (the dashboard was sandboxed to display only BlackBerry provided data) however with the mobile ecosystem bursting at the seams we want to ensure that when moving forward to BlackBerry 10 developers have as much flexibility as possible. “Flexibility” meaning choice of analytics providers as well as the ability to use one dashboard to display data from across multiple platforms; knowing that many BlackBerry 10 developers may also be developing for other platforms in tandem and may have strong preference to a specific provider makes flexibility all the more important. This shift in end goals of an Analytics service for developers also shifts the approach when presenting a solution to the community. The approach that was decided on fits in with the general model of BlackBerry 10 <a href="http://devblog.blackberry.com/2012/12/blackberry-development-101-native/" target="_blank">openness</a>: rather than create an Analytics service specific to BlackBerry 10 we will focus on partnering with existing Analytics services to help them add support for BlackBerry 10 to their offerings.</p>
<p>The partnering approach offers tons of key benefits: Developers can continue using the analytics provider they choose. Any updates made to the SDK at the service level will be immediately available to all users. Analytics from multiple platforms can be visible under a single dashboard. Familiar API calls. There are many more benefits as well, and all while still keeping the application integration as smooth and easy as possible. At BlackBerry Jam I actually added Flurry Analytics to a Cascades application in well <a href="http://active.mediasite.com/mediasite/Play/086049ab-9eb9-4064-bd48-ceb2ea961de9" target="_blank">under 2 minutes</a>.</p>
<p>As you can read from the above synopsis, moving from BlackBerry 7 to BlackBerry 10 there has been an entire shift in how Analytics will be provided. At present there are already options for Cascades, Native and WebWorks/HTML5 developers:</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/analytics2.jpg?w=150" /></p>
<p>100% free industry leading service. Support for C/Native and Cascades application from one SDK.</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/analytics3.jpg?w=150" /></p>
<p>Fully open sourced client and server offerings as well as a hosted solution. Support for Cascades and WebWorks/HTML5.</p>
<p style="text-align:center;"><img alt="" src="http://rimdevblog.files.wordpress.com/2013/05/analytics4.jpg?w=150" /></p>
<p>Localytics is the most recent service to join the list; now officially supporting for WebWorks/HTML5 and Cascades applications on BlackBerry 10. This service provides near real-time Analytics data.</p>
<p>And we are making it as easy as possible for Analytics providers to bring over their services for BlackBerry 10 by creating a porting guide for both Native and HTML5 solutions. The guide is set to cover all the common information typical analytics frameworks would need to know such as determine the Time Zone, unique identifiers and lifecycle of the BlackBerry 10 devices. This porting guide should be published in the near future will be available from the Analytics Services page:</p>
<p><a href="https://developer.blackberry.com/develop/platform_services/platform_analytics.html" target="_blank">https://developer.blackberry.com/develop/platform_services/platform_analytics.html</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15151/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15151/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15151&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/06/cascades-porting-series-analytics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/analytics1.jpg?w=450" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/analytics2.jpg?w=150" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/analytics3.jpg?w=150" medium="image" />

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/analytics4.jpg?w=150" medium="image" />
	</item>
		<item>
		<title>Localytics for BlackBerry 10 is Here!</title>
		<link>http://devblog.blackberry.com/2013/06/localytics-blackberry/</link>
		<comments>http://devblog.blackberry.com/2013/06/localytics-blackberry/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 11:00:25 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Localytics]]></category>
		<category><![CDATA[webworks]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15210</guid>
		<description><![CDATA[Just prior to BlackBerry Jam Americas, I was speaking with Adam Stanley about analytics services for our BlackBerry 10 HTML5 developers. Adam had been looking into Localytics and found that they have an analytics service written entirely in HTML5; BlackBerry has an entire development approach based on HTML5, so he decided to try his hand [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15210&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://rimdevblog.files.wordpress.com/2013/06/local.png"><img class="aligncenter  wp-image-15212" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/06/local.png?w=300&#038;h=300" width="300" height="300" /></a></p>
<p>Just prior to BlackBerry Jam Americas, I was speaking with <a href="https://twitter.com/n_adam_stanley">Adam Stanley</a> about analytics services for our BlackBerry 10 HTML5 developers. Adam had been looking into <a href="http://www.localytics.com/docs/blackberry-10-integration/">Localytics</a> and found that they have an analytics service written entirely in HTML5; BlackBerry has an entire development approach based on <a href="https://developer.blackberry.com/html5/">HTML5</a>, so he decided to try his hand at plugging it in to a WebWorks application on his BlackBerry Z10. Without much delay he found that almost the entire service worked as-is out of the box (web standards are a thing of beauty!).</p>
<p><span id="more-15210"></span></p>
<p>After the above discovery Adam quickly fired off an email to the Localytics folks to see about getting some official documentation posted for BlackBerry 10. Normally using this approach, without having an “in”, it takes time; with Localytics we were put in touch with their VP of Strategy and Business Development, Brian Suthoff, right away, and were on a call with him within a few days. Localytics was excited to know just how easy it was to use their service with BlackBerry 10.SDK Dev Lead Randy Dailey jumped right to working on SDK tweaks to further support BlackBerry 10 and official documentation.</p>
<p>Today, just a couple of weeks from our first engagement with Localytics, I am happy to say that Localytics is now officially supported on BlackBerry 10. All you WebWorks developers can go ahead and add <a href="http://developer.blackberry.com/html5/">a few simple lines of JavaScript</a> to your existing applications and start tracking usage of your application. <i>But wait, there’s more!</i> If you use Cascades and want to use Localytics then you’ll be happy to know that there is also a <a href="http://www.localytics.com/docs/blackberry-10-integration/">QML interface</a> for the service making it available to you as well! Check the Localytics blog for the official announcement:<br />
<a href="http://www.localytics.com/blog/2013/localytics-releases-blackberry-10-sdk/">http://www.localytics.com/blog/2013/localytics-releases-blackberry-10-sdk/</a></p>
<p><a href="http://rimdevblog.files.wordpress.com/2013/06/local2.png"><img class="aligncenter size-full wp-image-15214" alt="local2" src="http://rimdevblog.files.wordpress.com/2013/06/local2.png?w=514&#038;h=339" width="514" height="339" /></a></p>
<p>I have already created my first Cascades application using Localytics; the entire process was a breeze. From account creation, to getting the files and docs needed to start, to the point where I had analytics actually displaying in my dashboard was all of about 30 minutes.</p>
<p>The service plans begin completely free for developers and indie publishers and scale up from there depending on your needs.</p>
<p>Ready to get started? If you’ve read this far then of course you are! <a href="https://twitter.com/chadtatro">Chad Tetreault</a> has gone ahead and written the first WebWorks sample application with Localytics implemented, you can get it right now: <a href="https://github.com/blackberry/BB10-WebWorks-Samples/tree/master/Localytics" target="_blank">https://github.com/blackberry/BB10-WebWorks-Samples/tree/master/Localytics</a></p>
<p>For more info check out the main Localytics site and the following resources for more information:</p>
<ul>
<li><a href="http://www.localytics.com/">http://www.localytics.com</a></li>
<li><a href="http://www.localytics.com/docs/blackberry-10-integration/">http://www.localytics.com/docs/blackberry-10-integration/</a></li>
<li><a href="http://developer.blackberry.com/html5/">http://developer.blackberry.com/html5/</a></li>
<li><a href="http://developer.blackberry.com/cascades/">http://developer.blackberry.com/cascades/</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15210/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15210/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15210&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/06/localytics-blackberry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/local.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/06/local2.png" medium="image">
			<media:title type="html">local2</media:title>
		</media:content>
	</item>
		<item>
		<title>BlackBerry Java to BlackBerry 10 Cascades Porting Series – Part 11: Push</title>
		<link>http://devblog.blackberry.com/2013/05/cascades-porting-series-push-2/</link>
		<comments>http://devblog.blackberry.com/2013/05/cascades-porting-series-push-2/#comments</comments>
		<pubDate>Wed, 29 May 2013 20:02:03 +0000</pubDate>
		<dc:creator>garett</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Platform Services]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[push]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15167</guid>
		<description><![CDATA[Push has always been a major part of BlackBerry as an extremely efficient way of providing real-time data to users without needing to keep your app running at all times. The main components of Push from BlackBerry 7 to BlackBerry 10 have remained largely unchanged, with applications needing to: Register to receive push messages with [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15167&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Push has always been a major part of BlackBerry as an extremely efficient way of providing real-time data to users without needing to keep your app running at all times. The main components of Push from BlackBerry 7 to BlackBerry 10 have remained largely unchanged, with applications needing to:</p>
<ol>
<li>Register to receive push messages with the device</li>
<li>Register with the BlackBerry Push Service in the cloud to allow push messages for the app to begin being delivered</li>
<li>Register with your server side app so it knows there’s a new subscriber</li>
<li>Be ready to receive push messages at any time</li>
<li>Process pushes in a quick and efficient manner</li>
</ol>
<p>The server-side portion of consumer push is <strong>identical</strong> between all BlackBerry smartphone versions, meaning you can use your current server-side app and push service credentials.</p>
<p><img alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/pushporting.png?w=450&#038;h=300" width="450" height="300" /></p>
<p style="text-align:center;"><i>By włodi from London, UK (The Big Red Button Uploaded by Yarl) [CC-BY-SA-2.0 (<a href="http://creativecommons.org/licenses/by-sa/2.0" rel="nofollow">http://creativecommons.org/licenses/by-sa/2.0</a>)%5D, via Wikimedia Commons</i></p>
<h4><strong>BlackBerry 7</strong></h4>
<p>In BlackBerry 7 Java, there were two main ways to set up your application to receive push messages &#8211; open a port and begin listening indefinitely or register your port and application details with the device. The former basically required that your application begin a background process when the app was first installed, as well as every time the device started up. When the push arrived on the port opened by the app, the data could then be processed however required by the app, followed by the app once again listening on the open port for the next message. This method also required the app to perform “manual” registration, an HTTP POST, with the BlackBerry Push Service to allow devices to begin receiving push messages for your app.</p>
<p><a href="https://github.com/blackberry/JDE-Samples/tree/master/com/rim/samples/device/httppushdemo" target="_blank">https://github.com/blackberry/JDE-Samples/tree/master/com/rim/samples/device/httppushdemo</a> (this sample shows Enterprise Push which is similar to the pre-5.0 Push API method through BIS)</p>
<p>The latter approach was introduced in BlackBerry 5 where new APIs were introduced that removed the need to keep an app thread running at all times. Instead, the app would register itself with the device by passing it the assigned port and push app ID, allowing the device to listen for push messages on behalf of the app and launch to pass the push message to be processed. This method provided a simple way to allow the app to perform the registration with the BlackBerry Push Service.</p>
<p><a href="http://www.blackberry.com/developers/docs/7.0.0api/net/rim/blackberry/api/push/package-frame.html" target="_blank">http://www.blackberry.com/developers/docs/7.0.0api/net/rim/blackberry/api/push/package-frame.html</a></p>
<h4><strong>BlackBerry 10</strong></h4>
<p>The approach used in BlackBerry 10 is most similar to the last approach mentioned for BlackBerry 7 and is arguably the simplest way to handle push messages yet. One simplification is that developers no longer need to worry about application ports, as the on-device service will now handle port selection directly with the BlackBerry Push Service. Another is that rather than needing to deal with reading network streams to receive the push payload, it is not delivered directly to the app fully available in the data portion of an invocation.</p>
<p><span style="text-decoration:underline;">Application flow</span></p>
<p>The first thing your app will need is an entry in the bar-descriptor.xml file that registers the app to receive invocations from the device push notification service. Below is an example entry. The only thing you need to change is the invoke-target id value to a string unique to your app:</p>
<pre>          <strong>    &lt;invoke-target id="com.unique.string.for.your.app"&gt;	
      &lt;type&gt;APPLICATION&lt;/type&gt;
      &lt;filter&gt;
         &lt;action&gt;bb.action.PUSH&lt;/action&gt;
         &lt;mime-type&gt;application/vnd.push&lt;/mime-type&gt;
      &lt;/filter&gt;
    &lt;/invoke-target&gt;
</strong></pre>
<p>The second thing to add to the bar-descriptor is the permission for consumer push (this can also be added through the GUI editor in the IDE):</p>
<p><strong>&lt;permission system=&#8221;true&#8221;&gt;_sys_use_consumer_push&lt;/permission&gt;</strong></p>
<p>After the above entries exist, we are ready to start programming. Using the various Push APIs, the following flow needs to occur in the device app:</p>
<p><span style="text-decoration:underline;">Create a Session</span></p>
<p>Frequency: Every time your app launches</p>
<p>This is where your app registers itself to receive push messages. Once your app passes the on-device service, it’s provided a push app ID as well as the invoke-target ID you specified in the bar-descriptor file. This basically tells the service, “If a push comes in with this push app ID, invoke my app using this invoke-target ID”.</p>
<p><strong>PushService* m_pushService;</strong> //Member variable creation in header file</p>
<p>//In this case BLACKBERRY_INVOKE_TARGET_ID would be &#8220;com.unique.string.for.your.app&#8221; from above</p>
<p><strong>m_pushService = new PushService(BLACKBERRY_PUSH_APPLICATION_ID, BLACKBERRY_INVOKE_TARGET_ID);<br />
m_pushService-&gt;createSession();</strong></p>
<p><span style="text-decoration:underline;">Create a Channel</span></p>
<p>Frequency: Once for the lifetime of the app</p>
<p>After the session has been established on the device, the app then needs to register itself with the BlackBerry Push Service. This operation is referred to as “creating a channel”. The creation of a channel tells the BlackBerry Push Service, “If a push message arrives with this app ID and is addressed to my device, please let it through”. Without this step, pushes will never be delivered to the device.</p>
<p><strong>m_pushService-&gt;createChannel(QUrl(BLACKBERRY_PUSH_URL));</strong></p>
<p>Another important part of this step is that when the channel is created, it should return a “token” which currently is simply the value of the device PIN. This can be sent to your server once retrieved to let it know that a new device has subscribed.</p>
<p><span style="text-decoration:underline;">Register to Launch</span></p>
<p>Frequency: Once for the lifetime of the app</p>
<p>Following the channel creation, your last step is to call the “register to launch” function. Unlike BlackBerry 7, BlackBerry 10 apps do not run all the time. When a push arrives however, the application can be launched into the tiled state to perform processing on the push it’s not already running. In order to be launched when a push arrives, the app must call the “register to launch” function. Otherwise if this function is not called and the application is closed, the push data will be lost.</p>
<p><strong>m_pushService-&gt;registerToLaunch();</strong></p>
<p>Once the above steps are completed, your app is ready to start receiving push messages. As push uses invocation, you can handle the messages in about the same way you would for a standard invocation of your app:<br />
<a href="https://developer.blackberry.com/cascades/documentation/device_platform/invocation/receiving_invocation.html" target="_blank">https://developer.blackberry.com/cascades/documentation/device_platform/<br />
invocation/receiving_invocation.html</a></p>
<p>The one difference is that you need to use the PushPayload class to retrieve the push payload from the InvokeRequest’s data:<br />
<a href="https://developer.blackberry.com/cascades/documentation/device_comm/push/cs_receiving_a_push_message.html" target="_blank">https://developer.blackberry.com/cascades/documentation/device_comm/push/<br />
cs_receiving_a_push_message.html</a></p>
<p>Ready to get porting your BlackBerry Java push app over to BlackBerry 10? Here’s a great resource that walks through the entire service including lots of code snippets:<br />
<a href="https://developer.blackberry.com/cascades/documentation/device_comm/push/index.html" target="_blank">https://developer.blackberry.com/cascades/documentation/device_comm/push/index.html</a></p>
<p>Need a sample to test your current push credentials? Check our GitHub repositories:<br />
<a href="https://github.com/blackberry/Cascades-Samples" target="_blank">https://github.com/blackberry/Cascades-Samples</a><br />
<a href="https://github.com/blackberry/Cascades-Community-Samples" target="_blank">https://github.com/blackberry/Cascades-Community-Samples</a></p>
<p>Never used Push before? Check out this overview of the service:<br />
<a href="https://developer.blackberry.com/services/push/?CPID=PUSHAPI00" target="_blank">https://developer.blackberry.com/services/push/?CPID=PUSHAPI00</a></p>
<p>If you still have questions toss a post in the Push Development forums or send me a tweet:<br />
<a href="http://supportforums.blackberry.com/t5/BlackBerry-Push-Development/bd-p/Applications_using_Push_Technology" target="_blank">http://supportforums.blackberry.com/t5/BlackBerry-Push-Development/bd-p/Applications_using_Push_Technology</a></p>
<p><a href="https://twitter.com/garettBeuk" target="_blank">@garettBeuk</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15167/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15167&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/cascades-porting-series-push-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/75e7e69af37da351a3462a17576c2209?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gbeuk</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/pushporting.png?w=450" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
		<item>
		<title>Bluetooth Low Energy on BlackBerry 10 &#8211; Cadence and Cascades</title>
		<link>http://devblog.blackberry.com/2013/05/nfc-cadence-cascades/</link>
		<comments>http://devblog.blackberry.com/2013/05/nfc-cadence-cascades/#comments</comments>
		<pubDate>Wed, 22 May 2013 14:52:44 +0000</pubDate>
		<dc:creator>jcmrim</dc:creator>
				<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[BlackBerry 10]]></category>
		<category><![CDATA[Bluetooth Low Energy]]></category>
		<category><![CDATA[nfc]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15066</guid>
		<description><![CDATA[I think everyone would agree that living a healthy lifestyle and following a suitable exercise regime is an important factor in keeping well in today’s world. It’s not without its challenges though! How many good intentions have fallen by the way-side? It’s not easy to get yourself out of that comfy chair and head off [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15066&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I think everyone would agree that living a healthy lifestyle and following a suitable exercise regime is an important factor in keeping well in today’s world. It’s not without its challenges though! How many good intentions have fallen by the way-side? It’s not easy to get yourself out of that comfy chair and head off to the gym, take that walk or get on that bicycle. More often than not the comfy chair wins. At least that’s been my experience. Maybe I have a special, demonic chair or something.  It also tells me to eat cake sometimes. Hmmm.</p>
<p>That said there are&#8230;. apparently&#8230;. people in this world who have a bit more resolve than I do and take their sporting and fitness activities a bit more seriously. Not only do they manage to get out of the comfy chair, they even like to measure and analyse their performance so they can improve.</p>
<p>Now my colleague Martin (<a href="https://twitter.com/mdwrim"><b>@mdwrim</b></a>) has normal furniture in his house and seems more than capable of getting out of the comfy chair and down to the climbing wall or out on his bike. He and I (<b><a href="https://twitter.com/jcmrim">@jcmrim</a> </b>) talked about the kind of technology available to sporty people, in particular cyclists. Martin had just come back from watching part of the Giro d’Italia and pointed out that all the pro cyclists have sensors on their bikes. BlackBerry 10, Bluetooth Low Energy and cycling! What a perfect combination of great technology, fun and exercise as well as a great opportunity for a new Blog post, video and sample app!</p>
<p>If you haven’t already done so, this is probably a good time to have a read of our previous blog posts and articles on the <a href="http://devblog.blackberry.com/2013/04/bluetooth-low-energy-and-the-internet-of-things/">Internet of Things</a> and <a href="http://devblog.blackberry.com/2013/04/dude-wheres-my-car-keys-bluetooth-le-and-blackberry-10-how-to/">Finding Car Keys</a> since they cover the basic concepts needed in this blog post.</p>
<p>As before, the first thing we did was to do a little bit of research to see if the Bluetooth SIG had defined any standards in this area; no point in re-inventing the wheel [no pun intended] and the existence of a standard would mean that a vendor may have already implemented the technology in a product.</p>
<p>Whenever you have a requirement that may be solvable using Bluetooth LE the first place to look is here: <a href="http://developer.bluetooth.org/gatt/Pages/default.aspx">http://developer.bluetooth.org/gatt/Pages/default.aspx</a>.</p>
<p>Browsing through the GATT Profiles we came upon this one: <a href="http://developer.bluetooth.org/gatt/profiles/Pages/ProfileViewer.aspx?u=org.bluetooth.profile.cycling_speed_and_cadence.xml">Cycling Speed and Cadence</a> (CSC)… this sounded promising, and the description looked like it was just what we needed.</p>
<blockquote><p><i>“The Cycling Speed and Cadence Profile is used to enable a data collection device to obtain data from a Cycling Speed and Cadence Sensor (CSC Sensor) that exposes the Cycling Speed and Cadence Service.”</i></p></blockquote>
<p>The key element of this profile is the <a href="http://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.cycling_speed_and_cadence.xml">Cycling Speed and Cadence Service</a> (<b>UUID 0&#215;1816</b>) which contains four really useful fields:</p>
<ul>
<li>“Cumulative Wheel Revolutions”</li>
<li>“Cumulative Crank Revolutions”</li>
<li>“Last Wheel Event Time”</li>
<li>“Last Crank Event Time”</li>
</ul>
<p>These are part of the “CSC Measurement” GATT Characteristic (<b>UUID 0x2A5B</b>). They are described in detail here: <a href="http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.csc_measurement.xml">CSC Characteristics</a> and outlined in Figure 1.</p>
<p>There are some other characteristics that allow configuration and control of the device but we’ll talk about these when we come across them.</p>
<div id="attachment_15070" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-15070 " alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/nfc1-e1369229551403.png?w=600&#038;h=604" width="600" height="604" /><p class="wp-caption-text">Figure 1 Key GATT Characteristics for CSC</p></div>
<p>So, if you think about these characteristics they allow you to derive a number of key measurements:</p>
<ol start="1">
<li><b>Total distance travelled</b> – using “Cumulative Wheel Revolutions” – all you need to know is the wheel circumference to calculate this, but if you combine this with a time and a geo-location measurement you can even derive sufficient information to plot your progress on a map.</li>
<li><b>Speed</b> – using “Last Wheel Event Time” – you can figure out how fast the bike is going if you do a simple calculation involving the time between successive Last Wheel Event Time values and the number of wheel revolutions that occurred in that time. But if you combine this with a geo-location measurement you can derive sufficient information to plot your speed on the map as well.</li>
<li><b>Instantaneous effort</b> – using ““Last Crank Event Time”” – this can help identify those times that you’re free-wheeling and not expending energy.</li>
</ol>
<p>It’s at this point that the engineer in me begins to wonder how to instrument a bicycle to make use of this GATT profile. Martin’s a cyclist, so, after identifying a device that matched the requirements (Wahoo Fitness Blue SC<a title="" href="/Users/akinsella/AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.Outlook/X7OSEEYU/Bluetooth%20Low%20Energy%20and%20CSC%20V0_3.doc#_ftn1">[1]</a> device), he attached it to his cycle as shown in Figure 2.</p>
<div>
<div id="attachment_15073" class="wp-caption aligncenter" style="width: 610px"><a href="http://rimdevblog.files.wordpress.com/2013/05/nfc21.jpg"><img class="size-full wp-image-15073" alt="Figure 2 Attachment of cycle monitor" src="http://rimdevblog.files.wordpress.com/2013/05/nfc21-e1369229754261.jpg?w=600&#038;h=338" width="600" height="338" /></a><p class="wp-caption-text">Figure 2 Attachment of cycle monitor</p></div>
<p>For those of you who are mechanically minded small magnets on both the crank and the rear wheel spokes activate the sensor strapped to the frame. The sensor maintains the counts and timings and will report them to a suitable Bluetooth LE device such as a BlackBerry 10 smartphone.</p>
<p>The application that we developed based on this is actually very similar in structure to the Heart Rate Monitor application that was described in a previous blog and article. The basic logic is the same:</p>
<ol start="1">
<li>Pair the Bluetooth LE device with the BlackBerry 10 handset before using the application.</li>
<li>Launch the application which:
<ol start="1">
<li>Discovers devices that support the CSC Service (<b>UUID 0&#215;1816</b>)</li>
<li>Connects to a discovered device selected by the user</li>
<li>Requests the device to notify our application as changes are made to the CSC Measurement characteristic (<b>UUID 0x2A5B</b>) which contains the wheel and crank data that we’re interested in.</li>
<li>Receive, parse and display in numerical (RPM) and historical graphical form the CSC Measurement data as they are received.</li>
</ol>
</li>
</ol>
<p>Here are some screenshots showing what the application looks like:</p>
<div id="attachment_15076" class="wp-caption aligncenter" style="width: 610px"><a href="http://rimdevblog.files.wordpress.com/2013/05/nfc3.png"><img class="size-full wp-image-15076" alt="Figure 3 The CscMonitor Application" src="http://rimdevblog.files.wordpress.com/2013/05/nfc3-e1369229851373.png?w=600&#038;h=324" width="600" height="324" /></a><p class="wp-caption-text">Figure 3 The CscMonitor Application</p></div>
<p>Instantaneous values of the wheel and crank readings in revolutions per minute (RPM) are shown in the upper part of the screen whilst historical RPM data are plotted on the lower half of the display. Wheel and crank historical data displays can be toggled by touching the screen. Mapping RPM values to distance or energy expended would require additional information to be provided, such as the wheel circumference or radius of the crank &#8212; we’ll leave this for a possible later iteration of the application and focus on the Bluetooth LE aspects for now.</p>
<p>If we inspect the GATT services the CSC device supports using a tool like <b>BTool</b> we can see (Figure 4) that the CSC Measurement Characteristic (<b>UUID 0x2A5B</b>) is exposed at handle <b>0&#215;0023</b>. Handles are the references to entries in the GATT that our application will discover and use to access the value associated with a characteristic. We’ve used handles before in both our previous examples.</p>
<div id="attachment_15078" class="wp-caption aligncenter" style="width: 610px"><a href="http://rimdevblog.files.wordpress.com/2013/05/nfc4.png"><img class="size-full wp-image-15078" alt="Figure 4 GATT showing CSC Characteristics" src="http://rimdevblog.files.wordpress.com/2013/05/nfc4-e1369229973665.png?w=600&#038;h=128" width="600" height="128" /></a><p class="wp-caption-text">Figure 4 GATT showing CSC Characteristics</p></div>
<p>Associated with the CSC Measurement Characteristic is a “Client Characteristic Configuration” characteristic (<b>UUID 0&#215;2902</b>) exposed at handle <b>0&#215;0024</b>. The value of this field determines whether our application will receive <b>Notifications</b> or <b>Indications</b> for the CSC Measurement Characteristic. We’ve used these before as well in our previous examples. In this case this characteristic will be set to enable Notifications using the BlackBerry 10 Bluetooth LE API.</p>
<p>So, how do we manage the data that is notified to us from the CSC device? The CSC data received is managed by a class called “CscDataContainer” &#8230; here’s part of its definition:</p>
<pre><b>class</b> CscDataContainer: <b>public</b> QObject {
       Q_OBJECT
<b>private</b>:
       <b>CscDataContainer</b>();
...
       // notification data
       QQueue&lt;csc_notification_t&gt; _csc_notifications;
       // CSC values
       QQueue&lt;csc_values_t&gt; _csc_values;
       <b>int</b> _min_wheel_rpm;
       <b>int</b> _max_wheel_rpm;
       <b>int</b> _avg_wheel_rpm;
       <b>long</b> _total_wheel_rpm;<b></b>
...
}</pre>
<p>At its core are a couple of queues that maintain the data that is received. The queue has a maximum length that can accommodate one notification per second for an 8 hour period. A future version might persist these data in a database but this is sufficient to demonstrate the principle in this case.</p>
<p>Once again the excellent little JavaScript library called “Flot” is used to plot these data in a WebView component in QML.</p>
<p>As notifications are received by our application the <b>addNotification()</b> method of the <b>CscDataContainer </b>class is called with the CSC Measurement data passed as a (uint8_t *) and a length (uint16_t) &#8212; that is an array of bytes.</p>
<p>Parsing this data is the first task and it’s instructive to see how this works – the main points are highlighted in the code fragment below:</p>
<pre><b>void</b> <b>CscDataContainer::addNotification</b>(<b>const</b> uint8_t *val, uint16_t len) {
       // parse value, paying attention to the bit settings in the FLAGS field
       <b>bool</b> wheel_revolution_data_present = <b>false</b>; // bit 0 of Flags field
       <b>bool</b> crank_revolution_data_present = <b>false</b>; // bit 1 of Flags field
       uint32_t cumulative_wheel_revolutions = 0;
       uint16_t cumulative_crank_revolutions = 0;
       uint16_t last_wheel_event_time = 0;
       uint16_t last_crank_event_time = 0;
       <b>int</b> index = 0;
       uint8_t flags = val[index];
       wheel_revolution_data_present = ((
flags &amp; WHEEL_REVOLUTION_DATA_PRESENT) == WHEEL_REVOLUTION_DATA_PRESENT);
       crank_revolution_data_present = ((
flags &amp; CRANK_REVOLUTION_DATA_PRESENT) == CRANK_REVOLUTION_DATA_PRESENT);
       // Fields are in the order of LSO to MSO.
       // Where LSO = Least Significant Octet and MSO = Most Significant Octet.
       index++;
       <b>if</b> (wheel_revolution_data_present) {
              // Cumulative Wheel Revolutions, 4 bytes.
             // Field exists if the key of bit 0 of the Flags field is set to 1.
              cumulative_wheel_revolutions =
(val[index + 3] &lt;&lt; 24) | (val[index + 2] &lt;&lt; 16) |
(val[index + 1] &lt;&lt; 8)  |  val[index];
index += 4;
              // Last Wheel Event Time, 2 bytes. 
              // Field exists if the key of bit 0 of the Flags field is set to 1.
              last_wheel_event_time = (val[index + 1] &lt;&lt; 8) | val[index];
              index += 2;
...
}
       <b>if</b> (crank_revolution_data_present) {
// Cumulative Crank Revolutions, 2 bytes. 
// Field exists if the key of bit 1 of the Flags field is set to 1.
              cumulative_crank_revolutions =
(val[index + 1] &lt;&lt; 8) | val[index];
              index += 2;
              // Last Crank Event Time, 2 bytes. 
              // Field exists if the key of bit 1 of the Flags field is set to 1.
              last_crank_event_time = (val[index + 1] &lt;&lt; 8) | val[index];
              index += 2;
    ...
    }
...
}</pre>
<p>The first byte of data contains an 8-bit flag field (see Figure 1 for details). This indicates whether crank or wheel data is present in the following data.  If these are present they are represented in Little-endian form and need to be extracted by shifting them out a byte at a time.</p>
<p>The rest of the application is more focussed on the display of this data using QML so I’ll leave that for you to look at yourself since the main learning points are to do with how to interface to the Bluetooth Low Energy device itself.</p>
<p>We made a video which has Martin (<a href="https://twitter.com/mdwrim"><b>@mdwrim</b></a>) showing the application in action and explaining the code. Here it is:</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/KpoMm9rIvsk?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span>
<p>If you want to know more then check out the following resources:</p>
<ul>
<li>The complete source code for this application on Git Hub;
<ul>
<li><a href="https://github.com/blackberry/Cascades-Community-Samples">https://github.com/blackberry/Cascades-Community-Samples</a></li>
</ul>
</li>
<li>If you’re completely new to Bluetooth LE then we recommend you read our “BlackBerry 10 Bluetooth LE Primer for Developers”  which you’ll find in our knowledge base. This and all other Bluetooth LE related developer resources that we’ve created, are listed in a single resource index page:
<ul>
<li><a href="http://supportforums.blackberry.com/t5/Native-Development/BlackBerry-10-Bluetooth-LE-resource-index/ta-p/2326147">http://supportforums.blackberry.com/t5/Native-Development/BlackBerry-10-Bluetooth-LE-resource-index/ta-p/2326147</a></li>
</ul>
</li>
</ul>
<p>I hope you’ve enjoyed this short note and hope it has piqued your interest to find out more about Bluetooth Low Energy and how it can be integrated into your BlackBerry 10 applications.</p>
<hr align="left" size="1" width="33%" />
<div>
<p><a title="" href="/Users/akinsella/AppData/Local/Microsoft/Windows/Temporary%20Internet%20Files/Content.Outlook/X7OSEEYU/Bluetooth%20Low%20Energy%20and%20CSC%20V0_3.doc#_ftnref1">[1]</a> This should not be regarded as an endorsement by BlackBerry, explicit or implied.</p>
</div>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15066/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15066/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15066&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/nfc-cadence-cascades/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/87d5f773c912570622fcb0a907a5636b?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jcmurray2012</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/nfc1-e1369229551403.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/nfc21-e1369229754261.jpg" medium="image">
			<media:title type="html">Figure 2 Attachment of cycle monitor</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/nfc3-e1369229851373.png" medium="image">
			<media:title type="html">Figure 3 The CscMonitor Application</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/nfc4-e1369229973665.png" medium="image">
			<media:title type="html">Figure 4 GATT showing CSC Characteristics</media:title>
		</media:content>
	</item>
		<item>
		<title>Real-time Communications (VoIP) on BlackBerry 10: WebRTC and Open Peer</title>
		<link>http://devblog.blackberry.com/2013/05/hookflash/</link>
		<comments>http://devblog.blackberry.com/2013/05/hookflash/#comments</comments>
		<pubDate>Wed, 22 May 2013 13:09:22 +0000</pubDate>
		<dc:creator>Gurtej S.</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Cascades]]></category>
		<category><![CDATA[Case Studies & Success Stories]]></category>
		<category><![CDATA[Interviews/Thought Leadership]]></category>
		<category><![CDATA[Native SDK Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[multimedia]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[ndk]]></category>
		<category><![CDATA[Open Peer]]></category>
		<category><![CDATA[Real-time Communications]]></category>
		<category><![CDATA[RTC]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[voice]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[WebRTC]]></category>

		<guid isPermaLink="false">http://devblog.blackberry.com/?p=15059</guid>
		<description><![CDATA[I would like take this opportunity and introduce you to our good friends at Hookflash who have successfully ported all major components of both WebRTC and Open Peer libraries to BlackBerry 10. To provide a brief overview, WebRTC is an open source multimedia &#38; network stack that supports real-time audio &#38; video. The value Open [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15059&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<div id="attachment_15061" class="wp-caption aligncenter" style="width: 532px"><a href="http://rimdevblog.files.wordpress.com/2013/05/rtc1.png"><img class="size-full wp-image-15061" alt="TITLE_IMAGE" src="http://rimdevblog.files.wordpress.com/2013/05/rtc1.png?w=522&#038;h=278" width="522" height="278" /></a><p class="wp-caption-text"><a href="http://www.webrtc.org/reference/architecture" rel="nofollow">http://www.webrtc.org/reference/architecture</a></p></div>
<p>I would like take this opportunity and introduce you to our good friends at <a href="http://hookflash.com/">Hookflash</a> who have successfully ported all major components of both <a href="http://www.webrtc.org/">WebRTC</a> and <a href="http://openpeer.org/">Open Peer</a> libraries to BlackBerry 10. To provide a brief overview, WebRTC is an open source multimedia &amp; network stack that supports real-time audio &amp; video. The value Open Peer delivers to WebRTC applications is peer-to-peer (P2P) signalling on the wire, Instant Messaging, Federated Identities and multiple mobile platform support.</p>
<p><span id="more-15059"></span></p>
<p>So why is this so important?  Well, it enables developers to build rich, compelling, real-time communication applications integrating Social Identities with Voice, Video and Messaging using <a href="https://developer.blackberry.com/native/">BlackBerry 10 Native SDK</a>. Secondly, WebRTC is free to use if you decide to commercialize your application. What Hookflash has achieved on BlackBerry 10 really exemplifies the power of our BlackBerry 10 Native Platform to deliver the best communications experience.</p>
<p>I would like to further highlight Hookflash team’s experience in porting both WebRTC and Open Peer stack’s over to BlackBerry 10 platform. Check out my interview with Erik Lagerway (Co-founder) &amp; Robin Raymond (Chief Architect) from Hookflash below:</p>
<blockquote>
<h3>What is Hookflash?</h3>
<p><a href="http://hookflash.com/">Hookflash</a> is a globally distributed software development team building “<a href="http://openpeer.org/">Open Peer</a>”, new “open” video, voice and messaging specification and software for mobile platforms and web browsers.  Open Peer enables an important new evolution of communications; <i>Open</i>, for developers and customers to create with. “<i>Over-the-top</i>” on the Internet, where users control their economics and quality of service. “<i>Federated Identity” </i>so user’s connections aren’t limited by service provider’s walled gardens and operating systems. “<i>Integrated”</i>, as communications become a native function in software and applications. Hookflash founders, lead developers and Advisors accomplishments include; creators of the world’s most popular softphones, built audio technology acquired and used by Skype, built GIPS technology acquired and open sourced by Google to create WebRTC, and engaged in <a href="http://webrtc.is/">WebRTC standards development</a> in the IETF and W3C.</p>
<h3>What is Open Peer SDK and how would this empower BlackBerry 10 developers?</h3>
<p>Open Peer enables direct integration of social identities, video, voice and messaging communications for developers building native BlackBerry 10 (NDK) applications. Voice, video and messaging flow Over The Top (OTT) via the Internet.</p>
<p>These services are delivered peer-to-peer (P2P) providing extremely strong privacy, security and encryption. Open Peer enables federated identities and allows developers to leverage and integrate whatever identity model they currently have, so their users <i>remain their users!</i></p>
<h3>What features does Open Peer SDK support?</h3>
<p>The Open Peer SDKs are built according to the <a href="http://docs.openpeer.org/OpenPeerProtocolSpecification/">Open Peer specification</a>. Here are a few of the features we have built into the current SDKs&#8230;</p>
<ul>
<li>HD real-time video</li>
<li>Wideband voice and messaging</li>
<li>Peer-to peer signalling &amp; media transport (greater efficiency, reliability &amp; privacy)</li>
<li>Federated identity for cross-platform communications (not to be confused with Single Sign-On)</li>
<li>Encrypted &amp; secure communications</li>
</ul>
<h3>Would HTML5/WebWorks developers be able to leverage this in BlackBerry 10?</h3>
<p>Yes. The current SDK is for BB10 NDK developers at this time. However, we have an active “opjs” project under development that will allow interaction between a native BB10 application and an HTML5/WebRTC enabled browser thus allowing web applications to communicate directly with native BB10 applications.</p>
<h3>Share your experience in cross compiling your code for BlackBerry 10</h3>
<p>Like all platforms, there’s is a learning curve relative to what you are used to until you find yourself comfortable in a new environment, and BB10/QNX is no different. The richness to the platform experience is impressive on the BB10 and made iOS feel somewhat dated by comparison.</p>
<p>Since QNX is a POSIX compliant system, it was relatively easy to get a majority of open source code ported to BlackBerry 10. The QNX GCC-compliant mode has helped us as well.</p>
<p>There were a few wrinkles along the way. The documentation and NDK felt young compared to other more established platforms but that kind of level of documentation grows out of community support and interaction.</p>
<p>One major difference between this project and other platforms has been the phenomenal support that Blackberry has provided us as developers, especially as Hookflash is pushing the platform and technology harder than most with real time communications in audio and video. This was refreshing, We&#8217;ve never seen such incredible support for their developer community.</p>
<h3>Have you ported over the entire webRTC engine to BlackBerry?</h3>
<p>Yes, we have ported all major components of webRTC library to BlackBerry. We will be extending what is offered by WebRTC’s library as well.</p>
<h3>How long did it take to port the WebRTC and Open Peer code to Blackberry 10?</h3>
<p>When you consider the size of the code-base that had to be moved, and the fact we had not worked on QNX /  Blackberry 10 before, it went relatively quickly. The entire move took us approximately 90 days.</p>
<h3>Are you going to commit this work back upstream to WebRTC project?</h3>
<p>Yes, our code will migrate back to the WebRTC project. Hookflash is extremely busy on a number of fronts making Open Peer widely available with limited resources.  We appreciate help from other developers. Pushing the WebRTC codebase back upstream will be of tremendous value to the Blackberry developer community. Requests to join <a href="https://github.com/openpeer/opbb10">our Open Peer BB10 github project</a> are always appreciated.</p>
<h3>What APIs did you use to build your application on BlackBerry 10?</h3>
<p><a href="https://developer.blackberry.com/native/reference/bb10/audio_libref/topic/summary.html">NDK’s audio</a>, camera and rendering subsystems and Boost are the bulk of the components. We use <a href="https://developer.blackberry.com/cascades/">Cascades/QT</a> for the sample application.</p>
<h3>Do you have VP8 Video working on BlackBerry 10?</h3>
<p>Yes. We had some difficulty getting the assembly to compile properly but with Blackberry’s support we were successful in porting an optimized version of VP8 to the BB10 platform. Keep in mind we have tested this mostly on Z devices at this time with limited testing done on the Q devices.</p>
<h3>How was your experience relative to working with other platforms and BlackBerry 10?</h3>
<p>As mentioned earlier, Blackberry feels a bit new in the documentation area and there are still a few bugs to take care of in the platform. Having said that, the platform is forward thinking, flexible and impressively powerful. Blackberry’s support has been beyond anything we could have hoped and even expected.</p>
<p>As more developers are drawn to the platform, documentation and community involvement will improve the access to information on the platform and increase the samples available to draw upon.</p>
<p>For such a new entrant into the market, our team is thoroughly impressed.</p>
<h3>How was your experience working with the RIM team?</h3>
<p>Bar-none, the best support we’ve ever had from a major platform vendor directly into the project. Kudos to RIM / Blackberry for providing such a spectacular community outreach.</p>
<h3>When is Open Peer SDK going to be available for BlackBerry 10?</h3>
<p>Our SDK is ready now in beta, developers can get it on <a href="https://github.com/openpeer/opbb10">Github</a> today. We continue to polish this and our other toolkits, we expect commercialization to begin later this year. Follow us on <a href="https://github.com/openpeer/">github</a> and <a href="http://twitter.com/hookflash">twitter</a> to get the latest news on Hookflash and Open Peer development.</p></blockquote>
<p>I hope you found this interview informative and useful.  If you have any questions or feedback please leave a comment below or reach out to me directly on Twitter <a href="https://twitter.com/_GurtejSandhu">_GurtejSandhu</a>. Kudos to Hookflash team for making this all happen.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/rimdevblog.wordpress.com/15059/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/rimdevblog.wordpress.com/15059/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=devblog.blackberry.com&#038;blog=17235680&#038;post=15059&#038;subd=rimdevblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://devblog.blackberry.com/2013/05/hookflash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/41e8b1a2189dfce0a51887beab21795d?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gurtejsan1</media:title>
		</media:content>

		<media:content url="http://rimdevblog.files.wordpress.com/2013/05/rtc1.png" medium="image">
			<media:title type="html">TITLE_IMAGE</media:title>
		</media:content>
	</item>
	</channel>
</rss>
