Mobile + cloud = heaven


Published on

With mobile cloud computing come efforts to simplify its development. Creating apps for the mobile cloud is significantly different than developing apps for a native smartphone platform. This session is about design and architecture considerations, the essential tools and technologies, and the pitfalls to avoid when building mobile cloud apps.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Anywhere means any device, any application, anywhere a user wants to be able to access their content. So, that’s where I come in – I build Box’s mobile apps so that users can access their content from anywhere.
  • When you first start developing an application you care intensly about solving a single use case.
  • We like this because you can perfectly fulfill your intended use case. And you have complete control over the experience. A user opens your app and stays inside.
  • This is great for something like Angry Birds
  • But what if you want to build something for productivity like a Voice Recorder application, document reader, sketch application or a word editor? Oftentimes your application isn’t stand-alone and the use case doesn’t stop and end on the device. For your application to fulfill a broader use case and play well with the rest of a users life, you’ve got to play well in the broader ecosystem
  • End-to-end workflow: Really it comes down to *workflow.* Your application is just a part of a bigger story. Either it exists to augment the service it's on top of or it's on of a larger constellation of apps that a user needs to complete their desired task. Users expect changes in your application to be visible across the web, related integrated apps, the desktop. All that information in sync all the time.
  • One example that we see a lot at box is document workflow Users want to open a document, edit it, comment, add photos, save that doc and then access it from anywhere again. That’s really too much for a single app to do. So you have to be able to integrate with other apps on the device
  • What’s more, users want to make workflow happen across devices. They want to have access to the state of your application across any device and both native apps and on the web.
  • And it’s not just me saying it. At Box we’ve seen that our users are becoming more and more mobile and that they’re logging in from more and more locations – mobile phones, computers and the web. Having your application accessible from different locations is more important than ever. 6 different locations by detecting IP addresses on site visitors. Where users are logging in from. IP can determine different devices from different. Use it at work. Home computer, work computer, personal devices. Google Analytics.
  • So from your perspective, your app gets inputs and outputs of information. The app’s start-state depends on a user’s actions on other devices, computers and websites. If it’s a social app it could depend on your user’s friends actions from other services. At the same time, your application could send state out to other apps
  • Your application should always know the state of the user’s data, no matter where when or how they last touched your application or a partner’s application. Your content is just a window into content that exists somewhere in the ether. Also, it doesn’t matter whether you and another app developer communicate with each other, if a user for whatever reason expects that something they do in one app be reflected in another, you should make sure those changes are reflected in both of your applications Everything they need should just “be there”.
  • In reality, information is flowing all over the place from many different channels. Applications are pulling information from APIs from databases across the web. Applications are rendering webpage content from different sites using WebViews Website integrations are pulling information from other website’s databases.
  • Spotify pulls friends’ information from facebook and loads songs remotely via an API
  • Facebook in flipboard: login webview
  • Box in Quickoffice
  • Bookmarks in the Box app
  • To build the best-behaved application you can, you need to expose your application’s data in as many ways as possible . You also need to make sure you’re utilizing all the data that your customers expect. For this Tools section, I’m going to focus on Android and iOS, the main front-runner OS’s
  • To start, let’s talk about Device APIs
  • Send content between applications – documents in general, but also any information that can be contained within a URL. Custom URL handlers work from the web, from other apps or from email links. Great way to launch your application from within another app or program.
  • To start, let’s talk about Web APIs
  • Mobile devices have a hard time processing complex Requests and Responses. You don’t want to be parsing complex XML with a simple event-driven parser There are usually numerous libraries out there for APIs that other people have built applications on top of – take advantage of them!
  • Oauth – redirects to a different page. You only get what the service wants you to get. Most common login type If there is a ‘direct login’ make sure you’re not doing anything to save the password. All communication uses a token that can be revoked by the user on the main web app side. Make sure you’re only using that.
  • To start, let’s talk about Web APIs
  • Mobile + cloud = heaven

    1. 1. Mobile+Cloud=Heaven Michael Smith [email_address] Product Manager at Box
    2. 2. Me <ul><li>Mobile application developer </li></ul><ul><li>Product manager </li></ul><ul><li>Mobile guru @ Box </li></ul>
    3. 3. What’s Box?
    4. 4. A simple vision. Share, manage, and access your content from anywhere.
    5. 5. A simple vision. Share, manage, and access your content from anywhere.
    6. 6. Anywhere… <ul><li>Any device </li></ul><ul><li>Any application </li></ul><ul><li>Anywhere a user wants access to their content </li></ul>
    7. 7. Agenda <ul><li>Why Cloud? </li></ul><ul><li>Cloud ecosystem </li></ul><ul><li>Integrating with the cloud + other apps </li></ul><ul><li>Other tips and tricks </li></ul>
    8. 8. In the beginning… <ul><li>Universe is a single app </li></ul>
    9. 9. In the beginning… <ul><li>Universe is a single app </li></ul><ul><ul><li>Perfectly fulfill your intended use case </li></ul></ul><ul><ul><li>Complete control over the experience </li></ul></ul>
    10. 10. In the beginning…
    11. 11. In the beginning…
    12. 12. Workflow
    13. 13. Workflow
    14. 14. Workflow
    15. 15. Box Users are Mobile Source: Infographics on Box users
    16. 16. Ecosystem: App’s Perspective Your App Other Apps Cloud Backup Other cloud services Your Website
    17. 17. Ecosystem: User’s Perspective Your App Other cloud services Your Website User’s Data Other Apps
    18. 18. Ecosystem: Reality App App App App Website Database Database Database Website
    19. 19. Ecosystem: Example
    20. 20. Ecosystem: Example
    21. 21. Ecosystem: Example
    22. 22. Ecosystem: Example
    23. 23. Tools Your App Other Apps Cloud services Mobile Web Device APIs Web APIs In-App Webviews
    24. 24. Tools Your App Other Apps Cloud services Mobile Web Device APIs Web APIs In-App Webviews
    25. 25. Tools: Device APIs <ul><li>Uses </li></ul><ul><li>Pass information between apps – web or native </li></ul><ul><li>Request information from other apps </li></ul>
    26. 26. Tools: Device APIs <ul><li>Launching helper apps </li></ul><ul><li>Enabling workflow </li></ul><ul><li>Getting users into your application from the web and email </li></ul>
    27. 27. Tools: Inter-app communication <ul><li>iOS </li></ul><ul><ul><li>UIDocumentInteractionController </li></ul></ul><ul><ul><li>Custom URL handlers </li></ul></ul><ul><li>Android </li></ul><ul><ul><li>Register for intents: Send-to </li></ul></ul>App 2 App 1, email or mobile web
    28. 28. Tools: Request Content <ul><li>iOS </li></ul><ul><li>Android </li></ul><ul><ul><li>Open-in </li></ul></ul>
    29. 29. Tools Your App Other Apps Cloud services Mobile Web Device APIs Web APIs In-App Webviews
    30. 30. Tools: Web APIs <ul><li>Uses </li></ul><ul><li>Technology choices </li></ul><ul><li>API Calls </li></ul><ul><li>Some points about login </li></ul><ul><li>Online / Offline </li></ul><ul><li>Push notifications </li></ul>
    31. 31. Uses <ul><li>Saving and retrieving application state </li></ul><ul><li>Social connectivity </li></ul><ul><li>Interacting with 3 rd party services </li></ul>
    32. 32. Tools: Web API Technologies <ul><li>When building an API: Make it simple! </li></ul><ul><li>REST / JSON / simple XML </li></ul><ul><li>Leverage open-source libraries when you can </li></ul>
    33. 33. Tools: Web API Technologies <ul><ul><li>Google has great open-source JSON parsers for Objective-C </li></ul></ul><ul><ul><li>Objective-C uploads library </li></ul></ul>
    34. 34. Tools: API Calls <ul><li>Include an easily revocable auth-token </li></ul><ul><li>Publish a minimum set of parameters, make the remaining parameters optional </li></ul>
    35. 35. Tools: Login <ul><li>OAuth – login of choice for applications </li></ul><ul><li>Never save user passwords, only tokens </li></ul><ul><li>If you’re building a platform tokens should be device and application specific </li></ul>
    36. 36. Tools: Online/Offline <ul><li>Server as source of truth </li></ul><ul><li>Never assume connectivity </li></ul><ul><li>Cache as much as you can </li></ul>
    37. 37. Tools: Push Notifications <ul><li>Alert users when events happen </li></ul><ul><li>Make notifications small </li></ul>
    38. 38. Tools Your App Other Apps Cloud services Mobile Web Device APIs Web APIs In-App Webviews
    39. 39. Tools: In-App Webviews <ul><li>Uses </li></ul><ul><li>How they work in your app </li></ul>
    40. 40. In-App Webviews: Uses <ul><li>Complex functionality – simply </li></ul><ul><li>Low-fidelity, high functionality </li></ul><ul><li>Source of highly changeable content and presentation </li></ul>
    41. 41. In-App Webviews: How-to <ul><li>Webview in the application </li></ul><ul><li>Static address or dynamic page </li></ul><ul><li>Javascript interactivity </li></ul>
    42. 42. Round-up <ul><li>Cloud covers the whole user story </li></ul><ul><li>Many technologies are available </li></ul><ul><li>The biggest services have open platform </li></ul><ul><li>Your users will thank you! </li></ul>
    43. 43. Questions?