Upload
alfresco-software
View
1.942
Download
1
Embed Size (px)
DESCRIPTION
Slide deck to accompany Tech Talk Live on Alfresco's SDKs for Android and iOS.
Citation preview
Alfresco Mobile SDKs Agenda
• Overview – Why, What & How? – Gavin Cornwell
• Android SDK – Jean Marie Pascal
• iOS SDK – Peter Schmidt
Overview – Why?
• Simplify Access To Alfresco From Mobile Devices
• Uniform API To Access On-Premise Servers and The Cloud
• Enable 3rd party App Integration • Rapidly Build Alfresco Based Apps • Used For All Future Alfresco Apps
Overview – What?
Overview – Sample App
Overview – How?
Overview – How?
Overview – How?
• Create Session • Use Services • Retrieve Model Objects • Handles Asynchronous Calls For You
Android SDK
In Android world… • A common Android Application is made of
– Activities • provides a screen with which users can
interact in order to do something – Fragments (Available in android 3+)
• represents a behavior or a portion of user interface
– Loaders (Available in android 3+)
• make it easy to asynchronously load data in an activity or fragment
– Services • request information remotely to content
repository and are responsible for creating data objects.
What Alfresco Mobile - Android SDK provides… • Synchronous Alfresco Services API
– High level services + objects
• Asynchronous API – Loaders
• UI Component Library – Fragments, Adapter and manager
• Sample application – Demonstrate how to use components
It’s not just one project…
Alfresco OpenCMIS Extension
Alfresco Mobile Repository API
Alfresco Mobile Async API
Alfresco Mobile UI Components
Alfresco Applications (sample…)
APKLIB
APK
Android OpenCMIS JAR
JAR
JAR
JAR
Works on Android versions superior to 2.1
Works on Android version superior to 3.0
Dependency
Support is possible…
Alfresco OpenCMIS Extension
Alfresco Mobile Repository API
Alfresco Mobile Async API
Alfresco Mobile UI Components
Alfresco Applications (sample…)
APKLIB
APK
Android OpenCMIS JAR
JAR
JAR
JAR
Works on Android versions superior to 2.1
Android support library JAR
Dependency
Not provided
UI Library • Provides
– Images Ressources • file type icon, logo…
– Themes • Color scheme, Layout template…
– Localization Resources – Fragments and adapters
• Activities List, • Folder list, • Comments List…
Demo Time
Use cases
• Create an application from scratch – Extends and customize the sample application
• Add Alfresco oriented screen to an existing application – Use the ApkLib UI component and add a fragment
(Android 3+)
• Just need data – Use the repository API
So are you ready to level up ?
Alfresco Mobile SDK
What’s included ?
Sample App
Mobile API Library Included Objective CMIS library
Documentation (appledoc docset)
What are the libraries ? Alfresco Mobile API
(+headers) • Asynchronous handling of
requests • E.g. download/upload
documents • Additional Services, e.g.
• Comments • Tagging • Rating • Activity
• Encapsulates low level CMIS calls
Objective CMIS Library (+headers)
• Low level library to handle CMIS sessions, requests & services
• Provides CMIS standard services, e.g.
• Document/Folder (e.g. upload/create/download)
• Versioning • Search
• Mostly synchronous request • Collaborative project • Planned to add to Apache CMIS
project
iOS Specifics • Naming conventions
– Objective CMIS code prefixed with CMIS – Mobile API code prefixed with Alfresco
• Error Handling – No exceptions in iOS apps, use NSError instead
• As per Apple standard: – NSError object remains nil if method call is successful. Always check!
• ARC (Automatic Reference Counting)* – No more retain, release, autorelease on objects
• Blocks – Used extensively in Mobile API to handle asynchronous requests and callbacks
* requires iOS 5.x or later for full support
^(<parameter list>){ execution code }
iOS SDK – Async Handling
Repository
If(nil == error) { self.session = session; } else { UIAlertView *alert = [[UIAlertView. Alloc]……….. }
Alfresco Mobile API
CMIS/REST API
Background thread
Main thread
In Sample App code
How do Objective C Blocks fit in?
• Blocks were introduced in iOS 4, Mac OSX 10.6
• Ad hoc functionality that can be passed on like parameters
• Mobile API uses blocks as callbacks once requests complete – You define what your app/code needs to do within a
block
Example – Create Session NSURL *url = [NSURL URLWithString:host]; [AlfrescoRepositorySession connectWithUrl:url
username:username password:pwd settings:nil
completionBlock:^(id<AlfrescoSession> session, NSError *error){ if (nil != error) {
/* Your error handling code goes here */ }
else { self.session = session; NSLog(@"Authenticated successfully."); } }];
iOS Sample App Demo
Thank You!