Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Alfresco iOS SDK Gi Lee (Zia Consulting) Peter Schmidt (Alfresco)

Similar presentations


Presentation on theme: "The Alfresco iOS SDK Gi Lee (Zia Consulting) Peter Schmidt (Alfresco)"— Presentation transcript:

1 The Alfresco iOS SDK Gi Lee (Zia Consulting) Peter Schmidt (Alfresco)

2 Alfresco iOS SDK – Intro Who we are Gi Lee Zia Consulting (Technical Architect) gi.lee@ziaconsulting.com Objective-C CMIS library Peter Schmidt Alfresco Software (Senior iOS Engineer) peter.schmidt@alfresco.com Alfresco SDK library & samples apps

3 Alfresco iOS SDK – Intro What we will talk about Gi Lee CMIS library (Apache) Part of iOS Alfresco SDK Architecture & Design Code examples Peter Schmidt Alfresco SDK How to get and install it Architecture & Design Code examples Demo of Sample app How to get support

4 ObjectiveCMIS – The Basics Introducing the library Low level API for CMIS Static Cocoa Touch Library No third-party API’s Asynchronous AtomPub binding support

5 ObjectiveCMIS – The Basics The Xcode project CMIS API Library Cocoa Touch Static Library Documentation AppleDoc DocSet Min. Req. iOS 5.1 XCode 4.x ARCARC BlocksBlocks

6 ObjectiveCMIS – The Basics An open source project Open source Objective-C implementation of CMIS Based on CMIS 1.0 standard Apache 2.0 license Collaborative project Recently accepted by Apache Chemistry

7 ObjectiveCMIS – The Basics iOS specifics Naming Convention ObjectiveCMIS code prefixed with CMIS Error Handling No exceptions in iOS, use NSError As per Apple standard: “NSError object remains nil if method call is successful.” Always check! Automated Reference Counting No more retain, release, autorelease on object Blocks Used to handle asynchronous requests & callbacks

8 ObjectiveCMIS – The Basics What are blocks? Closures for Objective-C, C, C++ Introduced in iOS 4 Ad hoc functionality that can be passed like parameters Good for callbacks!

9 ObjectiveCMIS – The Basics Asynchronous handling Repository // Completion Block If(nil != session) { self.session = session; … } else { /* error handling */ } // Completion Block If(nil != session) { self.session = session; … } else { /* error handling */ } CMIS API

10 ObjectiveCMIS – Design & Architecture The API layers Client Binding API Low-Level API Follows the CMIS Domain Model More Control Clunky to Implement Client Object API Object Oriented Easy to Use Built-In LinkCache

11 ObjectiveCMIS – Design & Architecture Client API common interface

12 ObjectiveCMIS - Getting Started How do I use it? Added as a binary + Headers Simple Need to generate binary Added to a Xcode Workspace Extends workflow scope Provides full access to source code

13 ObjectiveCMIS – Getting Started … as a Generated Binary + Headers 1.Execute the script build_universal_lib.sh 2.Add generated build output folder to your project 3.Configure the build target dependency Link  libObjectiveCMIS.a 4.Configure the Target Build Settings User Header Search Paths = “$(BUILT_PRODUCTS_DIR)” [recursive] Other Linker Flags = “-ObjC –all_load”

14 ObjectiveCMIS – Getting Started … added to an Xcode workspace 1.Open/Create Xcode Workspace 1.Add the ObjectiveCMIS project to the workspace 1.Configure the build target dependency Link  libObjectiveCMIS.a 1.Configure the target Build Settings User Header Search Paths = “$(BUILT_PRODUCTS_DIR)” [recursive] Other Linker Flags = “-ObjC –all_load” 2.Configure the project build scheme (optional)

15 ObjectiveCMIS – Getting Started In a nutshell 1.Add ObjectiveCMIS to your project 2.Link the library libObjectiveCMIS.a 3.Configure the target Build Settings User Header Search Paths = “$(BUILT_PRODUCTS_DIR)” [recursive] Other Linker Flags = “-ObjC –all_load”

16 ObjectiveCMIS – Documentation http://gentlebytes.com/appledoc

17 ObjectiveCMIS – Documentation Generating the documentation Setup AppleDoc Clone the source from Github https://github.com/tomaz/appledoc Install Appledoc using the script install-appledoc.sh install-appledoc.sh –b /usr/bin/ -t ~/Library/Application\ Support/appledoc Generate Documentation Open the ObjectiveCMIS Xcode project Run the target “Documentation”

18 ObjectiveCMIS – Code Example Setup a CMIS session // Define session parameters CMISSessionParameters *params = [[CMISSessionParameters alloc] initWithBindingType:CMISBindingTypeAtomPub]; params.atomPubUrl = [NSURL URLWithString:cmisAtompubLocation]; params.username = @”devconUser"; params.password = @”devconPassword"; params.repositoryId = self.repoId; // Connect session [CMISSession connectWithSessionParameters:sessionParams completionBlock:^(CMISSession *session, NSError *error) { if (session == nil) { // Error handling code goes here // Dig into error object to determine cause } else { // CMISSession successfully connected self.session = session; } }];

19 ObjectiveCMIS – Code Example Get the root collection [self.session retrieveRootFolderWithCompletionBlock: ^(CMISFolder *folder, NSError *error) { if (nil == folder) { // Error handling code goes here // Dig into error object to determine cause } else { /* Folder object is the root */ self.rootFolder = folder; } }];

20 Objective CMIS – Code Example Query // Create Query Completion Block void(^queryCompBlock)(CMISPagedResult *pagedResult, NSError *error); queryCompBlock = ^(CMISPagedResult *pagedResult, NSError *error) { if (nil == pagedResult) { // Error handling code goes here // Dig into error object to determine cause } else { /* Process the Paged Results */ } }; NSString *queryStr = @"SELECT * FROM cmis:document WHERE CONTAINS('DevCon')" ; // Execute Query [self.session query:queryStr searchAllVersions:NO completionBlock:queryCompBlock];

21 ObjectiveCMIS How do I get the library? Alfresco / Objective-CMIS https://github.com/alfresco/Objective-CMIS

22 Alfresco iOS SDK – The Basics What is included? Sample Apps Mobile API Library Including Objective CMIS library Documentation (appledoc docset) Min. Req. iOS 5.1 XCode 4.x ARCARC JSONJSON StoryboardsStoryboards

23 Alfresco iOS SDK – The Basics How do I get the SDK? Download it from our website https://developer.alfresco.com/mobile From our public github repository https://github.com/Alfresco/alfresco-ios-sdk Online documentation/tutorial https://developer.alfresco.com/resources/alfresco/pdf/iO S-SDK-1.0.pdfhttps://developer.alfresco.com/resources/alfresco/pdf/iO S-SDK-1.0.pdf

24 Alfresco iOS SDK – The Basics How do I install it? 1.Unzip alfresco-ios-sdk.zip file 2.Open XCode 3.File menu 4.Add files to… DONE ✔

25 Alfresco iOS SDK - Architecture & Design Design Principles Repository Alfresco in the Cloud Session-Service-Model Session for connections Services for requests between app & server Model to handle data Blocks To handle asynchronous behaviour Asynchronous calls

26 Alfresco iOS SDK - Architecture & Design Overall Structure

27 Alfresco iOS SDK - Architecture & Design Session

28 Alfresco iOS SDK - Architecture & Design Services

29 Alfresco iOS SDK – Coding Create a Session #import “AlfrescoRepositorySession.h” … @property (nonatomic, strong) id session; … [AlfrescoRepositorySession connectWithUrl:url username:username password:password parameters:nil completionBlock:^(id session, NSError *error){ if(nil == session)  FAILURE  error handling else weakSelf.session = session; }];

30 Alfresco iOS SDK – Coding Blocks Everywhere Used in most methods of Alfresco SDK Used to encapsulate asynchronous REST API/CMIS calls EXAMPLE Get the children in the root folder #import “AlfrescoDocumentFolderService.h” … AlfrescoDocumentFolderService *folderService = [[AlfrescoDocumentFolderService alloc] initWithSession:self.session]; [folderService retrieveChildrenInFolder:self.session.rootFolder completionBlock:^(NSArray *children, NSError *error){ if(nil != children) { … } }];

31 Alfresco iOS SDK – Coding What about connecting to Cloud? Alfresco Cloud uses OAuth 2 for authenticating 1.Register with Cloud to get an API key and Secret key 2.Provide both in your APP 3.Alfresco iOS SDK provides a set of helper classes AlfrescoOAuthLoginViewController Connects to login page Handles the OAuth dance Returns access/refresh token as part of AlfrescoOAuthData

32 Alfresco iOS SDK – Coding Connecting to Alfresco in the Cloud #import “AlfrescoCloudSession.h” #import “AlfrescoOAuthData.h” #import “AlfrescoOAuthDataLoginViewController.h” … AlfrescoOAuthCompletionBlock completionBlock = ^void(AlfrescoOAuthData *oauthData, NSError *error){ if(nil != oauthData) { [AlfrescoCloudSession connectWithOAuthData:oauthData parameters:nil completionBlock:(id session, NSError *error{ }]; } }; AlfrescoOAuthLoginViewController *controller = [[AlfrescoOAuthLoginViewController alloc] initWithAPIKey:apiKey secretKey:secretKey completionBlock:completionBlock]; [self.navigationController pushViewController:controller animated:YES];

33 Alfresco iOS SDK – Coding Demo time

34 Alfresco iOS SDK – The Rest What about support – CMIS library? Apache mailing list dev@chemistry.apache.org Subscribe & archive: http://mail-archives.apache.org/mod_mbox/chemistry-dev/ Raise tickets in JIRA https://issues.apache.org/jira/browse/CMIS Component: objectivecmis (you’d need an account for that) Apache Chemistry website http://chemistry.apache.org

35 Alfresco iOS SDK – The Rest What about support – Alfresco SDK? Alfresco Forums https://forums.alfresco.com Look for Alfresco Mobile Raise tickets in JIRA https://issues.alfresco.com/jira/browse/MOBSDK (you need a JIRA account for this) Project: Mobile SDK Components: API Affects Version: iOS x.x Assignee: Mobile Team unassigned Have Support Agreement? Contact Support

36 Alfresco iOS SDK – The Rest Feedback, Q&A? Feedback Regarding SDK Regarding tutorials Your Questions answered


Download ppt "The Alfresco iOS SDK Gi Lee (Zia Consulting) Peter Schmidt (Alfresco)"

Similar presentations


Ads by Google