37
Effective Android Messaging Juan Gomez

Effective Android Messaging

Embed Size (px)

DESCRIPTION

This class intends to guide you by providing an overview of some of the most popular messaging options on the Android Ecosystem, as well as some tips and tricks on how to successfully implement them in your Android apps. We’ll talk about Basic Http messaging, Google’s Cloud Messaging (a.k.a. Push Notifications) and SMS (a.k.a. Text messages), and finally we’ll touch on some newer techniques like Android’s Network Service Discovery (a.k.a. Bonjour) and WebSockets.

Citation preview

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]