droidcon2013 facebook sdk treacy

Post on 09-May-2015

585 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

developers

Connor Treacyconnor@fb.com@connortreacy

Re-engineering the Facebook SDKfor Android

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

!"#m times

!""M monthly active mobile users

# Billion monthly active users

$"% of the top $"" mobile apps

& of the top #" grossing mobile apps

DrivesTraffic

ShareStories

YourApp

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 !."

Post-SDK #."....

Android moved on

NEW!

Fragments

MyAppActivity

Activity

Activity Hierarchy App Ecosystem

Facebook moved on

Native App Improvements

PlatformStability

App Install Traffic

Developers expected more

Objectives

1. Restructure for additive features

2. Native UI elements and Fragment support

3. Build features for high-value scenarios

Principles

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

2. Feature parity with Facebook SDK for iOS

3. Better API stability

Facebook SDK for Android $.%

http://developers.facebook.com/android

.!

Better Modularity

LoginButton FriendPickerFragment ProfilePictureViewNative UI

GraphUser GraphObject.Factory OpenGraphActionGraph

Core Session Request UiLifecycleHelper Settings

Facebook FacebookActivity

YourApp

Better API interaction

Facebook.request

FacebookError

Request

RequestAsyncTask RequestBatch

Response

FacebookException FacebookRequestError

FacebookAuthorizationException FacebookServiceException

‣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 $."

‣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 !."

‣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 $."

‣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 !."

valid cache?

new Session() CREATED_TOKEN_LOADED

CREATED session.openFor…()

session.open()

OPENED

success?

CLOSED_LOGIN_FAILED

OPENING

Yes

Yes

No

No

Session Lifecycle

session.reauthorizeFor…()

session.close()

OPENED

success?

OPENED

Yes

No

CLOSED

OPENED_TOKEN_UPDATED

Session Lifecycle

Feed Dialog

FriendPickerFragment PlacePickerFragment

Growing your app

Growing your app

Settings.publishInstallAsync(...);

Facebook SDK 3.0.1for Android

developers.facebook.com/android

top related