Building Cloud-powered Mobile
Apps
Jenny Sun, AWS Solution Architect
Session Goals
• Mobile Apps on AWS
• How to build a mobile app today?
– Social Logins
– Geo Tagging
– File and Data Storage
– Push Notifications
– Data Analytics
如果我们改变人们的移
动阅读方式?
释放创造力
如果我们改变人们的旅
行方式?
释放创造力
acquired by Facebook for $1B April 2012
valued at $3B November 2012
valued at $2.5B February 2013
acquired by Yahoo! for $1.1B May 2013
acquired by Google for $1.1B June 2013
acquired by Facebook April 2013
“亚马逊AWS可能是对移动和Web 应用程
序开发者而言最重要的事情。杰夫·贝佐
斯 (Jeff Bezos) 偶然或者也许是有意
推动
了整个一代应用程序的开发
。
”
“云就如同培养创业公司的沃土”
Authenticate users
Authorize access
Analyze User Behavior
Store and share media
Synchronize data
Deliver media
Store shared data
Stream real-time data
Track Retention
Send push notifications
Manage users and identity providers
Securely access cloud resources
Sync user prefs across devices
Track active users, engagement
Manage funnels,
Campaign performances
Store user-generated photos Media and share them
Automatically detect mobile devices Deliver content quickly globally
Bring users back to your app by sending messages reliably
Store and query fast NoSQL data across users and devices
Collect real-time clickstream logs and take actions quickly
Your Mobile
Introducing AWS Mobile Services
Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push
Kinesis Connector DynamoDB Connector S3 Connector SQS Connector SES Connector
AWS Global Infrastructure (10 Regions, Availability Zones, 51 Edge Locations)
Core Building Block
Services
Mobile Optimized
Connectors
Mobile Optimized
Services
Your Mobile App, Game or Device App
AWS Mobile SDK, API Endpoints, Management Console
Compute Storage Networking Analytics Databases
Cross-platform, Optimized for Mobile
Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push
Kinesis Connector DynamoDB Connector S3 Connector SQS Connector SES Connector User identity &
data synchronization service
Store any NoSQL data and also map mobile OS specific objects to
DynamoDB tables
Fast cross-platform Analytics & reporting Service
Powerful Cross-platform Push notification service
Recorder that can handle intermittent network connection
Easily upload, download to S3 and also pause,
Fully Integrated AWS Mobile SDK
• Common authentication mechanism across
all services
• Automatically handle intermittent network
connections
• Cross-platform Support: Android, iOS, Fire
OS (Unity, PhoneGap, Cordova coming
soon)
• Native SDKs optimized for Mobile OS, for
example, uses the local offline caching
architecture
Authenticate users
Authorize access
Analyze User Behavior
Store and share media
Synchronize data
Deliver media
Store shared data
Stream real-time data
Track Retention
Send push notifications
Manage users and identity providers
Securely access cloud resources
Sync user prefs across devices
Track active users, engagement
Manage funnels,
Campaign performances
Store user-generated photos Media and share them
Automatically detect mobile devices Deliver content quickly globally
Bring users back to your app by sending messages reliably
Store and query fast NoSQL data across users and devices
Collect real-time clickstream logs and take actions quickly
Your Mobile
Authenticate users
Authorize access
Analyze User Behavior
Store and share media
Synchronize data
AWS Mobile SDK Amazon Mobile AnalyticsDeliver media
Amazon Cognito (Sync)AWS Identity and Access Management
Amazon Cognito
(Identity Broker) Amazon S3 Transfer Manager
Amazon CloudFront (Device Detection)
Store shared data
Amazon DynamoDB (Object Mapper)
Stream real-time data
Amazon Kinesis (Recorder)
Track Retention
Amazon Mobile Analytics
Send push notifications
Amazon SNS Mobile Push
Your Mobile
Authenticate users
Authorize access
Analyze User Behavior
Store and share media
Synchronize data
AWS Mobile SDK Amazon Mobile AnalyticsDeliver media
Amazon Cognito (Sync)AWS Identity and Access Management
Amazon Cognito
(Identity Broker) Amazon S3 Transfer Manager
Amazon CloudFront (Device Detection)
Store shared data
Amazon DynamoDB (Object Mapper)
Stream real-time data
Amazon Kinesis (Recorder)
Track Retention
Amazon Mobile Analytics
Send push notifications
Amazon SNS Mobile Push
Your Mobile
Introducing Amazon Cognito
Cross-device and Cross-platform Sync
Securely access AWS services from Mobile
device
Simplifies Identity and Access Management
Implement security best practices
“Your App data is secure, available offline, and kept in sync between devices”
Asynchronously sync user data across devices and platforms Manage unique identity
for your user across identity providers
Identity
Providers
Unique
Identities
Joe
Anna
Bob
Any Device
Any Platform
Any AWS
Service
Helps implement security best
practices
Securely access any AWS Service from mobile
device. It simplifies the interaction with AWS
Identity and Access Management
Support Multiple Login Providers
Easily integrate with major login providers for
authentication.
Unique Users vs. Devices
Manage unique identities. Automatically
recognize unique user across devices and
platforms.
Amazon Cognito Identity
Mobile Analytics
Amazon Cognito for Unauthenticated Identities
Unique Identifier for Your “Things”
“Headless” connected devices can also
securely access cloud services.
Save Data to the Cloud
Save app and device data to the cloud and
merge them after login
Guest User Access
Securely access AWS resources and leverage
app features without the need to create an
account or logging in
Visitor Preferences Cognito Store GuestGetting Started with Cognito in 3 steps
Sign up for AWS Account and login to AWS Management Console
Download and integrate the Mobile SDK and store and
sync user data in a dataset
Amazon Cognito (Identity Broker)
Identitypool
Identity Providers
Pool of identities that share the same trust policy
Access Policy Access to AWS Services identitypool Unauthenticated Identities authenticated identities
AWS IAM Roles AWS Account Web Identity Federation S3 DynamoDB
Access Policy for the IAM Role
{ "Effect":"Allow", "Action":["s3:*"], "Resource":"*" } { "Effect": ”Deny", "Action": ["dynamodb:*"], "Resource": "*" } { "Effect": "Allow", "Action": [”cognito-sync:*"], "Resource": "*" }Allow
Actions:
All S3, Sync store Operations
Resource:
What have customers told us about “Synchronized
Profile”
People have multiple devices and want to transition between devices.
Implementing a user profile that syncs across devices, OS, apps is hard.
Amazon Cognito Sync
User Data
Storage and
Sync
Any Platform
iOS/Android/FireOS
Store App Data, Preferences and State
Save app and device data to the cloud and merge
them after login
Cross-device Cross-OS Sync
Sync user data and preferences across devices
with one line of code
Work Offline
Data always stored in local SQLite DB first.
Works seamlessly when intermittent or no
connectivity
k/v data
Amazon Cognito Sync
Offline: The client SDK manages a local SQLite data store to allow the app to work even when connectivity is not available.
Fast: The methods to read and write data only interact with the local SQLite database.
Intelligent Sync: The sync method compares the local version of the data to the cloud sync store, pushes up deltas and pulls down new changes.
Flexible Conflict resolution: The sync method first reads the changes then writes its local changes to the cloud sync store By default Cognito assumes that the
last write wins. Developers can override and
implement their own conflict resolution programmatically
Integrating Cognito Sync functionality is dead simple
Initialize the CredentialsProvider and CognitoClient
Call synchronize on the dataset
Create or open Dataset and Add Key Values
provider = new CognitoCredentialsProvider(context, AWS_ACCOUNT_ID, COGNITO_POOL_ID, COGNTIO_ROLE_UNAUTH, COGNITO_ROLE_AUTH);
cognito = new DefaultCognitoSyncClient(context, COGNITO_POOL_ID, provider);
Integrating Cognito Sync functionality is dead simple
Initialize the AWSCognitoSyncClient
Call synchronize on the dataset
Create or open Dataset and Add Key Values
DataSet *dataset = [syncClient openOrCreateDataSet:@"myDataSet"]; NSString *value = [dataset readStringForKey:@"myKey"];
[dataset putString:@"my value" forKey:@"myKey"];
AWSCognitoSyncClient *syncClient = [[AWSCognitoSyncClient alloc] initWithConfiguration: configuration];
[dataset synchronize];
What Customers Told Us About “Mobile Analytics”
Developers deeply value user analytics and consider it an integral part
of their app development process. They want to monitor their most
Amazon Mobile Analytics
Scalable and Generous Free Tier
Focus on metrics that matter. Usage reports
available within 60 minutes of receiving data
from an app
Fast
Scale to billions of events per day from
millions of users.
Own Your Data
“Easily collect, visualize and understand your app usage data at scale”
Data collected are not shared, aggregated, or
Getting Started with Mobile Analytics in 3 steps
Sign up for AWS Account and create or use existing Cognito ID in
the AWS Management Console
View engagement and session activity reports in the
AWS Management console within minutes
Key Business Metrics
(with one line of code)
1. Monthly Active Users
(MAU)
2. Daily Active Users
(DAU)
3. New Users,
4. Daily Sessions,
5. Sticky Factor,
6. 1-Day Retention,
7. Avg. Revenue per DAU,
8. Daily Paying Users,
Track Retention
User retention is a key
indicator to judge the
outcome of a marketing
campaign, new feature
introduction, UX changes,
app updates, etc.
Mobile Analytics provide four
charts to track daily or
Get behavioral insights into app specific
actions that your users take
Reports provide a view of how often custom
events occur. You can add further context
with Attributes and Metrics, to each custom
event
Examples
Track the number of Likes/Shares, per article, in a news app
Understand player abort rates per level, in a game Number of songs played, per user session, in a music app
In-app item popularity in a shopping app
Integrating Mobile Analytics is super simple
Initialize the AmazonMobileAnalyticsClient. That’s it! Get Session
Activity in the AWS Management Console.
For Custom Events activity reports, add events.
Add OnResume() and OnPause()
analytics = new AmazonMobileAnalytics(provider, context, "SnakeGameAWS”);
EventClient eventClient = analytics.getEventClient();
MobileAnalyticsEvent visitEvent = eventClient.createEvent("speedSet"); eventClient.recordEvent(visitEvent);
Integrating Mobile Analytics is super simple
Initialize the AmazonMobileAnalytics object. That’s it! Get Session
Activity in the AWS Management Console.
Submit the event. If we don't call submitEvents, events
will automatically be submitted at periodic intervals.
Create add Custom Events
[eventClient submitEvents];
id<AWSMobileAnalyticsEventClient> eventClient = analytics.eventClient; id<AWSMobileAnalyticsEvent> level1Event = [eventClient
createEventWithEventType:@"level1Complete"];
AWSMobileAnalytics* analytics = [AWSMobileAnalytics
defaultAWSMobileAnalyticsWithIdentifier:@"someuniqueid"];
Amazon S3 Connector: Transfer Manager
S3 Connector
• Multipart upload/download media
to/from S3 (photos, videos, audio)
• No backend required
• Automatic retries
• Pause, resume, cancel functions
// Creating the transfer manager
self.transferManager = [S3TransferManager new];
self.transferManager.s3 = s3client;
// Upload image
[self.transferManager uploadFile:fileName bucket:bucketName key:objectName];
// Download image
[self.transferManager downloadFile:fileName bucket:bucketName key:objectName];
// Pause, Resume, Cancel
[self.transferManager pauseAllTransfers];
[self.transferManager resumeAllTransfers];
[self.transferManager cancelAllTransfers];
What Customers Told Us About “Push Notifications”
Each platform works differently, and push gets even more
complex as you scale to support millions of devices.
Cloud App
Amazon SNS Cross-platform Mobile Push Internet Apple APNS Google GCM Amazon ADM Windows WNS and MPNS Baidu CP
Industry’s First!
New!
With Amazon SNS, developers can send push notifications on multiple platforms and reach mobile users around the world
New features:
Message Expiry Time
Message Attributes
Amazon SNS Mobile Push
Android Phones and Tablets Apple iPhones and iPads
Kindle Fire Devices
Android Phones and Tablets in China
iOS
You can send a distinct payload for each platform, or
publish one common message for all platforms.
Developers Love Cross-Platform Features of SNS
Fast reliable
notification for every
Email received is
powered by SNS
Customers love
high scale and
Reliability of SNS
High-profile Startups
trust SNS for their
high-profile launches
Secret.ly
Advanced targeted
notifications
bring players back into
the game
Mature games increase
retention using SNS
Launched its Android
App with SNS, no
provisioning required
Jetpack Joyride
Amazon
Kinesis
S3
Redshift
Kinesis
enabled
Apps on
EC2
AWS
Mobile
SDK
Amazon Kinesis Connector for Mobile
Apps
For sophisticated
User Behavior
Analysis
Integrated AWS Mobile SDK
Generic batching system that
handles intermittent network
connection and also optimize
battery utilization
Authenticate users
Authorize access
Analyze User Behavior
Store and share media
Synchronize data
Deliver media
Store shared data
Stream real-time data
Track Retention
Send push notifications
Manage users and identity providers
Securely access cloud resources
Sync user prefs across devices
Track active users, engagement
Manage funnels,
Campaign performances
Store user-generated photos Media and share them
Automatically detect mobile devices Deliver content quickly globally
Bring users back to your app by sending messages reliably
Store and query fast NoSQL data across users and devices
Collect real-time clickstream logs and take actions quickly
Your Mobile
Authenticate users
Authorize access
Analyze User Behavior
Store and share media
Synchronize data
AWS Mobile SDK Amazon Mobile AnalyticsDeliver media
Amazon Cognito (Sync)AWS Identity and Access Management
Amazon Cognito
(Identity Broker) Amazon S3 Transfer Manager
Amazon CloudFront (Device Detection)
Store shared data
Amazon DynamoDB (Object Mapper)
Stream real-time data
Amazon Kinesis (Recorder)
Track Retention
Amazon Mobile Analytics
Send push notifications
Amazon SNS Mobile Push
Your Mobile
Key Takeaways
Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push
Kinesis Connector DynamoDB Connector S3 Connector SQS Connector SES Connector
AWS Global Infrastructure (10 Regions, Availability Zones, 51 Edge Locations)
Core Building Block
Services
Mobile Optimized
Connectors
Mobile Optimized
Services
Your Mobile App, Game or Device App
AWS Mobile SDK, API Endpoints, Management Console
Compute Storage Networking Analytics Databases
Key Takeaways
Amazon Cognito Amazon Mobile Analytics Amazon SNS Mobile Push
Kinesis Connector DynamoDB Connector S3 Connector SQS Connector SES Connector
AWS Global Infrastructure (10 Regions, Availability Zones, 51 Edge
Locations)
Core Building Block
Services
Mobile Optimized
Connectors
Mobile Optimized
Services
Your Mobile App, Game or Device App
AWS Mobile SDK, API Endpoints, Management Console
Compute Storage Networking Analytics Databases