SlideShare a Scribd company logo
1 of 34
Download to read offline
Alfresco iOS Mobile 

Application Details and Design
Mike Hatfield - Senior Engineer, Mobile Team
Marc Dubresson - Director of Mobile Products
Who are we?
Marc Dubresson
• Mobile Product Management
Gavin Cornwell
Mike Hatfield
• Alfresco Mobile Development Core Team
Zia
• Outsourced Mobile Development Partner
• Platinum Alfresco Professional Services & OEM Partner
Agenda
• Today’s News
• Architecture Overview
• CMIS Refresher
• Demo
• Technical Walkthrough
• Open Source Project
• Roadmap
• Questions?
Alfresco Mobile 1.1
Architecture Overview
Mostly a CMIS application talking to Alfresco
Several features specific to Alfresco
Alfresco
CMIS
REST
CMIS Refresher
CMIS Technical Committee Goals & Scope
• Content Management Interoperability Services
• Enable applications to target different ECM repositories uniformly
• Provide a set of basic services enabling richer ECM applications
and use cases
• All for loose coupling of an ECM application on the underlying
repository
• Use popular protocol bindings
• REST / AtomPub
• Web Services / SOAP
• v1.1 - JSON (Browser Binding)
Demo
Alfresco Mobile in Action – A Few Features
• CMIS:
• Login to Alfresco over HTTP or HTTPS
• Browse, Search, Display Content and Edit Metadata, Upload Files
• Create Folders
• Alfresco
• Activities
• Like & Unlike
• Comment on Documents
• iOS
• Local Downloads
• “Open In...” support to/from other apps
Design
• Universal binary
• Hierarchy of Table Views
• Navigation based app for browsing CMIS repositories
• Layered on Alfresco specific functionality
Designed for the iPad
• Navigation based app but with iPad-specific view controllers
• Split View Controller
• Still a universal binary
CMIS AtomPub Binding (XML)
Alfresco REST API (JSON)
App Launch / Sites / Browse
• iOS: Read user settings
• CMIS: Retrieve AtomPub Service Document
• Alfresco: Request Sites List
• CMIS: Request folder children for the Root Collection
• CMIS: Navigate into a folder or site
Activities
• Alfresco: Retrieve user’s activity feed
• User taps a document table cell
• CMIS: Retrieve Document via
getObjectByID service
• User taps the “info icon”
• CMIS: Retrieve Document Metadata
using getTypeDefinition service
Search
Execute a CMIS Query
• Full-text search:
•SELECT * FROM cmis:document WHERE
CONTAINS(‘keywords’)
• Search by cmis:name:
•SELECT * FROM cmis:document WHERE
CONTAINS(‘~cmis:name:’*keywords*’)
Tools for iOS Development
Mac with OS X Snow Leopard or Lion
XCode 4.2
• Integrated Development Environment
• Integrated Build System
• Debugger
• Interface Builder
• iOS Simulator

Instruments
• Performance and behaviour analysis
Getting Started
Create an iOS developer account (free)
Install the latest version of XCode 4.2 (free)
Clone the repository
• git clone https://ziadev@bitbucket.org/ziadev/alfresco-mobile.git
Open the Project
Multiple Targets in the Project
Two Targets: Alfresco & Fresh Docs
Build and Run
Select a target and the 



iOS Simulator to Use
How do I install it on my device?
See iOS Provisioning Portal Resources & How-To Guides
Sign up for a (paid) iOS Developer
Program Account
Configure profile:
Development certificate, App Id
Provision Device (UDID)
Configure & build the App for the device
I Thought This Was A DevCon?
AlfrescoAppDelegate.h
Calling an AtomPub Service
CMIS	RESTful	Request
AtomPub	XML
Alfresco
Creating an HTTP Request
• Using ASIHTTPRequest build the request
• The delegate handles events from that request
Parsing AtomPub XML
Event-Driven XML Parsing (SAX)
• Parser sends messages (parsing events) to it’s delegates
(callbacks)
Use NSXMLParser & NSXMLParserDelegate
• Recommended by Apple
• Native API
• Objective-C based implementation
Why not use the Tree-based API (DOM)?
• Apple does not provide the API for iOS
NSXMLParser & NSXMLParserDelegate
Setting up NSXMLParser
NSXMLParserDelegate methods
• –
parser:didStartElement:namespaceURI:qualifiedName:attributes:
• – parser:didEndElement:namespaceURI:qualifiedName:
• – parser:foundCharacters:
Calling Alfresco REST APIs
RESTful	HTTP	Request
JSON
Alfresco
JSON data transport
Simpler to consume than XML
Using SBJson
• Other libraries available, e.g. TouchJSON, JSONKit
• iOS 5.0 supports JSON natively
Parses into NSDictionary and NSArray objects
CMIS 1.1 will contain a Browser Binding
What do I need to know?
• Objective-C
• cocoadevcentral.com/d/learn_objectivec
• iOS App Programming
• developer.apple.com
• Alfresco RESTful API
• wiki.alfresco.com
• CMIS AtomPub Binding
• wiki.alfresco.com/wiki/CMIS
• Git
• gitref.org
Common Design Patterns
Model-View-Controller
• A pattern to relate the user interface to an underlying data
model.
Delegation
• A patten where an object, the delegator, delegates tasks to an
associated helper object, the delegate.
• The delegate is responsible for executing the task for the
delegator.
Target-Action
• Target-action is a design pattern in which an object holds the
information necessary to send a message to another object when
an event occurs.
API’s and Libraries Used
Cocoa Touch Frameworks
• The API’s Apple provides to build an iOS application
ASIHTTPRequest
• Wrapper around Apple’s CFNetwork API
SBJson
• Fast, simple & clean JSON parser and generator
ISO8601
• XML date parsing
Flurry Analytics
• Remote logging for app crashes (uncaught exceptions)
Open Source Availability
Hosted on Bitbucket
bit.ly/alf-mobile
Search for “alfresco-mobile” at bitbucket.org
Released under the Mozilla Public License Version 1.1
How Do I Contribute?
Step-by-step example for forking and sending a pull request:



http://bit.ly/pbIDRk (atlassian.com wiki)
Resources
Apple iOS Developer Portal
• Sample Code, API Documentation, Design Guides,

Developer Videos, etc.!
Books
• Beginning iPhone 4 Development (Apress Publishing)
• Programming in Objective-C (Sam’s Publishing)
Many Developer Blogs
• http://icepla.net
Also: Twitter, StackOverflow
Roadmap
Next version
• Alfresco Cloud
• Multiple Repositories
• ...More
Integration
• Leading productivity apps such as PDF Expert and QuickOffice
Android
Additional Alfresco Mobile Apps
What else? > marc.dubresson@alfresco.com
Q & A

More Related Content

What's hot

Azure Cloud Services
Azure Cloud ServicesAzure Cloud Services
Azure Cloud ServicesGuy Barrette
 
Changing Trends In Cloud Computing
Changing Trends In Cloud ComputingChanging Trends In Cloud Computing
Changing Trends In Cloud ComputingAbhishek Chikane
 
PLAT-1 CMIS in the Real World
PLAT-1 CMIS in the Real WorldPLAT-1 CMIS in the Real World
PLAT-1 CMIS in the Real WorldAlfresco Software
 
Orion Introduction
Orion IntroductionOrion Introduction
Orion IntroductionTomasz Zarna
 
Tech talk-live-alfresco-drupal
Tech talk-live-alfresco-drupalTech talk-live-alfresco-drupal
Tech talk-live-alfresco-drupalAlfresco Software
 
Orion Introduction
Orion IntroductionOrion Introduction
Orion IntroductionTomasz Zarna
 
Eight Miles High: Build Cloud-native and Cloud-aware Systems
Eight Miles High: Build Cloud-native and Cloud-aware SystemsEight Miles High: Build Cloud-native and Cloud-aware Systems
Eight Miles High: Build Cloud-native and Cloud-aware SystemsChris Haddad
 
DevOpsDays Seattle - Self-Service Ignite
DevOpsDays Seattle - Self-Service IgniteDevOpsDays Seattle - Self-Service Ignite
DevOpsDays Seattle - Self-Service IgniteLowell Young
 
One Neos CMS - many websites
One Neos CMS - many websitesOne Neos CMS - many websites
One Neos CMS - many websitespunkt.de GmbH
 
SOCCNX11 All you need to know about Orient Me
SOCCNX11 All you need to know about Orient MeSOCCNX11 All you need to know about Orient Me
SOCCNX11 All you need to know about Orient MeNico Meisenzahl
 
WCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and AlfrescoWCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and AlfrescoAlfresco Software
 
The Point Of The Content Interoperability Services (CMIS) Standard
The Point Of The Content Interoperability Services (CMIS) StandardThe Point Of The Content Interoperability Services (CMIS) Standard
The Point Of The Content Interoperability Services (CMIS) StandardLaurence Hart
 
SharePoint Saturday The Conference DC - How the client object model saved the...
SharePoint Saturday The Conference DC - How the client object model saved the...SharePoint Saturday The Conference DC - How the client object model saved the...
SharePoint Saturday The Conference DC - How the client object model saved the...Liam Cleary [MVP]
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentNicole Szigeti
 
A reality check on cloud content management
A reality check on cloud content managementA reality check on cloud content management
A reality check on cloud content managementAlfresco Software
 
SharePoint Saturday The Conference DC - How the bcs saved my marriage
SharePoint Saturday The Conference DC - How the bcs saved my marriageSharePoint Saturday The Conference DC - How the bcs saved my marriage
SharePoint Saturday The Conference DC - How the bcs saved my marriageLiam Cleary [MVP]
 
WCM-5 WCM Solutions with Drupal and Alfresco
WCM-5 WCM Solutions with Drupal and AlfrescoWCM-5 WCM Solutions with Drupal and Alfresco
WCM-5 WCM Solutions with Drupal and AlfrescoAlfresco Software
 
Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8Arun Gupta
 
Ektron 8.5 Web Content Managemnt
Ektron 8.5 Web Content ManagemntEktron 8.5 Web Content Managemnt
Ektron 8.5 Web Content ManagemntSean_OLeary
 

What's hot (20)

Azure Cloud Services
Azure Cloud ServicesAzure Cloud Services
Azure Cloud Services
 
Changing Trends In Cloud Computing
Changing Trends In Cloud ComputingChanging Trends In Cloud Computing
Changing Trends In Cloud Computing
 
PLAT-1 CMIS in the Real World
PLAT-1 CMIS in the Real WorldPLAT-1 CMIS in the Real World
PLAT-1 CMIS in the Real World
 
Orion Introduction
Orion IntroductionOrion Introduction
Orion Introduction
 
Tech talk-live-alfresco-drupal
Tech talk-live-alfresco-drupalTech talk-live-alfresco-drupal
Tech talk-live-alfresco-drupal
 
Orion Introduction
Orion IntroductionOrion Introduction
Orion Introduction
 
Eight Miles High: Build Cloud-native and Cloud-aware Systems
Eight Miles High: Build Cloud-native and Cloud-aware SystemsEight Miles High: Build Cloud-native and Cloud-aware Systems
Eight Miles High: Build Cloud-native and Cloud-aware Systems
 
Content Modularization Is Here
Content Modularization Is HereContent Modularization Is Here
Content Modularization Is Here
 
DevOpsDays Seattle - Self-Service Ignite
DevOpsDays Seattle - Self-Service IgniteDevOpsDays Seattle - Self-Service Ignite
DevOpsDays Seattle - Self-Service Ignite
 
One Neos CMS - many websites
One Neos CMS - many websitesOne Neos CMS - many websites
One Neos CMS - many websites
 
SOCCNX11 All you need to know about Orient Me
SOCCNX11 All you need to know about Orient MeSOCCNX11 All you need to know about Orient Me
SOCCNX11 All you need to know about Orient Me
 
WCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and AlfrescoWCM-9 WCM Solutions with Drupal and Alfresco
WCM-9 WCM Solutions with Drupal and Alfresco
 
The Point Of The Content Interoperability Services (CMIS) Standard
The Point Of The Content Interoperability Services (CMIS) StandardThe Point Of The Content Interoperability Services (CMIS) Standard
The Point Of The Content Interoperability Services (CMIS) Standard
 
SharePoint Saturday The Conference DC - How the client object model saved the...
SharePoint Saturday The Conference DC - How the client object model saved the...SharePoint Saturday The Conference DC - How the client object model saved the...
SharePoint Saturday The Conference DC - How the client object model saved the...
 
Alfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI DevelopmentAlfresco Day Stockholm 2015 - Rapid UI Development
Alfresco Day Stockholm 2015 - Rapid UI Development
 
A reality check on cloud content management
A reality check on cloud content managementA reality check on cloud content management
A reality check on cloud content management
 
SharePoint Saturday The Conference DC - How the bcs saved my marriage
SharePoint Saturday The Conference DC - How the bcs saved my marriageSharePoint Saturday The Conference DC - How the bcs saved my marriage
SharePoint Saturday The Conference DC - How the bcs saved my marriage
 
WCM-5 WCM Solutions with Drupal and Alfresco
WCM-5 WCM Solutions with Drupal and AlfrescoWCM-5 WCM Solutions with Drupal and Alfresco
WCM-5 WCM Solutions with Drupal and Alfresco
 
Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8Deploying Web Applications with WildFly 8
Deploying Web Applications with WildFly 8
 
Ektron 8.5 Web Content Managemnt
Ektron 8.5 Web Content ManagemntEktron 8.5 Web Content Managemnt
Ektron 8.5 Web Content Managemnt
 

Viewers also liked

Canada Immigration Process
Canada Immigration ProcessCanada Immigration Process
Canada Immigration Processashish singh
 
Say Goodbye To Headaches And Migraines
Say Goodbye To Headaches And MigrainesSay Goodbye To Headaches And Migraines
Say Goodbye To Headaches And MigrainesDr Gary Tho
 
Actividades Gimnasticas 3ºESO
Actividades Gimnasticas 3ºESOActividades Gimnasticas 3ºESO
Actividades Gimnasticas 3ºESOyogui1970
 
Ashutosh Dubey-ScrumAlliance_CSM_Certificate
Ashutosh Dubey-ScrumAlliance_CSM_CertificateAshutosh Dubey-ScrumAlliance_CSM_Certificate
Ashutosh Dubey-ScrumAlliance_CSM_CertificateAshutosh Dubey
 
INTERACT BIKE SHED - Balwyn High School
INTERACT BIKE SHED - Balwyn High SchoolINTERACT BIKE SHED - Balwyn High School
INTERACT BIKE SHED - Balwyn High SchoolManju Mohandoss
 
How to increase big pharma’s sales effectiveness.
How to increase big pharma’s sales effectiveness.How to increase big pharma’s sales effectiveness.
How to increase big pharma’s sales effectiveness.Marek Golebiowski
 
105學測自然試題定稿
105學測自然試題定稿105學測自然試題定稿
105學測自然試題定稿中 央社
 
Microsoft cloud integration patterns - BizTalk/Azure
Microsoft cloud integration patterns - BizTalk/AzureMicrosoft cloud integration patterns - BizTalk/Azure
Microsoft cloud integration patterns - BizTalk/AzureNikolai Blackie
 
Software engineering project(srs)!!
Software engineering project(srs)!!Software engineering project(srs)!!
Software engineering project(srs)!!sourav verma
 

Viewers also liked (16)

Canada Immigration Process
Canada Immigration ProcessCanada Immigration Process
Canada Immigration Process
 
Executive Search Services
Executive Search ServicesExecutive Search Services
Executive Search Services
 
Chapter5
Chapter5Chapter5
Chapter5
 
Helix Executive Search brochure
Helix Executive Search brochureHelix Executive Search brochure
Helix Executive Search brochure
 
Say Goodbye To Headaches And Migraines
Say Goodbye To Headaches And MigrainesSay Goodbye To Headaches And Migraines
Say Goodbye To Headaches And Migraines
 
Chapter3
Chapter3Chapter3
Chapter3
 
Actividades Gimnasticas 3ºESO
Actividades Gimnasticas 3ºESOActividades Gimnasticas 3ºESO
Actividades Gimnasticas 3ºESO
 
Org chart ppt
Org chart pptOrg chart ppt
Org chart ppt
 
Ashutosh Dubey-ScrumAlliance_CSM_Certificate
Ashutosh Dubey-ScrumAlliance_CSM_CertificateAshutosh Dubey-ScrumAlliance_CSM_Certificate
Ashutosh Dubey-ScrumAlliance_CSM_Certificate
 
INTERACT BIKE SHED - Balwyn High School
INTERACT BIKE SHED - Balwyn High SchoolINTERACT BIKE SHED - Balwyn High School
INTERACT BIKE SHED - Balwyn High School
 
How to increase big pharma’s sales effectiveness.
How to increase big pharma’s sales effectiveness.How to increase big pharma’s sales effectiveness.
How to increase big pharma’s sales effectiveness.
 
105學測自然試題定稿
105學測自然試題定稿105學測自然試題定稿
105學測自然試題定稿
 
The china pharmaceutical market ppt
The china pharmaceutical market pptThe china pharmaceutical market ppt
The china pharmaceutical market ppt
 
Microsoft cloud integration patterns - BizTalk/Azure
Microsoft cloud integration patterns - BizTalk/AzureMicrosoft cloud integration patterns - BizTalk/Azure
Microsoft cloud integration patterns - BizTalk/Azure
 
Software engineering project(srs)!!
Software engineering project(srs)!!Software engineering project(srs)!!
Software engineering project(srs)!!
 
Desarrollo cognitivo en la primera infancia
Desarrollo cognitivo en la primera  infanciaDesarrollo cognitivo en la primera  infancia
Desarrollo cognitivo en la primera infancia
 

Similar to Dev Con 2011

Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11Zia Consulting
 
DEVCON-Alfresco i os mobile application details and design
DEVCON-Alfresco i os mobile application details and designDEVCON-Alfresco i os mobile application details and design
DEVCON-Alfresco i os mobile application details and designZia Consulting
 
Tech Talk Live - Mobile SDKs
Tech Talk Live - Mobile SDKsTech Talk Live - Mobile SDKs
Tech Talk Live - Mobile SDKsGavin Cornwell
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Nicole Szigeti
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIJeff Potts
 
CNIT 128: 3. Attacking iOS Applications (Part 2)
CNIT 128: 3. Attacking iOS Applications (Part 2)CNIT 128: 3. Attacking iOS Applications (Part 2)
CNIT 128: 3. Attacking iOS Applications (Part 2)Sam Bowne
 
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...Rackspace
 
Alfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdksAlfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdksAlfresco Software
 
CNIT 128 3. Attacking iOS Applications (Part 2)
CNIT 128 3. Attacking iOS Applications (Part 2)CNIT 128 3. Attacking iOS Applications (Part 2)
CNIT 128 3. Attacking iOS Applications (Part 2)Sam Bowne
 
Getting Started With CMIS
Getting Started With CMISGetting Started With CMIS
Getting Started With CMISJeff Potts
 
Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017Stefano Bonetta
 
Peter molendijk alfresco 4.0 release alfresco gebruikersdag - eindhoven 02-2012
Peter molendijk alfresco 4.0 release  alfresco gebruikersdag - eindhoven 02-2012Peter molendijk alfresco 4.0 release  alfresco gebruikersdag - eindhoven 02-2012
Peter molendijk alfresco 4.0 release alfresco gebruikersdag - eindhoven 02-2012Peter A. Molendijk
 
PLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in GrailsPLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in GrailsAlfresco Software
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms BootcampMike Melusky
 
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013Aaron Saunders
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Microsoft Iceland
 
3. Attacking iOS Applications (Part 2)
 3. Attacking iOS Applications (Part 2) 3. Attacking iOS Applications (Part 2)
3. Attacking iOS Applications (Part 2)Sam Bowne
 
The DevOps Journey
The DevOps JourneyThe DevOps Journey
The DevOps JourneyMicro Focus
 

Similar to Dev Con 2011 (20)

Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11
 
DEVCON-Alfresco i os mobile application details and design
DEVCON-Alfresco i os mobile application details and designDEVCON-Alfresco i os mobile application details and design
DEVCON-Alfresco i os mobile application details and design
 
Tech Talk Live - Mobile SDKs
Tech Talk Live - Mobile SDKsTech Talk Live - Mobile SDKs
Tech Talk Live - Mobile SDKs
 
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
Alfresco Coding mit dem Alfresco SDK (auf Englisch) - Julien Bruinaud, Techni...
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
CNIT 128: 3. Attacking iOS Applications (Part 2)
CNIT 128: 3. Attacking iOS Applications (Part 2)CNIT 128: 3. Attacking iOS Applications (Part 2)
CNIT 128: 3. Attacking iOS Applications (Part 2)
 
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...
Rackspace::Solve NYC - The Future of Applications with Ken Cochrane, Engineer...
 
Alfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdksAlfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdks
 
CNIT 128 3. Attacking iOS Applications (Part 2)
CNIT 128 3. Attacking iOS Applications (Part 2)CNIT 128 3. Attacking iOS Applications (Part 2)
CNIT 128 3. Attacking iOS Applications (Part 2)
 
Getting Started With CMIS
Getting Started With CMISGetting Started With CMIS
Getting Started With CMIS
 
Starting from scratch in 2017
Starting from scratch in 2017Starting from scratch in 2017
Starting from scratch in 2017
 
Peter molendijk alfresco 4.0 release alfresco gebruikersdag - eindhoven 02-2012
Peter molendijk alfresco 4.0 release  alfresco gebruikersdag - eindhoven 02-2012Peter molendijk alfresco 4.0 release  alfresco gebruikersdag - eindhoven 02-2012
Peter molendijk alfresco 4.0 release alfresco gebruikersdag - eindhoven 02-2012
 
PLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in GrailsPLAT-16 Using Enterprise Content in Grails
PLAT-16 Using Enterprise Content in Grails
 
Xamarin.Forms Bootcamp
Xamarin.Forms BootcampXamarin.Forms Bootcamp
Xamarin.Forms Bootcamp
 
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
Amsterdam Titanium User Group - Cloud Services for Apps Nov 2013
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
Owd multi repo-v2
Owd multi repo-v2Owd multi repo-v2
Owd multi repo-v2
 
Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2Building Rich Internet Apps with Silverlight 2
Building Rich Internet Apps with Silverlight 2
 
3. Attacking iOS Applications (Part 2)
 3. Attacking iOS Applications (Part 2) 3. Attacking iOS Applications (Part 2)
3. Attacking iOS Applications (Part 2)
 
The DevOps Journey
The DevOps JourneyThe DevOps Journey
The DevOps Journey
 

More from Gavin Cornwell

Alfresco DevCon 2019 - DBP on EKS
Alfresco DevCon 2019 - DBP on EKSAlfresco DevCon 2019 - DBP on EKS
Alfresco DevCon 2019 - DBP on EKSGavin Cornwell
 
DevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoDevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoGavin Cornwell
 
Tech Talk Live - 5.2 REST APIs
Tech Talk Live - 5.2 REST APIsTech Talk Live - 5.2 REST APIs
Tech Talk Live - 5.2 REST APIsGavin Cornwell
 
Introduction to advanced workflow
Introduction to advanced workflowIntroduction to advanced workflow
Introduction to advanced workflowGavin Cornwell
 
Forms config and customisation
Forms config and customisationForms config and customisation
Forms config and customisationGavin Cornwell
 
Alfresco Tech Talk Live - REST API of the Future
Alfresco Tech Talk Live - REST API of the Future Alfresco Tech Talk Live - REST API of the Future
Alfresco Tech Talk Live - REST API of the Future Gavin Cornwell
 

More from Gavin Cornwell (6)

Alfresco DevCon 2019 - DBP on EKS
Alfresco DevCon 2019 - DBP on EKSAlfresco DevCon 2019 - DBP on EKS
Alfresco DevCon 2019 - DBP on EKS
 
DevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoDevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with Alfresco
 
Tech Talk Live - 5.2 REST APIs
Tech Talk Live - 5.2 REST APIsTech Talk Live - 5.2 REST APIs
Tech Talk Live - 5.2 REST APIs
 
Introduction to advanced workflow
Introduction to advanced workflowIntroduction to advanced workflow
Introduction to advanced workflow
 
Forms config and customisation
Forms config and customisationForms config and customisation
Forms config and customisation
 
Alfresco Tech Talk Live - REST API of the Future
Alfresco Tech Talk Live - REST API of the Future Alfresco Tech Talk Live - REST API of the Future
Alfresco Tech Talk Live - REST API of the Future
 

Recently uploaded

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 

Recently uploaded (20)

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 

Dev Con 2011

  • 1. Alfresco iOS Mobile 
 Application Details and Design Mike Hatfield - Senior Engineer, Mobile Team Marc Dubresson - Director of Mobile Products
  • 2. Who are we? Marc Dubresson • Mobile Product Management Gavin Cornwell Mike Hatfield • Alfresco Mobile Development Core Team Zia • Outsourced Mobile Development Partner • Platinum Alfresco Professional Services & OEM Partner
  • 3. Agenda • Today’s News • Architecture Overview • CMIS Refresher • Demo • Technical Walkthrough • Open Source Project • Roadmap • Questions?
  • 5. Architecture Overview Mostly a CMIS application talking to Alfresco Several features specific to Alfresco Alfresco CMIS REST
  • 6. CMIS Refresher CMIS Technical Committee Goals & Scope • Content Management Interoperability Services • Enable applications to target different ECM repositories uniformly • Provide a set of basic services enabling richer ECM applications and use cases • All for loose coupling of an ECM application on the underlying repository • Use popular protocol bindings • REST / AtomPub • Web Services / SOAP • v1.1 - JSON (Browser Binding)
  • 7. Demo Alfresco Mobile in Action – A Few Features • CMIS: • Login to Alfresco over HTTP or HTTPS • Browse, Search, Display Content and Edit Metadata, Upload Files • Create Folders • Alfresco • Activities • Like & Unlike • Comment on Documents • iOS • Local Downloads • “Open In...” support to/from other apps
  • 8. Design • Universal binary • Hierarchy of Table Views • Navigation based app for browsing CMIS repositories • Layered on Alfresco specific functionality
  • 9. Designed for the iPad • Navigation based app but with iPad-specific view controllers • Split View Controller • Still a universal binary
  • 12. App Launch / Sites / Browse • iOS: Read user settings • CMIS: Retrieve AtomPub Service Document • Alfresco: Request Sites List • CMIS: Request folder children for the Root Collection • CMIS: Navigate into a folder or site
  • 13. Activities • Alfresco: Retrieve user’s activity feed • User taps a document table cell • CMIS: Retrieve Document via getObjectByID service • User taps the “info icon” • CMIS: Retrieve Document Metadata using getTypeDefinition service
  • 14. Search Execute a CMIS Query • Full-text search: •SELECT * FROM cmis:document WHERE CONTAINS(‘keywords’) • Search by cmis:name: •SELECT * FROM cmis:document WHERE CONTAINS(‘~cmis:name:’*keywords*’)
  • 15. Tools for iOS Development Mac with OS X Snow Leopard or Lion XCode 4.2 • Integrated Development Environment • Integrated Build System • Debugger • Interface Builder • iOS Simulator
 Instruments • Performance and behaviour analysis
  • 16. Getting Started Create an iOS developer account (free) Install the latest version of XCode 4.2 (free) Clone the repository • git clone https://ziadev@bitbucket.org/ziadev/alfresco-mobile.git Open the Project
  • 17. Multiple Targets in the Project Two Targets: Alfresco & Fresh Docs
  • 18. Build and Run Select a target and the 
 
 iOS Simulator to Use
  • 19. How do I install it on my device? See iOS Provisioning Portal Resources & How-To Guides Sign up for a (paid) iOS Developer Program Account Configure profile: Development certificate, App Id Provision Device (UDID) Configure & build the App for the device
  • 20. I Thought This Was A DevCon? AlfrescoAppDelegate.h
  • 21. Calling an AtomPub Service CMIS RESTful Request AtomPub XML Alfresco
  • 22. Creating an HTTP Request • Using ASIHTTPRequest build the request • The delegate handles events from that request
  • 23. Parsing AtomPub XML Event-Driven XML Parsing (SAX) • Parser sends messages (parsing events) to it’s delegates (callbacks) Use NSXMLParser & NSXMLParserDelegate • Recommended by Apple • Native API • Objective-C based implementation Why not use the Tree-based API (DOM)? • Apple does not provide the API for iOS
  • 24. NSXMLParser & NSXMLParserDelegate Setting up NSXMLParser NSXMLParserDelegate methods • – parser:didStartElement:namespaceURI:qualifiedName:attributes: • – parser:didEndElement:namespaceURI:qualifiedName: • – parser:foundCharacters:
  • 25. Calling Alfresco REST APIs RESTful HTTP Request JSON Alfresco
  • 26. JSON data transport Simpler to consume than XML Using SBJson • Other libraries available, e.g. TouchJSON, JSONKit • iOS 5.0 supports JSON natively Parses into NSDictionary and NSArray objects CMIS 1.1 will contain a Browser Binding
  • 27. What do I need to know? • Objective-C • cocoadevcentral.com/d/learn_objectivec • iOS App Programming • developer.apple.com • Alfresco RESTful API • wiki.alfresco.com • CMIS AtomPub Binding • wiki.alfresco.com/wiki/CMIS • Git • gitref.org
  • 28. Common Design Patterns Model-View-Controller • A pattern to relate the user interface to an underlying data model. Delegation • A patten where an object, the delegator, delegates tasks to an associated helper object, the delegate. • The delegate is responsible for executing the task for the delegator. Target-Action • Target-action is a design pattern in which an object holds the information necessary to send a message to another object when an event occurs.
  • 29. API’s and Libraries Used Cocoa Touch Frameworks • The API’s Apple provides to build an iOS application ASIHTTPRequest • Wrapper around Apple’s CFNetwork API SBJson • Fast, simple & clean JSON parser and generator ISO8601 • XML date parsing Flurry Analytics • Remote logging for app crashes (uncaught exceptions)
  • 30. Open Source Availability Hosted on Bitbucket bit.ly/alf-mobile Search for “alfresco-mobile” at bitbucket.org Released under the Mozilla Public License Version 1.1
  • 31. How Do I Contribute? Step-by-step example for forking and sending a pull request:
 
 http://bit.ly/pbIDRk (atlassian.com wiki)
  • 32. Resources Apple iOS Developer Portal • Sample Code, API Documentation, Design Guides,
 Developer Videos, etc.! Books • Beginning iPhone 4 Development (Apress Publishing) • Programming in Objective-C (Sam’s Publishing) Many Developer Blogs • http://icepla.net Also: Twitter, StackOverflow
  • 33. Roadmap Next version • Alfresco Cloud • Multiple Repositories • ...More Integration • Leading productivity apps such as PDF Expert and QuickOffice Android Additional Alfresco Mobile Apps What else? > marc.dubresson@alfresco.com
  • 34. Q & A