ITP 342
Mobile App Development
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
•
https://developers.facebook.com/mobile/
• Things you can do:
– Login with Facebook
– Fetch User Data
•
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
• 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/
Google APIs
• Available at:
– http://
developers.google.com
• APIs available for:
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
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
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)
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
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
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?
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
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?
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?
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)?
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?
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