droidcon2013 facebook sdk treacy

27
developers Connor Treacy [email protected] @connortreacy Re-engineering the Facebook SDK for Android

Upload: droidcon-berlin

Post on 09-May-2015

585 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Droidcon2013 facebook sdk treacy

developers

Connor [email protected]@connortreacy

Re-engineering the Facebook SDKfor Android

Page 2: Droidcon2013 facebook sdk treacy

In the last !" days, Facebook sent users to Google Play & the Apple App Store

!"#m times

Page 3: Droidcon2013 facebook sdk treacy

!""M monthly active mobile users

# Billion monthly active users

$"% of the top $"" mobile apps

& of the top #" grossing mobile apps

Page 4: Droidcon2013 facebook sdk treacy

DrivesTraffic

ShareStories

YourApp

Page 5: Droidcon2013 facebook sdk treacy

Android versions over time

!

"!

#!

$!

%!

&!!

Dec "!!'June "!&!

Dec "!&!June "!&&

Dec "!&&

June "!&"

Dec "!&"

!." Cupcake!.# Donut$.%$.! Eclair$.$ Froyo$.& Gingerbread& Honeycomb' Ice Cream'.! Jellybean

SDK #."

Source: bgr.com

SDK !."

SDK !."

Page 6: Droidcon2013 facebook sdk treacy

Post-SDK #."....

Page 7: Droidcon2013 facebook sdk treacy

Android moved on

NEW!

Fragments

MyAppActivity

Activity

Activity Hierarchy App Ecosystem

Page 8: Droidcon2013 facebook sdk treacy

Facebook moved on

Native App Improvements

PlatformStability

App Install Traffic

Page 9: Droidcon2013 facebook sdk treacy

Developers expected more

Page 10: Droidcon2013 facebook sdk treacy
Page 11: Droidcon2013 facebook sdk treacy
Page 12: Droidcon2013 facebook sdk treacy

Objectives

1. Restructure for additive features

2. Native UI elements and Fragment support

3. Build features for high-value scenarios

Page 13: Droidcon2013 facebook sdk treacy

Principles

1. Low-risk upgrage path from SDK !."

2. Feature parity with Facebook SDK for iOS

3. Better API stability

Page 14: Droidcon2013 facebook sdk treacy

Facebook SDK for Android $.%

http://developers.facebook.com/android

.!

Page 15: Droidcon2013 facebook sdk treacy

Better Modularity

LoginButton FriendPickerFragment ProfilePictureViewNative UI

GraphUser GraphObject.Factory OpenGraphActionGraph

Core Session Request UiLifecycleHelper Settings

Facebook FacebookActivity

Page 16: Droidcon2013 facebook sdk treacy

YourApp

Better API interaction

Facebook.request

FacebookError

Request

RequestAsyncTask RequestBatch

Response

FacebookException FacebookRequestError

FacebookAuthorizationException FacebookServiceException

Page 17: Droidcon2013 facebook sdk treacy

‣Instantiate the Facebook object with your App ID‣Most activity managed from the Facebook object

fbconnection  =  new  Facebook("1123581321");

fbconnection.authorize(          getActivity(),            new  String[]  ("publish_actions",  “user_likes”),                          dialogListener);

Initializing with the SDK $."

Page 18: Droidcon2013 facebook sdk treacy

‣Greater separation of concerns: Session, Request, Response, UI elements‣Set up the App ID through the string resources and Android Manifest files

<string  name="app_id">480369938658210</string>

...        <meta-­‐data              android:name="com.facebook.sdk.ApplicationId"                android:value="@string/app_id"  /></application>

Initializing with the SDK !."

Page 19: Droidcon2013 facebook sdk treacy

‣Extend the FacebookActivity class‣Handle session state changes by overriding the abstract method in

FacebookActivity

public  class  MainActivity  extends  FacebookActivity  {

@Overrideprotected  void  onSessionStateChange(    SessionState  state,  Exception  exception)  {...}

Activity Lifecycle with SDK $."

Page 20: Droidcon2013 facebook sdk treacy

‣Keep your own Activities‣Instantiate a UiLifeCycleHelper and keep it in step with your Activity

public  class  MainActivity  extends  WhateverYouWantActivity  {

@Overridepublic  void  onCreate(Bundle  savedInstanceState)  {        super.onCreate(savedInstanceState);

       uiHelper  =  new  UiLifecycleHelper(this,  callback);        uiHelper.onCreate(savedInstanceState);

Activity Lifecycle with SDK !."

Page 21: Droidcon2013 facebook sdk treacy

valid cache?

new Session() CREATED_TOKEN_LOADED

CREATED session.openFor…()

session.open()

OPENED

success?

CLOSED_LOGIN_FAILED

OPENING

Yes

Yes

No

No

Session Lifecycle

Page 22: Droidcon2013 facebook sdk treacy

session.reauthorizeFor…()

session.close()

OPENED

success?

OPENED

Yes

No

CLOSED

OPENED_TOKEN_UPDATED

Session Lifecycle

Page 23: Droidcon2013 facebook sdk treacy

Feed Dialog

Page 24: Droidcon2013 facebook sdk treacy

FriendPickerFragment PlacePickerFragment

Page 25: Droidcon2013 facebook sdk treacy

Growing your app

Page 26: Droidcon2013 facebook sdk treacy

Growing your app

Settings.publishInstallAsync(...);

Page 27: Droidcon2013 facebook sdk treacy

Facebook SDK 3.0.1for Android

developers.facebook.com/android