YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Effective Android Messaging

Effective Android MessagingJuan Gomez

Page 2: Effective Android Messaging

Agenda

• Intro

• HTTP

• WebSockets

• SMS (Text Messages)

• Network Service Discovery

• Review

• Q&A

!2

Page 3: Effective Android Messaging

Over 2 million events140 million tickets sold

$2 billion in gross ticket salesEvents in 179 countries

Eventbrite by the Numbers

Page 4: Effective Android Messaging

Intro

Who am I?

• Mobile Engineer at Eventbrite

• Android Developer

• Python enthusiast

!4

Page 5: Effective Android Messaging

Intro

Slides:

• http://lanyrd.com/profile/juandg/

• http://www.andevcon.com/slides

!5

Page 6: Effective Android Messaging

Intro

What do you mean by messaging?

• Communications between devices

• Peer-to-Peer

• Servers are “devices”, and peers too ;)

!6

Page 7: Effective Android Messaging

Intro

Where do I need messaging:

• IM apps

• Multiplayer games

• Enterprise apps

• Many more…

!7

Page 8: Effective Android Messaging

HTTP

Page 9: Effective Android Messaging

HTTP

• Effective Android HTTP by Jesse Wilson

• Presented at AnDevCon Boston

• http://bit.ly/1auYlY2

!9

Page 10: Effective Android Messaging

HTTP (Native)

HttpURLConnection vs Apache HTTP client

• Apache HTTP client works better on Eclair (2.1) and Froyo (2.2)

• HttpURLConnection is the best choice for Gingerbread (2.3) and above

!10

Page 11: Effective Android Messaging

HTTP (3rd-party)

Volley:

• Great performance and memory mgmt

• Poor documentation and support

OkHttp

• Improved fork of HttpURLConnection (as of 4.0)

• Great documentation and support

!11

Page 12: Effective Android Messaging

HTTP

• It’s not full duplex

• It’s not meant for device peer-to-peer communication

• Not ideal for low connectivity scenarios (concerts, arenas, etc.)

!12

Page 13: Effective Android Messaging

GOOGLE CLOUD MESSAGING

!13

Page 14: Effective Android Messaging

Google Cloud Messaging

!14

Page 15: Effective Android Messaging

Google Cloud Messaging

• Full duplex

• Fire & Forget

• Not always reliable

• No guarantee on time of delivery

• Relatively easy to implement

!15

Page 16: Effective Android Messaging

Google Cloud Messaging

Two implementations:

• GCM HTTP

• Based on HTTP Post requests

• Uses JSON messages

• GCM CCS

• Based on the XMPP chat protocol

• Uses XML messages

!16

Page 17: Effective Android Messaging

Google Cloud Messaging

Android Studio can implement a simple GCM back-end for you, using Google AppEngine

• Follow instructions on:

• http://googlecloudplatform.blogspot.com/2013/06/tutorial-adding-cloud-backend-to-your-application-with-android-studio_26.html

!17

Page 18: Effective Android Messaging

WEB SOCKETS

Page 19: Effective Android Messaging

WebSockets

• Full-duplex communication using Port 80

• Web Server <—> Client

• Not just for Web Browsers

• Near Real-Time

!19

Page 20: Effective Android Messaging

WebSockets on Android

• No native Android implementation

!20

Page 21: Effective Android Messaging

Web Sockets (3rd Party)

AutobahnAndroid

• Fully open source

• github.com/tavendo/AutobahnAndroid

• Commercially supported also

Socket.IO client for Android

• Fully open source

• github.com/koush/android-websockets

• Not very well supported!21

Page 22: Effective Android Messaging

SMS (TEXT MESSAGING)

Page 23: Effective Android Messaging

SMS (Text Messaging)

Pros:

• Asynchronous

• Ideal for low data connectivity

• Only option when there’s no data connectivity

• Mostly free (in the U.S. and Europe)

• Supported by “dumb” phones

!23

Page 24: Effective Android Messaging

SMS (Text Messaging)

Cons:

• Asynchronous

• No guarantee of delivery (including order)

• Limited to 160 characters per message

• Android API’s are “mostly” undocumented

• Except for the new KitKat API

!

!24

Page 25: Effective Android Messaging

SMS (Text Messaging)

When to use them:

• IM apps (duh!)

• Device activation

• Phone number verification

• As a fallback method for other protocol

• As a coordination mechanism

!25

Page 26: Effective Android Messaging

SMS (Text Messaging)

SmsManager

• Sending is really easy SmsManager smsManager = SmsManager.getDefault();

smsManager.sendTextMessage(“555-123-456“, null, "hello", null, null);

!!

!26

Page 27: Effective Android Messaging

SMS (Text Messaging)

Receiving SMS

• It’s an undocumented API

• Implement a BroadCast receiver listening for:

• android.provider.Telephony.SMS_RECEIVED

• Bundle contains an array of SmsMessage

• Checkout the new KitKat API:

• youtu.be/mdq0R2WQssQ

!27

Page 28: Effective Android Messaging

NETWORK SERVICE DISCOVERY

Page 29: Effective Android Messaging

Network Service Discovery

• Discover services available on the local network

• Based on Apple’s Bonjour

• Multiplatform support

• Android, iOS, OS X, Linux, Windows, Printers, etc.

• Only available on API Level 16 and above

!29

Page 30: Effective Android Messaging

Network Service Discovery

Alternatives if you’re not on API Level 16 yet:

• Use JmDNS ( jmdns.sourceforge.net)

• Centralized “check-in” Server on fixed IP

• DON’T Try to do multicast/broadcast yourself

• Not very efficient (really slooow!)

• Battery Drain

!

!

!30

Page 31: Effective Android Messaging

Network Service Discovery

Eventbrite engineering blog: • engineering.eventbrite.com • Android NDS Post: http://bit.ly/1aYc6RN

!31

Page 32: Effective Android Messaging

HOW WE USE IT AT EVENTBRITE?

!32

Page 33: Effective Android Messaging

How we use this at Eventbrite?

Entry Manager

• Paired with a home grown solution called “Gatekeeper”

!33

Page 34: Effective Android Messaging

How we use this at Eventbrite?

Eventbrite App

• Social Notifications

Push notification when two of your friends are attending the same event .

!

!34

Page 35: Effective Android Messaging

We’re hiring!

If you’re interested, let’s talk after the session

eventbrite.com/jobs

Page 36: Effective Android Messaging

Questions?

Download our apps:

eventbrite.com/eventbriteapp

Page 37: Effective Android Messaging

Thank You!@_juandg

[email protected]


Related Documents