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

Droidcon2013 facebook sdk treacy

May 09, 2015

Download

Technology

Droidcon Berlin
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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