SlideShare a Scribd company logo
1 of 25
Download to read offline
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 Applications (sample…)
              APK



                                                        Works on
              APK Alfresco Mobile UI Components
              LIB
                                                      Android version
                                                      superior to 3.0

              JAR      Alfresco Mobile Async API




              JAR Alfresco Mobile Repository API




              JAR    Alfresco OpenCMIS Extension         Works on
                                                      Android versions
                                                       superior to 2.1

 Dependency   JAR         Android OpenCMIS
Support is possible…
                              Alfresco Applications (sample…)
                        APK




                        APK Alfresco Mobile UI Components
                        LIB



   Android support      JAR      Alfresco Mobile Async API
       library
JAR                                                                Works on
                                                                Android versions
                                                                 superior to 2.1
                        JAR Alfresco Mobile Repository API




                        JAR    Alfresco OpenCMIS Extension


         Not provided
                        JAR         Android OpenCMIS
         Dependency
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             Objective CMIS Library
         (+headers)                      (+headers)

•  Asynchronous handling of      •  Low level library to handle CMIS
                                    sessions, requests & services
   requests                      •  Provides CMIS standard services,
     •  E.g. download/upload        e.g.
        documents                     •  Document/Folder (e.g.
•  Additional Services, e.g.             upload/create/download)
     •  Comments                      •  Versioning
     •  Tagging                       •  Search
     •  Rating                   •  Mostly synchronous request
     •  Activity                 •  Collaborative project
                                 •  Planned to add to Apache CMIS
•  Encapsulates low level CMIS      project
   calls
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

                              ^(<parameter list>){ execution code }
•  Blocks
    –  Used extensively in Mobile API to handle asynchronous requests and callbacks

   * requires iOS 5.x or later for full support
iOS SDK – Async Handling
           In Sample
           App code

If(nil == error)
{
   self.session = session;
}                              Main      Alfresco
else
{                              thread   Mobile API
   UIAlertView *alert =
       [[UIAlertView. Alloc]
………..
}


                                        Background
                                        thread
                                                     Repository


                                        CMIS/REST
                                           API
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!

More Related Content

What's hot (8)

Mobile test automation with Selenium, Selendroid and ios-driver
Mobile test automation with Selenium, Selendroid and ios-driverMobile test automation with Selenium, Selendroid and ios-driver
Mobile test automation with Selenium, Selendroid and ios-driver
 
Phoenix for Rubyists
Phoenix for RubyistsPhoenix for Rubyists
Phoenix for Rubyists
 
Mad development
Mad developmentMad development
Mad development
 
Build Your Business Process On A Solid Foundation–Web Sphere Application Server
Build Your Business Process On A Solid Foundation–Web Sphere Application ServerBuild Your Business Process On A Solid Foundation–Web Sphere Application Server
Build Your Business Process On A Solid Foundation–Web Sphere Application Server
 
Idempotent REST APIs
Idempotent REST APIsIdempotent REST APIs
Idempotent REST APIs
 
Os Smarr
Os SmarrOs Smarr
Os Smarr
 
Mobile Apps with ColdFusion
Mobile Apps with ColdFusionMobile Apps with ColdFusion
Mobile Apps with ColdFusion
 
Ios driver presentation copy
Ios driver presentation copyIos driver presentation copy
Ios driver presentation copy
 

Viewers also liked

Viewers also liked (6)

Alfresco 5.0 Technology Review
Alfresco 5.0 Technology ReviewAlfresco 5.0 Technology Review
Alfresco 5.0 Technology Review
 
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion HogescholenAlfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
Alfresco Day BeNelux: Customer Success Showcase - Saxion Hogescholen
 
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente AmsterdamAlfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
Alfresco Day BeNelux: Customer Success Showcase - Gemeente Amsterdam
 
Alfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of AlfrescoAlfresco Day BeNelux: The success of Alfresco
Alfresco Day BeNelux: The success of Alfresco
 
Alfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management applicationAlfresco Day Benelux Hogeschool Inholland Records Management application
Alfresco Day Benelux Hogeschool Inholland Records Management application
 
Alfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossierAlfresco Day Benelux Inholland studentendossier
Alfresco Day Benelux Inholland studentendossier
 

Similar to Alfresco tech talk live mobile sdks

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
Zia Consulting
 
Tech talk live on new alfresco api
Tech talk live on new alfresco apiTech talk live on new alfresco api
Tech talk live on new alfresco api
Alfresco Software
 
Springinalfrescoecm 090629053231-phpapp02
Springinalfrescoecm 090629053231-phpapp02Springinalfrescoecm 090629053231-phpapp02
Springinalfrescoecm 090629053231-phpapp02
ECNU
 

Similar to Alfresco tech talk live mobile sdks (20)

Tech Talk Live - Mobile SDKs
Tech Talk Live - Mobile SDKsTech Talk Live - Mobile SDKs
Tech Talk Live - Mobile SDKs
 
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
 
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
 
PLAT-18 Alfresco iOS Mobile Application Details and Design
PLAT-18 Alfresco iOS Mobile Application Details and DesignPLAT-18 Alfresco iOS Mobile Application Details and Design
PLAT-18 Alfresco iOS Mobile Application Details and Design
 
Dev Con 2011
Dev Con 2011Dev Con 2011
Dev Con 2011
 
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...
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platform
 
Tech talk live on new alfresco api
Tech talk live on new alfresco apiTech talk live on new alfresco api
Tech talk live on new alfresco api
 
Serverless Pune meetup 3
Serverless Pune meetup 3Serverless Pune meetup 3
Serverless Pune meetup 3
 
Design & Deploy a data-driven Web API in 2 hours
Design & Deploy a data-driven Web API in 2 hoursDesign & Deploy a data-driven Web API in 2 hours
Design & Deploy a data-driven Web API in 2 hours
 
Apache Cordova 4.x
Apache Cordova 4.xApache Cordova 4.x
Apache Cordova 4.x
 
Intro to the Alfresco Public API
Intro to the Alfresco Public APIIntro to the Alfresco Public API
Intro to the Alfresco Public API
 
Springinalfrescoecm 090629053231-phpapp02
Springinalfrescoecm 090629053231-phpapp02Springinalfrescoecm 090629053231-phpapp02
Springinalfrescoecm 090629053231-phpapp02
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
 
Flex alfresco
Flex   alfrescoFlex   alfresco
Flex alfresco
 
Spring In Alfresco Ecm
Spring In Alfresco EcmSpring In Alfresco Ecm
Spring In Alfresco Ecm
 
CMIS: An Open API for Managing Content
CMIS: An Open API for Managing ContentCMIS: An Open API for Managing Content
CMIS: An Open API for Managing Content
 
Flex multi-screen development
Flex multi-screen developmentFlex multi-screen development
Flex multi-screen development
 
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
Developers.io 2017 iPhoneによるAlexa/Lex/Pollyを利用した 音声対応クライアントの作成方法
 
Android workshop
Android workshopAndroid workshop
Android workshop
 

More from Alfresco Software

More from Alfresco Software (20)

Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo GroupAlfresco Day BeNelux: Customer Success Showcase - Credendo Group
Alfresco Day BeNelux: Customer Success Showcase - Credendo Group
 
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About FlowAlfresco Day BeNelux: Digital Transformation - It's All About Flow
Alfresco Day BeNelux: Digital Transformation - It's All About Flow
 
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
Alfresco Day Vienna 2016: Activiti – ein Katalysator für die DMS-Strategie be...
 
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
Alfresco Day Vienna 2016: Elektronische Geschäftsprozesse auf Basis von Alfre...
 
Alfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest APIAlfresco Day Vienna 2016: Alfrescos neue Rest API
Alfresco Day Vienna 2016: Alfrescos neue Rest API
 
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-KonsoleAlfresco Day Vienna 2016: Support Tools für die Admin-Konsole
Alfresco Day Vienna 2016: Support Tools für die Admin-Konsole
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
 
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
Alfresco Day Vienna 2016: Activiti goes enterprise: Die Evolution der BPM Sui...
 
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: WesternacherAlfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
Alfresco Day Vienna 2016: Partner Lightning Talk: Westernacher
 
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
Alfresco Day Vienna 2016: Bringing Content & Process together with the App De...
 
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novumAlfresco Day Vienna 2016: Partner Lightning Talk - it-novum
Alfresco Day Vienna 2016: Partner Lightning Talk - it-novum
 
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
Alfresco Day Vienna 2016: How to Achieve Digital Flow in the Enterprise - Joh...
 
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
Alfresco Day Warsaw 2016 - Czy możliwe jest spełnienie wszystkich regulacji p...
 
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - SafranAlfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
Alfresco Day Warsaw 2016: Identyfikacja i podpiselektroniczny - Safran
 
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital BusinessAlfresco Day Warsaw 2016: Advancing the Flow of Digital Business
Alfresco Day Warsaw 2016: Advancing the Flow of Digital Business
 
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMSAlfresco Day Warsaw 2016: Podpis elektroniczny - BMS
Alfresco Day Warsaw 2016: Podpis elektroniczny - BMS
 
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
Alfresco Day Warsaw 2016: Next-Generation Business Process Management with Al...
 
Alfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo DataAlfresco Day Milano 2016 - Demo Data
Alfresco Day Milano 2016 - Demo Data
 
Alfresco Day Milano 2016 - Tribunale di Cremona
Alfresco Day Milano 2016 - Tribunale di CremonaAlfresco Day Milano 2016 - Tribunale di Cremona
Alfresco Day Milano 2016 - Tribunale di Cremona
 
Alfresco Day Milano 2016 - Alfresco Product Update
Alfresco Day Milano 2016 - Alfresco Product UpdateAlfresco Day Milano 2016 - Alfresco Product Update
Alfresco Day Milano 2016 - Alfresco Product Update
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

Alfresco tech talk live mobile sdks

  • 1. Alfresco Mobile SDKs Agenda •  Overview – Why, What & How? –  Gavin Cornwell •  Android SDK –  Jean Marie Pascal •  iOS SDK –  Peter Schmidt
  • 2. 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
  • 7. Overview – How? •  Create Session •  Use Services •  Retrieve Model Objects •  Handles Asynchronous Calls For You
  • 9. 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.
  • 10. 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
  • 11. It’s not just one project… Alfresco Applications (sample…) APK Works on APK Alfresco Mobile UI Components LIB Android version superior to 3.0 JAR Alfresco Mobile Async API JAR Alfresco Mobile Repository API JAR Alfresco OpenCMIS Extension Works on Android versions superior to 2.1 Dependency JAR Android OpenCMIS
  • 12. Support is possible… Alfresco Applications (sample…) APK APK Alfresco Mobile UI Components LIB Android support JAR Alfresco Mobile Async API library JAR Works on Android versions superior to 2.1 JAR Alfresco Mobile Repository API JAR Alfresco OpenCMIS Extension Not provided JAR Android OpenCMIS Dependency
  • 13. 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…
  • 15. 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
  • 16. So are you ready to level up ?
  • 18. What’s included ? Sample App Mobile API Library Included Objective CMIS library Documentation (appledoc docset)
  • 19. What are the libraries ? Alfresco Mobile API Objective CMIS Library (+headers) (+headers) •  Asynchronous handling of •  Low level library to handle CMIS sessions, requests & services requests •  Provides CMIS standard services, •  E.g. download/upload e.g. documents •  Document/Folder (e.g. •  Additional Services, e.g. upload/create/download) •  Comments •  Versioning •  Tagging •  Search •  Rating •  Mostly synchronous request •  Activity •  Collaborative project •  Planned to add to Apache CMIS •  Encapsulates low level CMIS project calls
  • 20. 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 ^(<parameter list>){ execution code } •  Blocks –  Used extensively in Mobile API to handle asynchronous requests and callbacks * requires iOS 5.x or later for full support
  • 21. iOS SDK – Async Handling In Sample App code If(nil == error) { self.session = session; } Main Alfresco else { thread Mobile API UIAlertView *alert = [[UIAlertView. Alloc] ……….. } Background thread Repository CMIS/REST API
  • 22. 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
  • 23. 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."); } }];