droidcon2013 facebook sdk treacy
TRANSCRIPT
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