ITP 342 Mobile App Development APIs
API Application Programming Interface (API) A specification intended to be used as an interface by software components to communicate with each other An API is usually related to a software library An API can also be related to a software framework An API can also be an implementation of a protocol The practice of publishing APIs has allowed web communities to create an open architecture for sharing content and data between communities and applications 2
Facebook https://developers.facebook.com/mobile/ Things you can do: Login with Facebook Fetch User Data Publish to Feed Send Requests 3
Twitter https://dev.twitter.com Embedded Timelines Make it easy to syndicate any public Twitter timeline to your website with one line of code You can embed a timeline for Tweets from an individual user, a user s favorites, Twitter lists, or any search query or hashtag Twitter Cards Attach media experiences to Tweets that link to your content Embedded Tweets Allows websites to generate copy and paste-able HTML markup to render a Tweet on any third-party website 4
Twitter REST API https://dev.twitter.com/docs/api Provides simple interfaces for most Twitter functionality Streaming APIs https://dev.twitter.com/docs/streaming-apis A family of powerful real-time APIs for Tweets and other social events ios Twitter Framework https://developer.apple.com/library/ios/ documentation/twitter/reference/ TwitterFrameworkReference/_index.html 5
Available at: http:// developers.google.com APIs available for: Google+ Android App Engine Chrome Games Google Maps Google Apps Google TV Commerce YouTube Google APIs 6
Twilio http://www.twilio.com Brings voice and messaging to your web and mobile applications A cloud communications IaaS (Infrastructure as a Service) company Allows software developers to programmatically make and receive phone calls and send and receive text messages using its web service APIs Twilio's services are accessed over HTTP and are billed based on usage As of October 2012, more than 150,000 developers use the service Make phone calls to anywhere in the world They use geographically distributed datacenters to connect with carriers around the globe Send text messages to anywhere in the world Connected to over 1,000 mobile carriers globally Send messages in whatever language your users speak In June 2010 Twilio launched OpenVBX An open source product that lets business users configure phone numbers to receive and route phone calls 7
Cloud Computing Layers 8
Cloud Computing SaaS software as a service "on-demand software" or "application service providers" (ASPs) Software and associated data are centrally hosted on the cloud PaaS platform as a service Cloud providers deliver a computing platform typically including operating system, programming language execution environment, database, and web server IaaS infrastructure as a service Offer computers - physical or (more often) virtual machines - and other resources 9
Cloud Computing BaaS backend as a service Mobile backend as a service (MBaaS) A model for providing web and mobile app developers with a way to link their applications to backend cloud storage while also providing features such as user management, push notifications, and integration with social networking services These services are provided via the use of custom software development kits (SDKs) and application programming interfaces (APIs) The global BaaS market had an estimated value of $216.5 million in 2012 10
Cloud Services Cloud Services covers a variety of hosting services: Application Hosting (e.g. AWS, Google App Engine, FireHost, Microsoft Azure) Backup and Storage ( e.g. AWS) Content Delivery (e.g. Netflix hosted by AWS) E-commerce (Amazon.com e-commerce) Media Hosting (e.g. Microsoft Azure, RackSpace, Streaming Media Hosting) DNS Protection Services (e.g., CloudFlare) Consumer Cloud Storage (e.g. Apple icloud. Dropbox, Microsoft SkyDrive, Google Drive) Access is provided using one or both of these methods: Dashboard Library-based APIs, embedded in Java, C#, Objective-C and other binary library formats All these services are commercial services that require monthly payments The consumer cloud services provide limited, free basic storage 11
Cloud Companies Amazon Web Services (AWS) http://aws.amazon.com rackspace the open cloud company http://www.rackspace.com Windows Azure http://www.windowsazure.com HP Cloud Services https://www.hpcloud.com Google Cloud Platform http://cloud.google.com 12
Mobile App Development What is BaaS? At its core, a BaaS provider typically enables you to store your data & interact with other critical services in normalized manner, without the headaches and cost of maintaining your own infrastructure. Which BaaS is right for me? What platform do I need to support? What features do I need? 13
Mobile BaaS Platforms SDKs (Software Development Kits) for most platforms (Android, ios, JavaScript, etc.) An HTTP service layer fallback Features Storage (data, DB) Push notifications Usage analytics Dashboard/UI Social integration User administration Custom code integration 14
Feature Analysis - Storage Questions to consider: Is the storage schema-less? What s the search API like? Can you establish relationships between stored items? Are changes pushed to connected clients, or do they need to re-query for updates? Does the BaaS support data connectors allowing you to sync the cloud-based data to another system behind your own firewall? Where are the servers physically located (this can be a critical question to ask both for availability and regulatory reasons) How difficult is it to export your data en masse should you decide to leave the provider for another option? What kinds of data can be stored does it include files/binary data storage? 15
Feature Analysis Push Notifications Info: Push notifications allow you to get important information to your users without the costs of other channels (SMS, for example) and without requiring your app to be in the foreground at the time. As most push notifications arise due to a change in data, it s logical that many BaaS providers are including this as an offering. Good questions to ask: What platforms are supported (ios, Android, etc.)? Will I get a consistent/normalized API to work with, rather than having to work with each platform-specific push notification API? Will I get the advantage of automatic scaling during periods of high demand? 16
Feature Analysis Usage Analytics Info: Since many BaaS pricing plans can vary based on usage, having a means to view analytics is a vital part of wisely (& economically) using the service. Depending on what metrics are tracked, usage analytics may also give you insight into how your app is being used. Good questions to ask: Does the service enable you to track the number of API calls, storage quota or other feature usage? Does the service support custom events which you can provide to track either feature usage, performance data and/or campaign response(s)? Does the provider give you the ability to query the usage over time, filter the data and export reports? 17
Feature Analysis Dashboard/UI Info: Most BaaS providers have a web-based interface which you can use to manage your data, services and view reports. Good questions to ask: Does the provider give you an option to browse/ search your data through some sort of portal or dashboard interface? Can you manage users or use a form to generate push notifications? 18
Feature Analysis User Admin Info: Many BaaS options provide built-in user management features. Your target users may not care to create yet another login in order to use your app. Good questions to ask: Does the service allow you to create users? Does it focus on role-based user permissions, or allow granular claims-based permissions? At what level can you restrict information schemas/ tables, records, fields? Does the BaaS provide integration with 3rd party authentication with sites like Facebook, Twitter, Google and others? 19
Feature Analysis Custom Code Info: It s difficult to generalize to a common use-case, and still enable enough flexibility to users without giving them a means to inject custom logic for certain operations. Whether it s validation, injecting a custom step, priming a cache or other needs, a good question to ask is your provider allows you the necessary hooks to inject your own code. Good question to ask: What language(s) are supported? 20
Mobile BaaS Options Firebase https://www.firebase.com Telerik http://www.telerik.com/platform/backendservices Kinvey http://www.kinvey.com 21
icloud icloud Storage APIs enable your apps to store content in icloud, keeping your apps up to date automatically Use icloud to give your users a consistent and seamless experience across icloud-enabled devices https://developer.apple.com/icloud/index.php icloud Web Tools to view the content your app has stored in icloud https://developer.icloud.com 22
Passbook Passbook gives users a whole new way to organize boarding passes, tickets, gift cards, and loyalty cards You can bring up passes in your app with Pass Kit APIs, send them via email, or post them on the web You can also set items to appear at certain times or locations and update items with push notifications https://developer.apple.com/passbook/ 23
Game Center Games on ios and OS X can take advantage of Game Center, Apple s social gaming network Game Center enables your users to track their best scores on a leaderboard, compare their achievements, invite friends to play a game, and start a multiplayer game through auto-matching https://developer.apple.com/game-center/ 24
Resources http://www.developereconomics.com/findingright-baas/ 25