SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Painless Mobile App
Development
Shawna Wolverton
Director, Product Management
@shawnawol

Tom Gersic
Senior Technical Architect
@tomgersic




                         Follow us @forcedotcom
Safe Harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may
contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such
uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc.
could differ materially from the results expressed or implied by the forward-looking statements we make. All
statements other than statements of historical fact could be deemed forward-looking, including any
projections of subscriber growth, earnings, revenues, or other financial items and any statements regarding
strategies or plans of management for future operations, statements of belief, any statements concerning
new, planned, or upgraded services or technology developments and customer contracts or use of our
services.

The risks and uncertainties referred to above include – but are not limited to – risks associated with
developing and delivering new functionality for our service, our new business model, our past operating
losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web
hosting, breach of our security measures, the immature market in which we operate, our relatively limited
operating history, our ability to expand, retain, and motivate our employees and manage our growth, new
releases of our service and successful customer deployment, and utilization and selling to larger enterprise
customers. Further information on potential factors that could affect the financial results of salesforce.com,
inc. is included in our annual report on Form 10-K filed on April 30, 2008 and in other filings with the
Securities and Exchange Commission. These documents are available on the SEC Filings section of the
Investor Information section of our Web site.

Any unreleased services or features referenced in this or other press releases or public statements are not
currently available and may not be delivered on time or at all. Customers who purchase our services should
make the purchase decisions based upon features that are currently available. Salesforce.com, inc.
assumes no obligation and does not intend to update these forward-looking statements.
@forcedotcom / #forcewebinar


Developer Force Group


facebook.com/forcedotcom


Developer Force – Force.com
Community

   Follow us @forcedotcom
Agenda

 App Demo
 Database.com Setup
 Mobile SDK overview
 Building the app
 Q&A




                     Follow us @forcedotcom
Moguls Need Mobile Apps

  Crump Real Estate Holdings needs
 an app to track service requests from
 their tenants




                       Follow us @forcedotcom
What we’re going to build today
   http://www.github.com/tomgersic/CrumpRealEstate




                     Follow us @forcedotcom
Database.com
Built-in Services Accelerate Mobile Development
 Integrated services, no external app server needed!


  •    Integrated user management
       and security

  •    Custom APIs to maximize
       performance


  •    Social data feeds are ideal for
       mobile interfaces


  •    Mobile SDKs simplify client
       app development




                               Follow us @forcedotcom
Force.com Workbench

  SOQL – Query language for Force.com and
   Database.com
  Very much like SQL, but has some differences




                      Follow us @forcedotcom
Salesforce Mobile SDK




                 Follow us @forcedotcom
Force.com Mobile SDK




                Follow us @forcedotcom
Three Options: Which One Is Right For You?


Advanced UI interactions                            Web developer skills
Fastest performance                                 Access to native platform
App store distribution                              App store distribution




                                                    Web developer skills
                                                    Instant updates
                                                    Unrestricted distribution




                           Follow us @forcedotcom
Hybrid Mobile App Development




                 Follow us @forcedotcom
Force.com Mobile SDK
             http://developer.force.com/mobile




                    Follow us @forcedotcom
Force.com Mobile SDK

              https://github.com/forcedotcom




                  Follow us @forcedotcom
Follow us @forcedotcom
OAuth
An industry standard method of validating user
credentials while avoiding password anti-patterns.




                   Follow us @forcedotcom
Follow us @forcedotcom
OAuth 2.0 Flows Available

  User-Agent Flow
  Username-Password Flow
  SAML Bearer Assertion Flow
  Refresh Token Flow
  JWT Bearer Token Flow
  Web Server Authentication Flow




                     Follow us @forcedotcom
OAuth 2.0 Flows Available

  User-Agent Flow
  Username-Password Flow
  SAML Bearer Assertion Flow
  Refresh Token Flow
  JWT Bearer Token Flow
  Web Server Authentication Flow




                     Follow us @forcedotcom
OAuth 2.0 User-Agent Flow




                 Follow us @forcedotcom
OAuth 2.0 User-Agent Flow




                 Follow us @forcedotcom
OAuth 2.0 Refresh Token Flow




                 Follow us @forcedotcom
Oauth 2.0 and the Mobile SDK




                  Follow us @forcedotcom
Code Demo 1: Initial Setup
   http://www.github.com/tomgersic/CrumpRealEstate




                     Follow us @forcedotcom
Representational State Transfer (REST)
A stateless data transport based on standard HTTP
methods for delivering data as JSON or XML




                  Follow us @forcedotcom
REST API

  HEAD is used to retrieve resource metadata.
  GET is used to retrieve information, such as SOQL
   Queries using SELECT.
  POST is used to create a new record.
  PATCH is used to update or upsert a record.
  DELETE is used to delete a record.

HTTP GET:
/services/data/v24.0/query/?q=SELECT+Id,+Name,+Address__c,+Agreed_
Selling_Price__c+FROM+Property__c




                         Follow us @forcedotcom
REST API Returns a JSON Response
 /services/data/v24.0/query/?q=select+Id,+Name,+Address__c,+Agreed_
 Selling_Price__c+from+Property__c




                         Follow us @forcedotcom
Code Demo 4 – SOQL Query and View Layer Stuff

  SFRestAPI singleton
  SFRestDelegate
  UITableViewDataSource
  UITableViewDelegate




                     Follow us @forcedotcom
Salesforce.com Mobile SDK SmartStore

  SQLite ORM wrapper for Native and Hybrid apps built on
   the SFDC Mobile SDK
  NoSQL style JSON-based document store




                      Follow us @forcedotcom
SmartStore Stack




                   Follow us @forcedotcom
Smartstore Security

  Only cross-platform NoSQL mobile database technology
   on the market that comes with encryption built right in.
  And if you’re doing a hybrid (Phonegap) app…




                       Follow us @forcedotcom
WebSQL




         http://caniuse.com/#search=websql
               Follow us @forcedotcom
IndexedDB




            http://caniuse.com/#search=indexeddb




                Follow us @forcedotcom
PhoneGap Storage Class




                Follow us @forcedotcom
Terminology

 Soup – is a database table used to store JSON
  documents with index columns.
 Soups are held in Stores, which are SQLite database
  files.
 This is all Apple Newton terminology
   – It had no real filesystem, so data was stored in database entries
     called “soups”
   – For the interested:
       • http://en.wikipedia.org/wiki/Soup_(Apple)
       • http://www.canicula.com/newton/prog/soups.htm




                            Follow us @forcedotcom
Step 1 – Register a Soup
 - (BOOL)registerSoup:(NSString*)soupName
 withIndexSpecs:(NSArray*)indexSpecs



  soupName is whatever you want it to be.
  Indexes are defined as arrays of objects, and are
   needed if you want to search or sort by that field.




                         Follow us @forcedotcom
Step 2 – Upsert Soup Record
 - (NSArray*)upsertEntries:(NSArray*)entries
 toSoup:(NSString*)soupName withExternalIdPath:(NSString
 *)externalIdPath error:(NSError **)error


  entries is an array of records to upsert
  soupName identifies the soup you registered earlier
  externalIdPath is used by upsert to determine
   insert/update
  NSError error handling




                         Follow us @forcedotcom
Code Demo 5 – SmartStore Register and Upsert

  Create a Store
  Define some indexes
  Register a Soup using those indexes
  Upsert DBDC response data into the Soup




                      Follow us @forcedotcom
Querying the Soup – Query Specs

  Three types of query spec:
    – kQuerySpecTypeExact
       • kQuerySpecParamMatchKey
    – kQuerySpecTypeRange
       • kQuerySpecParamBeginKey
       • kQuerySpecParamEndKey
    – kQuerySpecTypeLike
       • kQuerySpecParamLikeKey

  Parameters:
    – kQuerySpecParamOrder
    – kQuerySpecParamIndexPath
    – kQuerySpecParamPageSize
                        Follow us @forcedotcom
Code Demo 6 – Querying the Soup

 - (SFSoupCursor *)querySoup:(NSString*)soupName
 withQuerySpec:(NSDictionary *)spec


  Soup Name
  Query Spec reference




                         Follow us @forcedotcom
Resources

Mobile SDK and Database.com Resources
  – Salesforce.com Mobile SDK
    http://developer.force.com/mobile

  – iOS Salesforce Mobile SDK on Github
    https://github.com/forcedotcom/SalesforceMobileSDK-iOS

  – Free Database.com Developer Instance
    http://database.com/

  – Crump Real Estate Source Code
    https://github.com/tomgersic/CrumpRealEstate




                             Follow us @forcedotcom
http://bit.ly/mobiledev-mw

      Follow us @forcedotcom
Q&A
Please complete our survey
    http://bit.ly/
  mobileappsurvey



       Follow us @forcedotcom

Mais conteúdo relacionado

Semelhante a Painless Mobile App Development Webinar

Developing Offline-Capable Apps with the Salesforce Mobile SDK and SmartStore
Developing Offline-Capable Apps with the Salesforce Mobile SDK and SmartStoreDeveloping Offline-Capable Apps with the Salesforce Mobile SDK and SmartStore
Developing Offline-Capable Apps with the Salesforce Mobile SDK and SmartStoreSalesforce Developers
 
Connect Your Clouds with Force.com
Connect Your Clouds with Force.comConnect Your Clouds with Force.com
Connect Your Clouds with Force.comJeff Douglas
 
Developing Offline Mobile Apps with Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps with Salesforce Mobile SDK SmartStoreDeveloping Offline Mobile Apps with Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps with Salesforce Mobile SDK SmartStoreTom Gersic
 
February 2020 Salesforce API Review
February 2020 Salesforce API ReviewFebruary 2020 Salesforce API Review
February 2020 Salesforce API ReviewLydon Bergin
 
Control your world using the Salesforce1 Platform (IoT)
Control your world using the Salesforce1 Platform (IoT)Control your world using the Salesforce1 Platform (IoT)
Control your world using the Salesforce1 Platform (IoT)InternetCreations
 
We don’t need no stinkin app server! Building a Two-Tier Mobile App
We don’t need no stinkin app server! Building a Two-Tier Mobile AppWe don’t need no stinkin app server! Building a Two-Tier Mobile App
We don’t need no stinkin app server! Building a Two-Tier Mobile AppPat Patterson
 
Building Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDKBuilding Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDKSalesforce Developers
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comSalesforce Developers
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comSalesforce Developers
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comJeff Douglas
 
Building a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.comBuilding a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.comSalesforce Developers
 
SharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsSharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsShailen Sukul
 
Intro to AT&T Toolkit for Salesforce Platform Webinar
Intro to AT&T Toolkit for Salesforce Platform WebinarIntro to AT&T Toolkit for Salesforce Platform Webinar
Intro to AT&T Toolkit for Salesforce Platform WebinarSalesforce Developers
 
The Emergence of Choice in the .NET Ecosystem
The Emergence of Choice in the .NET EcosystemThe Emergence of Choice in the .NET Ecosystem
The Emergence of Choice in the .NET EcosystemJames Avery
 
Introduction to Developing Android Apps With the Salesforce Mobile SDK
Introduction to Developing Android Apps With the Salesforce Mobile SDKIntroduction to Developing Android Apps With the Salesforce Mobile SDK
Introduction to Developing Android Apps With the Salesforce Mobile SDKSalesforce Developers
 
How Force.com developers do more in less time
How Force.com developers do more in less timeHow Force.com developers do more in less time
How Force.com developers do more in less timeAbhinav Gupta
 
Web application penetration testing lab setup guide
Web application penetration testing lab setup guideWeb application penetration testing lab setup guide
Web application penetration testing lab setup guideSudhanshu Chauhan
 
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDKQuickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDKSalesforce Developers
 

Semelhante a Painless Mobile App Development Webinar (20)

Developing Offline-Capable Apps with the Salesforce Mobile SDK and SmartStore
Developing Offline-Capable Apps with the Salesforce Mobile SDK and SmartStoreDeveloping Offline-Capable Apps with the Salesforce Mobile SDK and SmartStore
Developing Offline-Capable Apps with the Salesforce Mobile SDK and SmartStore
 
Connect Your Clouds with Force.com
Connect Your Clouds with Force.comConnect Your Clouds with Force.com
Connect Your Clouds with Force.com
 
Developing Offline Mobile Apps with Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps with Salesforce Mobile SDK SmartStoreDeveloping Offline Mobile Apps with Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps with Salesforce Mobile SDK SmartStore
 
February 2020 Salesforce API Review
February 2020 Salesforce API ReviewFebruary 2020 Salesforce API Review
February 2020 Salesforce API Review
 
Intro to Force.com Webinar presentation
Intro to Force.com Webinar presentationIntro to Force.com Webinar presentation
Intro to Force.com Webinar presentation
 
Introduction to Force.com Webinar
Introduction to Force.com WebinarIntroduction to Force.com Webinar
Introduction to Force.com Webinar
 
Control your world using the Salesforce1 Platform (IoT)
Control your world using the Salesforce1 Platform (IoT)Control your world using the Salesforce1 Platform (IoT)
Control your world using the Salesforce1 Platform (IoT)
 
We don’t need no stinkin app server! Building a Two-Tier Mobile App
We don’t need no stinkin app server! Building a Two-Tier Mobile AppWe don’t need no stinkin app server! Building a Two-Tier Mobile App
We don’t need no stinkin app server! Building a Two-Tier Mobile App
 
Building Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDKBuilding Mobile Apps on Salesforce Platform with Mobile SDK
Building Mobile Apps on Salesforce Platform with Mobile SDK
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
 
Building a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.comBuilding a Java Play! App on Heroku using Database.com
Building a Java Play! App on Heroku using Database.com
 
SharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning ModelsSharePoint 2013 App Provisioning Models
SharePoint 2013 App Provisioning Models
 
Intro to AT&T Toolkit for Salesforce Platform Webinar
Intro to AT&T Toolkit for Salesforce Platform WebinarIntro to AT&T Toolkit for Salesforce Platform Webinar
Intro to AT&T Toolkit for Salesforce Platform Webinar
 
The Emergence of Choice in the .NET Ecosystem
The Emergence of Choice in the .NET EcosystemThe Emergence of Choice in the .NET Ecosystem
The Emergence of Choice in the .NET Ecosystem
 
Introduction to Developing Android Apps With the Salesforce Mobile SDK
Introduction to Developing Android Apps With the Salesforce Mobile SDKIntroduction to Developing Android Apps With the Salesforce Mobile SDK
Introduction to Developing Android Apps With the Salesforce Mobile SDK
 
How Force.com developers do more in less time
How Force.com developers do more in less timeHow Force.com developers do more in less time
How Force.com developers do more in less time
 
Web application penetration testing lab setup guide
Web application penetration testing lab setup guideWeb application penetration testing lab setup guide
Web application penetration testing lab setup guide
 
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDKQuickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
Quickly Build a Native Mobile App for Your Community Using Salesforce Mobile SDK
 

Mais de Salesforce Developers

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSalesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceSalesforce Developers
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base ComponentsSalesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsSalesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaSalesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentSalesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsSalesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsSalesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsSalesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and TestingSalesforce Developers
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilitySalesforce Developers
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce dataSalesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionSalesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPSalesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceSalesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureSalesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DXSalesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectSalesforce Developers
 

Mais de Salesforce Developers (20)

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 

Último

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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 educationjfdjdjcjdnsjd
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Último (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Painless Mobile App Development Webinar

  • 1. Painless Mobile App Development Shawna Wolverton Director, Product Management @shawnawol Tom Gersic Senior Technical Architect @tomgersic Follow us @forcedotcom
  • 2. Safe Harbor Safe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K filed on April 30, 2008 and in other filings with the Securities and Exchange Commission. These documents are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 3. @forcedotcom / #forcewebinar Developer Force Group facebook.com/forcedotcom Developer Force – Force.com Community Follow us @forcedotcom
  • 4. Agenda  App Demo  Database.com Setup  Mobile SDK overview  Building the app  Q&A Follow us @forcedotcom
  • 5. Moguls Need Mobile Apps  Crump Real Estate Holdings needs an app to track service requests from their tenants Follow us @forcedotcom
  • 6. What we’re going to build today http://www.github.com/tomgersic/CrumpRealEstate Follow us @forcedotcom
  • 7. Database.com Built-in Services Accelerate Mobile Development Integrated services, no external app server needed! • Integrated user management and security • Custom APIs to maximize performance • Social data feeds are ideal for mobile interfaces • Mobile SDKs simplify client app development Follow us @forcedotcom
  • 8. Force.com Workbench  SOQL – Query language for Force.com and Database.com  Very much like SQL, but has some differences Follow us @forcedotcom
  • 9. Salesforce Mobile SDK Follow us @forcedotcom
  • 10. Force.com Mobile SDK Follow us @forcedotcom
  • 11. Three Options: Which One Is Right For You? Advanced UI interactions Web developer skills Fastest performance Access to native platform App store distribution App store distribution Web developer skills Instant updates Unrestricted distribution Follow us @forcedotcom
  • 12. Hybrid Mobile App Development Follow us @forcedotcom
  • 13. Force.com Mobile SDK http://developer.force.com/mobile Follow us @forcedotcom
  • 14. Force.com Mobile SDK https://github.com/forcedotcom Follow us @forcedotcom
  • 16. OAuth An industry standard method of validating user credentials while avoiding password anti-patterns. Follow us @forcedotcom
  • 18. OAuth 2.0 Flows Available  User-Agent Flow  Username-Password Flow  SAML Bearer Assertion Flow  Refresh Token Flow  JWT Bearer Token Flow  Web Server Authentication Flow Follow us @forcedotcom
  • 19. OAuth 2.0 Flows Available  User-Agent Flow  Username-Password Flow  SAML Bearer Assertion Flow  Refresh Token Flow  JWT Bearer Token Flow  Web Server Authentication Flow Follow us @forcedotcom
  • 20. OAuth 2.0 User-Agent Flow Follow us @forcedotcom
  • 21. OAuth 2.0 User-Agent Flow Follow us @forcedotcom
  • 22. OAuth 2.0 Refresh Token Flow Follow us @forcedotcom
  • 23. Oauth 2.0 and the Mobile SDK Follow us @forcedotcom
  • 24. Code Demo 1: Initial Setup http://www.github.com/tomgersic/CrumpRealEstate Follow us @forcedotcom
  • 25. Representational State Transfer (REST) A stateless data transport based on standard HTTP methods for delivering data as JSON or XML Follow us @forcedotcom
  • 26. REST API  HEAD is used to retrieve resource metadata.  GET is used to retrieve information, such as SOQL Queries using SELECT.  POST is used to create a new record.  PATCH is used to update or upsert a record.  DELETE is used to delete a record. HTTP GET: /services/data/v24.0/query/?q=SELECT+Id,+Name,+Address__c,+Agreed_ Selling_Price__c+FROM+Property__c Follow us @forcedotcom
  • 27. REST API Returns a JSON Response /services/data/v24.0/query/?q=select+Id,+Name,+Address__c,+Agreed_ Selling_Price__c+from+Property__c Follow us @forcedotcom
  • 28. Code Demo 4 – SOQL Query and View Layer Stuff  SFRestAPI singleton  SFRestDelegate  UITableViewDataSource  UITableViewDelegate Follow us @forcedotcom
  • 29. Salesforce.com Mobile SDK SmartStore  SQLite ORM wrapper for Native and Hybrid apps built on the SFDC Mobile SDK  NoSQL style JSON-based document store Follow us @forcedotcom
  • 30. SmartStore Stack Follow us @forcedotcom
  • 31. Smartstore Security  Only cross-platform NoSQL mobile database technology on the market that comes with encryption built right in.  And if you’re doing a hybrid (Phonegap) app… Follow us @forcedotcom
  • 32. WebSQL http://caniuse.com/#search=websql Follow us @forcedotcom
  • 33. IndexedDB http://caniuse.com/#search=indexeddb Follow us @forcedotcom
  • 34. PhoneGap Storage Class Follow us @forcedotcom
  • 35. Terminology  Soup – is a database table used to store JSON documents with index columns.  Soups are held in Stores, which are SQLite database files.  This is all Apple Newton terminology – It had no real filesystem, so data was stored in database entries called “soups” – For the interested: • http://en.wikipedia.org/wiki/Soup_(Apple) • http://www.canicula.com/newton/prog/soups.htm Follow us @forcedotcom
  • 36. Step 1 – Register a Soup - (BOOL)registerSoup:(NSString*)soupName withIndexSpecs:(NSArray*)indexSpecs  soupName is whatever you want it to be.  Indexes are defined as arrays of objects, and are needed if you want to search or sort by that field. Follow us @forcedotcom
  • 37. Step 2 – Upsert Soup Record - (NSArray*)upsertEntries:(NSArray*)entries toSoup:(NSString*)soupName withExternalIdPath:(NSString *)externalIdPath error:(NSError **)error  entries is an array of records to upsert  soupName identifies the soup you registered earlier  externalIdPath is used by upsert to determine insert/update  NSError error handling Follow us @forcedotcom
  • 38. Code Demo 5 – SmartStore Register and Upsert  Create a Store  Define some indexes  Register a Soup using those indexes  Upsert DBDC response data into the Soup Follow us @forcedotcom
  • 39. Querying the Soup – Query Specs  Three types of query spec: – kQuerySpecTypeExact • kQuerySpecParamMatchKey – kQuerySpecTypeRange • kQuerySpecParamBeginKey • kQuerySpecParamEndKey – kQuerySpecTypeLike • kQuerySpecParamLikeKey  Parameters: – kQuerySpecParamOrder – kQuerySpecParamIndexPath – kQuerySpecParamPageSize Follow us @forcedotcom
  • 40. Code Demo 6 – Querying the Soup - (SFSoupCursor *)querySoup:(NSString*)soupName withQuerySpec:(NSDictionary *)spec  Soup Name  Query Spec reference Follow us @forcedotcom
  • 41. Resources Mobile SDK and Database.com Resources – Salesforce.com Mobile SDK http://developer.force.com/mobile – iOS Salesforce Mobile SDK on Github https://github.com/forcedotcom/SalesforceMobileSDK-iOS – Free Database.com Developer Instance http://database.com/ – Crump Real Estate Source Code https://github.com/tomgersic/CrumpRealEstate Follow us @forcedotcom
  • 42. http://bit.ly/mobiledev-mw Follow us @forcedotcom
  • 43. Q&A Please complete our survey http://bit.ly/ mobileappsurvey Follow us @forcedotcom