710 likes | 1.22k Views
The Super App Revolution: Developing Consumer Applications . Brian Zubert Team Lead, Developer Relations AC03 May 2, 2011. Example Super App Behavior. How Poynt exemplifies key characteristics of Super Apps Peter Werry, Java Mobile Lead, Poynt. Our View of Local Search.
E N D
The Super App Revolution: Developing Consumer Applications Brian ZubertTeam Lead, Developer Relations AC03 May 2, 2011
Example Super App Behavior How Poynt exemplifies key characteristics of Super Apps Peter Werry, Java Mobile Lead, Poynt
Our View of Local Search • Events: Find events near you, search by event, venue, city, date or keyword search • 2. Movies: Find a theatre, view showtimes, watch trailers, buy tickets, get turn-by-turn directions, ticket email confirmation, add to calendar • 3. Business: Full Directory services, complete a business search, email listings to contacts • 4. Restaurants: Read restaurant reviews, book a table, invite friends via device contacts, add to calendar • 5. People: White pages, reverse look up missed calls, full device contacts integration • 6. Gas Prices: nearest stations, best gas prices • 7. Weather: Integrated home screen weather, click on temperature to get 5-day forecasts and beyond • 8. Maps: Map search results, set location and map from a new location, get turn-by-turn directions
Poynt – Mobile Local Search • Active user base: 7.? Million • Growth: 15,000 new users per day • Over 1.5 M active users per month • Average 22 M queries per month • 88% of users return month over month
Poynt – Global Mobile Local Search Geographies: United States, Canada, the United Kingdom, Italy, France, Spain, Germany, and Australia. Languages: English, French, Spanish, Italian and German
What Are Super Apps? We’ve seen an example, but what is it all about?
What Are Super Apps?The Super App Experience • Apps that people use every day • Experiences that transform user behavior • Apps that drive stickiness
Super App EnablersExamples of Key Features of Super Apps • The always-on experience • Multi-threaded O/S with background apps • Highly contextualized • Integrated LBS and Mapping • Tight integration with native apps • APIs for deep, contextualized integration with Inbox, PIM, Search, Phone, etc. • Social and connected • Email, SMS, MMS, BlackBerry® Messenger, other social networks • Proactive and notification-driven • Rich event-based notification model • Push services for just-in-time data delivery • Efficient • Wi-Fi®, notification of backgrounding, device usage information
Why Super Apps?Technical Drivers for Super Apps • Deep native integration • Seamless flow • Application synergy • Cohesive and seamless user experience • Consistent behavior
Why Super Apps?Technical Drivers for Super Apps • Increased application stickiness • Lower the learning curve for application use • Remove think-points • Reduce user hesitation, improve workflow • Intuitive extensions to the BlackBerry® experience • Become a part of everything the user does • Add discovery points for your applications and services
The Always-On Experience 4.6+: Up to 64 concurrent processes and up to 64 threads per process 5.0+: No limit to the number of processes, no limit to the number of threads per process
The Always-On ExperienceRunning on Start-up • Easy to define: • Edit the BlackBerry Application Descriptor • Click the checkbox for Auto-run on Startup • Also means app runs as soon as it is installed • User will not see a “Run” option in the download complete dialog • Check the state of device boot operations • ApplicationManager.inStartup() • ApplicationManager.waitForStartup()
The Always-On ExperienceDoing It Right • Do you need to be truly always-on? • Remember, it’s an always-on experience • App anticipates user’s needs • Push services can often achieve similar results • Timed events / scheduled wake-ups are also a viable alternative • ApplicationManager.scheduleApplication() • Minimize processing • Use the Profiler to ensure that only relevant threads are running • Stop painting • looped painting, animations, or other UI processes should be halted • Can employ above tactics to an idle device as well • SystemListener2.backlightStateChange()
Highly Contextualized Context is everything
Highly ContextualizedGraphical Context Menus • New in BlackBerry 6 • Important functions • Quick access • Intuitive icons • Replaces current context menu • Default action in the center • Full menu access in the bottom right position • Three sizes available: • 3x3 • 2x3 • 1x3
Highly ContextualizedLocation Based Services • JSR 179 – Location API • Key Docs / Best Practices • KB Article: “Location APIs – Start to finish“ • LBS Development Guide: http://docs.blackberry.com/17954 • In General: • Full scans of the sky are expensive • Keep the chip “hot” • Be smart about retries • Do not continually request Assisted GPS fixes • They cost; keep the carrier happy • BlackBerry 6 extensions to Location API • Locate Service • WLAN positioning • TravelTime API / ETA Service • Crowd sourced time estimate to get from A to B
Highly ContextualizedBlackBerry Maps • Invoke and MapField • Launch BlackBerry Maps or embed it • 5.0 and above: • Maps as a platform is available on *all* BlackBerry smartphones • Even if BlackBerry Maps is not available as an icon to the user! • New 6.0 Maps API • Redesigned MapField API • Factory classes • Sharing of locations via URLs and images • Map overlays via KML • Panning and zooming • Enhanced 7.0 Maps API • Geofencing • Support for any shape polygon overlays
Highly ContextualizedYou Know More Than You May Realize • Know who’s calling • PhoneListener • PhoneScreen API • PhoneCall.getContact() • Device cradled: desktop or car cradle • CradleHandlerRegistry • Indicator of location (home, office, car) • Time, Locale, Calendar Events • All provide context for where the user might be or what they might be doing • HomeScreen Shortcut Icon • Create a shortcut icon on the homescreen • Link to a specific file, URL, or alternate view of your app
Highly ContextualizedYou Know More Than You May Realize • All sorts of listeners • FileJournalListener • Detect new files being created • FolderListener • Detect new messages in a given folder (inbox, outbox, etc) • GlobalEventListener • Detect changes to locale, time, date, etc • PIMListListener • Detect new address book, calendar, task • CodeModuleListener • Detect when new apps are installed • SensorListener / HolsterListener / DeviceCapabilityListener • Detect when device properties change (flip, holster, slider, VKB, etc)
Tight Integration With Native Apps Flow from one app to another, seamlessly
Tight Integration With Native AppsThe Fundamentals • Invoke and ApplicationMenuItems • Most effective when paired • A means to launch the app and a means to return to your app • Register ApplicationMenuItems on startup • ApplicationMessages and ApplicationIndicators • Often complimentary, but not always • If using ApplicationMessages, should always use ApplicationIndicators • ApplicationIndicators could be standalone • JSR 75 – PIM • Use native app experience wherever possible • Contact picker • Multiple address books
Tight Integration With Native AppsNative UI Integration • PaneManager • LocationPicker • DateTimePicker • FilePicker • SpellCheck API • AutoText • Progress Indicator • Auto-Complete Text Field • TitleBar
Tight Integration with Native AppsHardware Integration • Camera • Invoke or snapshot • Embedded video and audio • JSR 135 • playback and streaming • 7.0 – define buffer size • Audio and video recording • 7.0 – HD video recording • 7.0 – define bitrate • Accelerometer • Magnetometer • Sensor data • Calibration API • Compass overlay
Tight Integration With Native AppsNew to BlackBerry 6 • Universal Search • Searches for on-device (local) and web (remote) content • Application integration allows • Register application name to be searchable • Register as a content provider for search • Register as an extended search provider for core applications • Provides mechanism for in-app search • Access to other third party data • Improvements / Simplifications in 7.0 • EntityBasedSearchableProvider • single interface to provide “searchable” data to the search service • SearchableDataObject: • single interface for creating and registering data with the search service • Dynamic adding/removing of indexed keywords for an indexed object
Social and Connected Keep users in touch by building in social networking and sharing
Social and ConnectedConnecting to the Networks • Email / PIN / SMS / MMS APIs • Open Source Facebook® Connect APIs • https://sourceforge.net/projects/facebook-bb-sdk • JSR 172 – Web Services • 5.0 Network Transport API • Just give me a network connection! • Specify preference order for transports, retry, failover, etc • Web Communication • Provides uniform access to various web-service based technologies such as SOAP, REST, ATOM and RSS • Web Communication Parsing • Parsers to help process web services messages such as JSON, XML, RSS
Social and ConnectedSend Menu API • Send Menu API • Easily share application content with contacts in the same way that core applications do • Returns a “Send…” menu for the given context of the file or text to be sent • Simplifies Bluetooth • Includes Facebook!
Social and ConnectedMaking It Easy • 1D and 2D Barcode Support • Embed the camera viewfinder with support for scanning of barcodes • Support for formats listed in ZXing 1.4 • 1D: UPC, ITF-14, etc • 2D: Data Matrix, QR Code • Note: Data Matrix still in alpha for ZXing library • 7.0 Barcode Scanning API Enhancements • Updated to Google Z’xing 1.6 (from 1.4) • Data Matrix now production quality • Support for custom decoders
Social and ConnectedNFC • Near Field Communication (NFC) • BlackBerry Accessory Integration • Seamless Bluetooth Pairing, Music Streaming, “Intelligent Cradles” • APIs for Virtual Tags • Reading, writing, emulating • M-Commerce/Payment • JSR 177 • Javacard applets
Social and ConnectedMaking it easy • BlackBerry Messenger APIs • Access user profile • Create custom profile boxes • Chat • In-app chat • App to BBM chat • Invite new contacts from chat • Send files • For more details, session WD25
Proactive and Notification-Driven Push is just the beginning
Proactive and Notification-DrivenPush • 5.0 Push API (net.rim.device.api.push) • Simplified push handling • App not required to be running in the background • When to push? • Replaces polling • Checking a server at regular intervals, whether new information is actually available or not • Better user experience than alerts • System in which user is notified that something is new, but user needs to actually request what that something is • More efficient than poke & pull • Similar to alerts, but application automatically makes the request for what that new information is • The smaller the size of the new information, the more inefficient the pull
Proactive and Notification-DrivenPush Details • Allows up to 8kB payload • Dedicated application ports avoid port collisions • Uses standard push protocols (WAP PAP 2.2) • Different submission modes: • Point-to-Point (submit push to single PIN) • Multicast (submit push to list of PINs) • Broadcast (submit to all PINs for a registered application) • Developer-controlled expiry time (push system automatically stores push requests until expiry time) • Developer-set quality of service (BlackBerry Push Plus Option): • Application (“message reached application” ) • Transport (“message reached port on device”) • Fire & Forget (no acknowledgements)
Proactive and Notification-DrivenNotifications • Many ways to notify the user • Vibration • Alert.startVibrate() • LED • LED.isPolychromatic() • LED.setState() • Audio • JSR 135 – MMAPI • Change app icon or app description • HomeScreen.setName() • HomeScreen.updateIcon() • HomeScreen.setNewState() • ApplicationMessages and ApplicationIndicators • Dialog boxes
Efficient Discussed throughout: Deliver an app experience that’s respectful of device resources, battery life, network capacity and cellular data costs
EfficientMany Indicators • All sorts of listeners • SystemListener / SystemListener2 • Detect changes in battery level • Detect device charging events • Detect backlight on/off • LowMemoryListener • Detect low memory conditions • CoverageStatusListener • Detect when various network transports are available • RadioStatusListener • Detect radio signal levels, roaming conditions, 2G / 3G • WLANConnectionListener • Detect Wi-Fi networks
BlackBerry® PlayBook™ Super App considerations when designing for Tablet OS
Characteristics of the BlackBerry PlayBook • Seven inch screen size • 1024 x 600 resolution • Multi touch interface • Different user interaction than single mouse pointer • Multiple orientations • Landscape vs portrait • Virtual keyboard 40
Application config (blackberry-tablet.xml) <qnx> <icon> <image>my_icon.png</image> </icon> <author>My Company</author> <authorId>gYAAgIqK0RLL5u4I9NanyxBUuCI</authorId> <category>core.games</category> <splashscreen>img/spalsh_landscape.jpg:img/splash_portrait.jpg</splashscreen> <action>use_camera</action> <action>read_geolocation</action> <action>play_audio</action> <buildId>349</buildId> <platformVersion>1.0.0.0</platformVersion> </qnx> Specify platform specific items
Device Information & QNX APIs Battery level Battery state Charging events Bezel top swipe Hardware ID Device OS Device PIN Platform Version Accelerometer • Foreground / background events • Save state when going to background • Manage your power mode • Standby, throttle, normal • WiFi connected / disconnected events • HDMI • Mirror mode by default • Presenter mode can be set • File system events • Shared vs app data space • Only use shared space for interprocess communication
Another Look at the Example And how it was extended to the BlackBerry PlayBook tablet
Poynt for PlaybookConnecting BlackBerry Smartphones 3rd Party Apps don’t have access to direct communication APIs Common Denominator: Poynt’s Backend Server
Integration with RIM’s Push API Integration Integration BlackBerry® Push Service
Pairing Devices Security Code Entry in BlackBerry Smartphone Confirms Pairing with Poynt’s Backend Server Step #2: Receive Security Code Step #1: Input BlackBerry PIN Step #3: Send Security Code to Poynt Server Poynt’s Backend Server
Push API Integration BlackBerry Push Service Poynt’s Backend Server
THANK YOU Brian Zubert, Team Lead, Developer Relations Peter Werry, Java Mobile Lead, Poynt AC03 May 2, 2011