1 Mobile Software Development Framework: Mobile-Cloud Services (Push/Track) 10/18/2012 Y. Richard Yang.

Slides:



Advertisements
Similar presentations
SIP and Instant Messaging. SIP Summit SIP and Instant Messaging What Does Presence Have to Do With SIP? How to Deliver.
Advertisements

IM May 24, 2000 Introduction to SIP Jonathan Rosenberg Chief Scientist.
Thialfi: A Client Notification Service for Internet-Scale Applications
Cross Platform Push with Azure
Staying in Sync with Cloud 2 Device Messaging. About Me Chris Risner Twitter: chrisrisner.
Attie Naude 14 May 2013 Windows Azure Mobile Services.
My first computer: The Apple ][ It wanted to be programmed.
1Proprietary and Confidential AirVantage API – Getting started David SCIAMMA – June 13th 2014.
Cellular Networks and Mobile Computing COMS , Fall 2012 Instructor: Li Erran Li
Cellular Networks and Mobile Computing COMS , Spring 2014 Instructor: Li Erran Li
Push to ALL the iPhones with Azure Chris Risner Senior Technical Microsoft Azure.
Introduction to push technology © 2009 Research In Motion Limited.
A Context Aware Framework Mark Assad Supervisor: Bob Kummerfeld.
Object-Oriented Programming with Java The Java Event Model Lecture 5.
3.5 Interprocess Communication
Android Application Development. Agenda  Android Business Model  Why Android  Android application market space  Market Segments & Target customers.
WhereStore: Location-based Data Storage for Mobile Devices Interacting with the Cloud Patrick Stuedi, Iqbal Mohomed, Doug Terry Microsoft Research.
Google AppEngine. Google App Engine enables you to build and host web apps on the same systems that power Google applications. App Engine offers fast.
Name Title Microsoft Corporation Push Notification Introduction and Platform Interaction.
NextGen Technology upgrade – Synerizip - Sandeep Kamble.
By Mihir Joshi Nikhil Dixit Limaye Pallavi Bhide Payal Godse.
Developing Push Notifications (C2DM) for Android Vijai Co-Founder Adhish Technologies, Sweet’N’Spicy apps.
1 Mobile Software Development Framework: Adaptive Mobile Applications 10/23/2012 Y. Richard Yang.
Google Cloud Messaging for Android (GCM) is a free service that helps developers send data from servers to their Android.
Datacenter LOB web service LOB app Partner Mobile Device.
1 Mobile Software Development Framework: Android 2/28/2011 Y. Richard Yang.
1 Mobile Software Development Framework: Mobile-Cloud Service 10/18/2012 Y. Richard Yang.
1 Tradedoubler & Mobile Mobile web & app tracking technical overview.
Kirill Principal Lead Program Manager High Scale Cross Platform Push Notifications.
Windows News app uses Notification Hubs Platform Notification Service App back-end Client app.
The HDF Group ESIP Summer Meeting HDF Studio John Readey The HDF Group 1 July 8 – 11, 2014.
WEB PUSH Johannes Brodwall. Outline The low down Is it time? Implementation notes Firefox Chrome Safari Implementation bits.
1 Cisco Unified Application Environment Developers Conference 2008© 2008 Cisco Systems, Inc. All rights reserved.Cisco Public Introduction to Etch Scott.
Copyright © Cybage Software Pvt. Ltd. All Rights Reserved. Cybage Confidential. Drupal Web Services 1 Authored by: Chaitanya Anil Kulkarni Presented.
Communicating Security Assertions over the GridFTP Control Channel Rajkumar Kettimuthu 1,2, Liu Wantao 3,4, Frank Siebenlist 1,2 and Ian Foster 1,2,3 1.
Zdenek Nejedly, Campus Services Rasim Duric, Lelio Fulgenzi, Deborah MacDougall, Networking Services Computing & Communications Services University of.
1 Mobile Software Development Framework: Adaptive Mobile Applications 10/23/2012 Y. Richard Yang.
Jini Architecture Introduction System Overview An Example.
1 Mobile Software Development Framework: Android IPC; Mobile Push Notification 10/16/2012 Y. Richard Yang.
Cellular Networks and Mobile Computing COMS , Spring 2013 Instructor: Li Erran Li
FCM Workflow using GCM.
FriendFinder Location-aware social networking on mobile phones.
FriendFinder Location-aware social networking on mobile phones.
AMQP, Message Broker Babu Ram Dawadi. overview Why MOM architecture? Messaging broker like RabbitMQ in brief RabbitMQ AMQP – What is it ?
Poster Print Size: This poster template is 50” high by 30” wide and is printed at 120% for a 60” high by 36” wide poster. It can be used to print any poster.
OERA Service Message Requests and Responses. System at rest service message manager business component IServiceProvider service message manager IServiceProvider.
Secure Mobile Development with NetIQ Access Manager
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
Methods of Tracking Position i Pod Touch – Wi-Fi used to find location by detecting known hotspots. iPhone – Cellular triangulation uses the mobile communication.
AMSA TO 4 Advanced Technology for Sensor Clouds 09 May 2012 Anabas Inc. Indiana University.
1. 2 Android location services Determining a device’s current location Tracking device movements Proximity alerts.
CS434/534: Topics in Networked (Networking) Systems Mobile Networking System: Making Connections: Cloud; NFC Yang (Richard) Yang Computer Science Department.
MaaS360 MDM for iOS, Android & Windows Phone 7
Randy Dalrymple HillyRoad, LLC
Android Application -Architecture.
Slicer: Auto-Sharding for Datacenter Applications
Notification Sisoft Technologies Pvt Ltd
Tracking and Booking Taxi
Observer Design Pattern
Notifications and Services
The Improvement of PaaS Platform ZENG Shu-Qing, Xu Jie-Bin 2010 First International Conference on Networking and Distributed Computing SQUARE.
IBM Data Server Gateway for OData
KMIP Client Registration Ideas for Discussion
intro to notifications in iOS 10
Mobile Software Development Framework: Android
SharePoint Online Authentication Patterns
Technical Capabilities
Apple Push Notification Service
Computer Network Information Center, Chinese Academy of Sciences
Plug-In Architecture Pattern
Presentation transcript:

1 Mobile Software Development Framework: Mobile-Cloud Services (Push/Track) 10/18/2012 Y. Richard Yang

2 Outline r Admin r Mobile cloud service m Push notification service m Storage service m Track service m Split service

3 Admin. r HW3 posted

Recap: Accessing Data in Cloud r A typical design pattern is that a device updates/receives data in the cloud m Cloud as a rendezvous point r Challenge: How do you keep data on a device fresh? 4

Recap: Solution Space r Mobile poll r Cloud push r Each app push r Shared (infrastructure) push 5

Shared Push Service r A single persistent connection from device to a cloud push service provider r Multiple application providers push to the service provider r Service provider pushes to a device using the persistent connection r Two examples m Apple Push Notification Service (APNS) m Google Cloud Messaging (GCM) 6

Design Requirements of a Shared Push Service r Security/Authorization m Do not allow arbitrary app to push to a device r Scalability m A large scale system may have millions of clients r Fault tolerance m Client/device, push servers all can fail r Generality m Can be used by diverse applications 7

Design Point: Authorization 8 AppApp Device Registration(DEV_ID, App_ID) Design 2: App query registered devices; Multicast Design 3: Device notifies registration ID to its server; Design 1: App does not know registered devices. Broadcast to all.

Design Point: What to Push? r Option 1: Just push signal (data available) to devices and then devices fetch from app servers r Option 2: push app data 9 AppApp Device

Design Point: Reliability (What Can Go Wrong) 10 AppApp Device RegID=Registration(DEV_ID, App_ID) App sends to regIDs Device notifies regID to its server;

Soft State Design r State at the third party is soft state if the the entity who sets up the state does not refresh it, the state will be pruned at the 3 rd party 11

Apple Push Notification Service 12 r iOS device maintains a persistent TCP connection to an Apple Push Notification Server(APNS) A push notification from a provider to a client application Multi-providers to multiple devices

APNS Authorization: Device Token 13 r Device token Contains information that enables APNs to locate the device m Client app needs to provide the token to its app provider m Device token should be requested and passed to providers every time your application launches

Apple Push Notification Data r Each push notification carries a payload m 256 bytes maximum m Best effort delivery r App provider provides a JSON dictionary object, which contains another dictionary identified by the key aps r aps specifies the following actions An alert message to display to the user A number to badge the application icon with A sound to play 14

APNS Example: Client (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 2. { 3. // Let the device know we want to receive push notifications 4. [[UIApplication sharedApplication] registerForRemoteNotificationTypes: 5. (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; return YES; 8. } 9. - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo 10. {//userInfo contains the notification 11. notification: userInfo); 12. } (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 14. { 15. token is: deviceToken); 16. }

APNS Example: Server $devicetoken ='f05571e4be60a4e11524d76e f430522fb470c46fc6810fffb07af7’; 2. // Put your private key's passphrase here: 3. $passphrase = 'PushChat'; 4. // Put your alert message here: 5. $message = ’CS434: my first push notification!'; 1. $ctx = stream_context_create(); 2. Stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem'); 3. stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 4. // Open a connection to the APNS server 5. $fp = stream_socket_client( 6. 'ssl://gateway.sandbox.push.apple.com:2195', $err, 7. $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 8. if (!$fp) 9. exit("Failed to connect: $err $errstr". PHP_EOL); 10. echo 'Connected to APNS'. PHP_EOL;

APNS Example: Server (cont’) // Create the payload body 17. $body['aps'] = array( 18. 'alert' => $message, 19. 'sound' => 'default' 20. ); 21. // Encode the payload as JSON 22. $payload = json_encode($body); 23. // Build the binary notification 24. $msg = chr(0). pack('n', 32). pack('H*', $deviceToken). pack('n', strlen($payload)). $payload; 25. // Send it to the server 26. $result = fwrite($fp, $msg, strlen($msg)); 27. if (!$result) 28. echo 'Message not delivered'. PHP_EOL; 29. else 30. echo 'Message successfully delivered'. PHP_EOL; 31. // Close the connection to the server 32. fclose($fp);

Google Cloud Messaging r Very similar to APNS 18 GCM Servers See for detailed steps

GCM Flow: App Developer Registration r App developer registers a project at Google r Open API console: r After Create project 19 Project ID; Sender ID

GCM Flow: Device App Registration r Enable cloud to device messaging in your app m Add permissions in Manifest m App (on device) registers with Google to get registration ID 20 public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GCMRegistrar.checkDevice(this); GCMRegistrar.checkManifest(this); final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { GCMRegistrar.register(this, SENDER_ID); } else { Log.v(TAG, "Already registered"); } … }

Device App Handle Events 21  The GCMBroadcastReceiver (defined in GCM library) handles the broadcast messages, and calls methods defined in.GCMIntentService, if you define this service

GCMIntentService 22 // called after GCM library finishes registration // you need to send regId to your server onRegistered(Context context, String regId); onUnregistered(Context context, String regId); // called after your server sends a msg to GCM, and // GCM sends to this device onMessage(Context context, Intent intent); onError(Context context, String errorId); onRecoverableError(Context context, String errorId)

App Server r If you use GCM server library 23 import com.google.android.gcm.server.*; Sender sender = new Sender(myApiKey); Message message = new Message.Builder().build(); MulticastResult result = sender.send(message, devices, 5);

Summary: GCM Flow r Enabling cloud to device messaging m App (on device) registers with Google to get registration ID m App sends registration ID to its App Server r Per message m App Server sends (authenticated) message to Google m Google sends message to device, which sends to app r Disabling cloud to device messaging m App can unregister ID, e.g., when user no longer wants push 24

Additional Details r See Thialfi: A Client Notification Service for Internet-Scale Applications, by Atul Adya, Gregory Cooper, Daniel Myers, Michael Piatek, ACM SOSP

Discussion: Mobile Cloud Services r We have discussed push notification service. What other services can you think of? 26

Example Mobile Cloud Services r Push notification service r Location based service m Track service (supporting location based services) r Storage and sync m Syncing and storage service (iCloud) r Proxy service (Kindle Split Browser) r Recognition services m Speech to text/text to speech service m Natural language processing service (open Siri API for 3 rd party applications in the future) 27

28 Outline r Admin r Mobile cloud service m Push notification service m Track service StarTrack Next Generation: A Scalable Infrastructure for Track-Based Applications, by Maya Haridasan, Iqbal Mohomed, Doug Terry, Chandramohan A. Thekkath, and Li Zhang, in OSDI 2010.

Location-Based Applications r Many phones already have the ability to determine their own location m GPS, cell tower triangulation, or proximity to WiFi hotspots r Many mobile applications use location information Courtesy: Maya et al.

A Common Abstraction: Track Time-ordered sequence of location readings Latitude: Longitude: Time: 07/08/10 08:46: Latitude: Longitude: Time: 07/08/10 08:46:45.125

Application: Personalized Driving Directions Goal: Find directions to new gym 31 Courtesy: Maya et al.

A Taxonomy of Applications Class of applications enabled by StarTrack 32

StarTrack System ST Client Insertion Application Location Manager Retrieval Manipulation Comparison … Application ST Client Insertion ST Server 33

System Challenges 1. Handling error-prone tracks 2. Flexible programming interface 3. Efficient implementation of operations on tracks 4. Scalability and fault tolerance 34

Challenges of Using Raw Tracks Advantages of Canonicalization: m More efficient retrieval and comparison operations m Enables StarTrack to maintain a list of non-duplicate tracks 35

StarTrack API: Track Collections  TC JoinTrackCollections (TC tCs[], bool removeDuplicates)  TC SortTracks (TC tC, SortAttribute attr)  TC TakeTracks(TC tC, int count)  TC GetSimilarTracks (TC tC, Track refTrack, float simThreshold)  TC GetPassByTracks (TC tC, Area[] areas)  TC GetCommonSegments(TC tC, float freqThreshold) Manipulation Creation  TC MakeCollection(GroupCriteria criteria, bool removeDuplicates) 36

API Usage: Ride-Sharing Application // get user’s most popular track in the morning TC myTC = MakeCollection(“name = Maya”, [ ], true); TC myPopTC = SortTracks(myTC, FREQ); Track track = GetTracks(myPopTC, 0, 1); // find tracks of all fellow employees TC msTC = MakeCollection(“name.Employer = MS”, [ ], true); // pick tracks from the community most similar to user’s popular track TC similarTC = GetSimilarTracks(msTC, track, 0.8); Track[] similarTracks = GetTracks(similarTC, 0, 20); // Verify if each track is frequently traveled by its respective owner User[] result = FindOwnersOfFrequentTracks(similarTracks);

Track Similarity S1-4 S5 S6-7 Tracks A, B s1 s2 s3 s4 s5 Track D s8 s9 Track C s6 s7

Summary r The Track abstraction is simple but quite interesting r Think about abstractions in your project 39