SlideShare uma empresa Scribd logo
1 de 32
Salesforce1 Developer
Week
Bringing developers around the world together to
build mobile apps.
This is Salesforce1 platform
Two ways to build Mobile Apps
Customer-Facing
Mobile Services
Custom Mobile Apps
Employee-Facing
Out-of-the-box
AppExchange Apps:
Dropbox Concur Evernote ServiceMax More
Custom Apps and Integrations:
SAP Oracle Everything Custom More
Sales, Service and Marketing
Accounts Cases Campaigns Dashboards More
Salesforce1 Mobile App
The Salesforce1 Mobile App
“Everything” you develop
In your Org is accessible
Via Salesforce1 mobile app
Download
Salesforce1 Mobile App
from your mobile phone
app store
i.e Apple Store, Google Play
Also viewable in a browser
yourorg.salesforce.com/one/one.app
Use Salesforce1 mobile in your browser
If you don‟t have a mobile device
- Can be useful for rapid testing
Note: this does not currently work in Firefox or Windows 8 browsers.
Google Chrome is the recommended browser.
Introducing Salesforce1 Mobile App
Drag and drop UI
customization
Notifications
Publisher
Actions
You Saleslforce
Apps
Recently
searched for
Objects
Chatter
Mobile Navigation
(aka Left Nav)
Mobile
Administration 
Mobile Navigation
Page and Compact Layouts
SObject 
Page Layout
SObject 
Compact
Layout
List Views
Sobject Tab 
New List View
Tapping an object in the Left Nav
displays your List Views and your
Recent records
Also shows any
custom list views
you created
Expanded Lookup
Parent Sobject 
Compact Layout
Child SObject 
Page Layout 
Expanded Lookup
Show additional info for Parent records
Built-in Map Integration
for Accounts &
Contacts
Account  record 
populate Billing Address or
Shipping Address fields
Map icon will automatically display at the top of the
detail page.
Publisher Actions
Global: Create  Global
Actions
Object Specific: SObject
 Buttons, Links & Actions
 New Action
Page Layouts control which actions show in what
order
Visualforce – Mobile Cards
Mobile Cards -
Visualforce Pages
on Record Detail
Visualforce – Publisher Actions
Visualforce Pages as
Publisher Actions
(VF page extends
Standard Controller for
Object Specific Publisher
Actions)
JavaScript Pub-Sub library available to
interact with the publisher
publisher.setValidForSubmit
publisher.post
publisher.close
Visualforce in Salesforce1
 <apex:page docType="html-5.0" …>
 „Available for Salesforce Mobile apps‟ flag enabled
 Developers are responsible for making the VF page „mobile
ready‟
– Use a Responsive Design framework like Bootstrap or Mobile Design
templates
– Leverage touch and swipe events where appropriate
 Use JavaScript Remoting/VF Remote Objects for better
performance
 Use HTML5 for device features like Geolocation and Camera
access
TODO: URL for Salesforce Mobile Gallery / Mobile Packs
Visualforce – Left Nav
Visualforce Pages in
Left Nav
JavaScript navigation library available
sforce.one.navigateToSObject etc.
Visualforce – Custom Publisher Action
Visualforce Pages as
Custom Publisher
Actions
Standard Controller
JavaScript publisher library available
Sfdc.canvas.publisher.publish etc
Visualforce – Formula Field Link
Visualforce Pages
as
Formula Field Links
Salesforce 1 App Design
Suggested approaches for configuring and
customising apps for all devices
Book: Salesforce 1 Developer Guide
developer.salesforce.com
-- search for “developer guide”
Note: This book contains advice on the
design of your Salesforce apps across
all devices (web, tabliet, phone, etc)
www.salesforce.com/de/events/
Developer theatre, Library, Quick Starts, Mini Hacks, etc
www.salesforce.com/nl/events/
Developer Library, Quick Starts, Mini Hacks, etc
Heroku1 Connect
Connecting customer facing apps with your
Salesforce Org
Building Customer Facing Apps
on Salesforce1
This app runs on Heroku and
select data is synchronized
between the Heroku database
and an associated Salesforce
Org
Consumer Application with Heroku Connect
Case
CampaignProduct
Contact
Interactio
n
CampaignProduct
Contact
Interactio
n
Marketing
Manager
Customer
Heroku Connect
REST
Heroku Connect Object Mapping
Summary: Salesforce1 App and Platform
 Fast non-programmatic mobile app development
 Many hooks available to the developer to leverage
 HTML5/JS/CSS supported Visualforce Development
 HTTP standards based services integration
 Great for internal employee facing apps
Resources
Salesforce1 Platform Use Cases:
bit.ly/s1mobile
Salesforce1 developer resources:
developer.salesforce.com
Salesforce1 Mobile App Workshop:
http://forceworkbooks.herokuapp.com/s1mobile/
www.salesforce.com/de/events/
Developer theatre, Library, Quick Starts, Mini Hacks, etc
www.salesforce.com/nl/events/
Developer Library, Quick Starts, Mini Hacks, etc
Thank you
John Stevenson
@jr0cket

Mais conteúdo relacionado

Mais procurados

Hybrid vs Native Mobile App. Decide in 5 minutes!
Hybrid vs Native Mobile App. Decide in 5 minutes!Hybrid vs Native Mobile App. Decide in 5 minutes!
Hybrid vs Native Mobile App. Decide in 5 minutes!July Systems
 
AppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App PlatformAppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App Platformpravse
 
Cross-Platform App Development Importance in Mobile App Development
Cross-Platform App Development Importance in Mobile App DevelopmentCross-Platform App Development Importance in Mobile App Development
Cross-Platform App Development Importance in Mobile App DevelopmentAlina Thomas
 
Powering your Apps with Cloud Services
Powering your Apps with Cloud ServicesPowering your Apps with Cloud Services
Powering your Apps with Cloud ServicesXpand IT
 
Phonegap vs Sencha Touch vs Titanium
Phonegap vs Sencha Touch vs TitaniumPhonegap vs Sencha Touch vs Titanium
Phonegap vs Sencha Touch vs TitaniumPixelCrayons
 
ESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVE
ESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVEESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVE
ESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVELets Nurture
 
Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015Guy Barrette
 
Mobile Application Framework - OFM Canberra September 2014
Mobile Application Framework - OFM Canberra September 2014Mobile Application Framework - OFM Canberra September 2014
Mobile Application Framework - OFM Canberra September 2014Joelith
 
PhoneGap Enterprise Viewer by Anthony Rumsey
PhoneGap Enterprise Viewer by Anthony RumseyPhoneGap Enterprise Viewer by Anthony Rumsey
PhoneGap Enterprise Viewer by Anthony RumseyAEM HUB
 
How to Make an Inventory App | No Code App Development
How to Make an Inventory App | No Code App DevelopmentHow to Make an Inventory App | No Code App Development
How to Make an Inventory App | No Code App DevelopmentAppSheet
 
Developing Cross-platform Native Apps with Xamarin
Developing Cross-platform Native Apps with XamarinDeveloping Cross-platform Native Apps with Xamarin
Developing Cross-platform Native Apps with Xamarindanhermes
 
Cross platform development with c# and xamarin
Cross platform development with c# and xamarinCross platform development with c# and xamarin
Cross platform development with c# and xamarinLuca Zulian
 
Web App VS. Hybrid App VS. Native App?
Web App VS. Hybrid App VS. Native App?Web App VS. Hybrid App VS. Native App?
Web App VS. Hybrid App VS. Native App?Justin O'Neill
 

Mais procurados (20)

Hybrid vs Native Mobile App. Decide in 5 minutes!
Hybrid vs Native Mobile App. Decide in 5 minutes!Hybrid vs Native Mobile App. Decide in 5 minutes!
Hybrid vs Native Mobile App. Decide in 5 minutes!
 
AppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App PlatformAppSheet Overview -- DIY Mobile App Platform
AppSheet Overview -- DIY Mobile App Platform
 
Cross-Platform App Development Importance in Mobile App Development
Cross-Platform App Development Importance in Mobile App DevelopmentCross-Platform App Development Importance in Mobile App Development
Cross-Platform App Development Importance in Mobile App Development
 
Powering your Apps with Cloud Services
Powering your Apps with Cloud ServicesPowering your Apps with Cloud Services
Powering your Apps with Cloud Services
 
Phonegap vs Sencha Touch vs Titanium
Phonegap vs Sencha Touch vs TitaniumPhonegap vs Sencha Touch vs Titanium
Phonegap vs Sencha Touch vs Titanium
 
Rhodes vs Phonegap
Rhodes vs PhonegapRhodes vs Phonegap
Rhodes vs Phonegap
 
ESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVE
ESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVEESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVE
ESSENTIAL FEATURES - YOUR ENTERPRISE APP MUST HAVE
 
Rhomobile
RhomobileRhomobile
Rhomobile
 
Hybrid mobile apps
Hybrid mobile appsHybrid mobile apps
Hybrid mobile apps
 
Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015
 
Mobile Application Framework - OFM Canberra September 2014
Mobile Application Framework - OFM Canberra September 2014Mobile Application Framework - OFM Canberra September 2014
Mobile Application Framework - OFM Canberra September 2014
 
PhoneGap Enterprise Viewer by Anthony Rumsey
PhoneGap Enterprise Viewer by Anthony RumseyPhoneGap Enterprise Viewer by Anthony Rumsey
PhoneGap Enterprise Viewer by Anthony Rumsey
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
How to Make an Inventory App | No Code App Development
How to Make an Inventory App | No Code App DevelopmentHow to Make an Inventory App | No Code App Development
How to Make an Inventory App | No Code App Development
 
Hybrid Mobile App
Hybrid Mobile AppHybrid Mobile App
Hybrid Mobile App
 
Native vs. Hybrid Apps
Native vs. Hybrid AppsNative vs. Hybrid Apps
Native vs. Hybrid Apps
 
Developing Cross-platform Native Apps with Xamarin
Developing Cross-platform Native Apps with XamarinDeveloping Cross-platform Native Apps with Xamarin
Developing Cross-platform Native Apps with Xamarin
 
Cross platform development with c# and xamarin
Cross platform development with c# and xamarinCross platform development with c# and xamarin
Cross platform development with c# and xamarin
 
Xamarin.Forms
Xamarin.FormsXamarin.Forms
Xamarin.Forms
 
Web App VS. Hybrid App VS. Native App?
Web App VS. Hybrid App VS. Native App?Web App VS. Hybrid App VS. Native App?
Web App VS. Hybrid App VS. Native App?
 

Destaque

Building the Atlassian Community in the UK
Building the Atlassian Community in the UKBuilding the Atlassian Community in the UK
Building the Atlassian Community in the UKJohn Stevenson
 
#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1Salesforce Marketing Cloud
 
Dreamforce14 Metadata Management with Git Version Control
Dreamforce14 Metadata Management with Git Version ControlDreamforce14 Metadata Management with Git Version Control
Dreamforce14 Metadata Management with Git Version ControlJohn Stevenson
 
Dreamforce 13 developer session: Introduction to Heroku
Dreamforce 13 developer session: Introduction to HerokuDreamforce 13 developer session: Introduction to Heroku
Dreamforce 13 developer session: Introduction to HerokuJohn Stevenson
 
Salesforce Summer of Hacks London - Introduction
Salesforce Summer of Hacks London - IntroductionSalesforce Summer of Hacks London - Introduction
Salesforce Summer of Hacks London - IntroductionJohn Stevenson
 
Dreamforce 13 developer session: Git for Force.com developers
Dreamforce 13 developer session: Git for Force.com developersDreamforce 13 developer session: Git for Force.com developers
Dreamforce 13 developer session: Git for Force.com developersJohn Stevenson
 
Developers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformDevelopers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformJohn Stevenson
 
Communication improbable
Communication improbableCommunication improbable
Communication improbableJohn Stevenson
 
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...i2max
 

Destaque (9)

Building the Atlassian Community in the UK
Building the Atlassian Community in the UKBuilding the Atlassian Community in the UK
Building the Atlassian Community in the UK
 
#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1#CNX14 - Building Enterprise Mobile Apps With Salesforce1
#CNX14 - Building Enterprise Mobile Apps With Salesforce1
 
Dreamforce14 Metadata Management with Git Version Control
Dreamforce14 Metadata Management with Git Version ControlDreamforce14 Metadata Management with Git Version Control
Dreamforce14 Metadata Management with Git Version Control
 
Dreamforce 13 developer session: Introduction to Heroku
Dreamforce 13 developer session: Introduction to HerokuDreamforce 13 developer session: Introduction to Heroku
Dreamforce 13 developer session: Introduction to Heroku
 
Salesforce Summer of Hacks London - Introduction
Salesforce Summer of Hacks London - IntroductionSalesforce Summer of Hacks London - Introduction
Salesforce Summer of Hacks London - Introduction
 
Dreamforce 13 developer session: Git for Force.com developers
Dreamforce 13 developer session: Git for Force.com developersDreamforce 13 developer session: Git for Force.com developers
Dreamforce 13 developer session: Git for Force.com developers
 
Developers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 PlatformDevelopers guide to the Salesforce1 Platform
Developers guide to the Salesforce1 Platform
 
Communication improbable
Communication improbableCommunication improbable
Communication improbable
 
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...[I2max 아이투맥스] 2015 salesforce 발표자료  cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
[I2max 아이투맥스] 2015 salesforce 발표자료 cloud동향에서 salesforce 앱 개발까지_ salesfroce 1...
 

Semelhante a Developer week EMEA - Salesforce1 Mobile App overview

Learning salesforce-mobile-way
Learning salesforce-mobile-wayLearning salesforce-mobile-way
Learning salesforce-mobile-wayAbhinav Gupta
 
Salesforce1 UX Overview for ISVs and Partners
Salesforce1 UX Overview for ISVs and PartnersSalesforce1 UX Overview for ISVs and Partners
Salesforce1 UX Overview for ISVs and PartnersSalesforce Partners
 
Salesforce1 for developers
Salesforce1 for developersSalesforce1 for developers
Salesforce1 for developersDavid Scruggs
 
3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)
3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)
3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)Salesforce Partners
 
Salesforce1 for ISVs Webinar (July 17, 2014)
Salesforce1 for ISVs Webinar (July 17, 2014)Salesforce1 for ISVs Webinar (July 17, 2014)
Salesforce1 for ISVs Webinar (July 17, 2014)Salesforce Partners
 
Benefits of PhoneGap for Mobile App Development - Appzure
Benefits of PhoneGap for Mobile App Development - AppzureBenefits of PhoneGap for Mobile App Development - Appzure
Benefits of PhoneGap for Mobile App Development - AppzureAppzure -Mobile App Development
 
Salesforce1 app getting started guide
Salesforce1 app getting started guideSalesforce1 app getting started guide
Salesforce1 app getting started guide1stevemarcy
 
QuickSoft Mobile Tips & Tricks 11-03-10
QuickSoft Mobile Tips & Tricks 11-03-10QuickSoft Mobile Tips & Tricks 11-03-10
QuickSoft Mobile Tips & Tricks 11-03-10Almog Koren
 
Salesforce1 for ISVs Webinar (May 15, 2014)
Salesforce1 for ISVs Webinar (May 15, 2014)Salesforce1 for ISVs Webinar (May 15, 2014)
Salesforce1 for ISVs Webinar (May 15, 2014)Salesforce Partners
 
Salesforce Lightning App Development_ The Comprehensive Guide 2024.pdf
Salesforce Lightning App Development_ The Comprehensive Guide 2024.pdfSalesforce Lightning App Development_ The Comprehensive Guide 2024.pdf
Salesforce Lightning App Development_ The Comprehensive Guide 2024.pdfJPLoft Solutions
 
From mobile browser to mobile app
From mobile browser to mobile appFrom mobile browser to mobile app
From mobile browser to mobile appRyan Stewart
 
Visualforce in Salesforce1: Optimizing your User Interface for Mobile
Visualforce in Salesforce1: Optimizing your User Interface for MobileVisualforce in Salesforce1: Optimizing your User Interface for Mobile
Visualforce in Salesforce1: Optimizing your User Interface for MobileSalesforce Developers
 
DroidCon 2011: Developing HTML5 and hybrid Android apps using Phonegap
DroidCon 2011: Developing HTML5 and hybrid Android apps using PhonegapDroidCon 2011: Developing HTML5 and hybrid Android apps using Phonegap
DroidCon 2011: Developing HTML5 and hybrid Android apps using PhonegapAyushman Jain
 
Salesforce1 Adoption Workshop - Silicon Valley User Group
Salesforce1 Adoption Workshop - Silicon Valley User GroupSalesforce1 Adoption Workshop - Silicon Valley User Group
Salesforce1 Adoption Workshop - Silicon Valley User GroupDeepa Patel
 

Semelhante a Developer week EMEA - Salesforce1 Mobile App overview (20)

Salesforce1 Developer Week
Salesforce1 Developer WeekSalesforce1 Developer Week
Salesforce1 Developer Week
 
Salesforce1 for Developers
Salesforce1 for DevelopersSalesforce1 for Developers
Salesforce1 for Developers
 
Learning salesforce-mobile-way
Learning salesforce-mobile-wayLearning salesforce-mobile-way
Learning salesforce-mobile-way
 
Salesforce1 UX Overview for ISVs and Partners
Salesforce1 UX Overview for ISVs and PartnersSalesforce1 UX Overview for ISVs and Partners
Salesforce1 UX Overview for ISVs and Partners
 
"Use of Mobile Apps: Harnessing E-Resources & Services in Libraries & Inform...
 "Use of Mobile Apps: Harnessing E-Resources & Services in Libraries & Inform... "Use of Mobile Apps: Harnessing E-Resources & Services in Libraries & Inform...
"Use of Mobile Apps: Harnessing E-Resources & Services in Libraries & Inform...
 
Salesforce1 for developers
Salesforce1 for developersSalesforce1 for developers
Salesforce1 for developers
 
3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)
3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)
3 Experts Share Tips for Salesforce1 Mobile Apps (Aug 21)
 
Salesforce1 for Developers
Salesforce1 for DevelopersSalesforce1 for Developers
Salesforce1 for Developers
 
Salesforce Lightning
Salesforce LightningSalesforce Lightning
Salesforce Lightning
 
Salesforce1 for ISVs Webinar (July 17, 2014)
Salesforce1 for ISVs Webinar (July 17, 2014)Salesforce1 for ISVs Webinar (July 17, 2014)
Salesforce1 for ISVs Webinar (July 17, 2014)
 
Benefits of PhoneGap for Mobile App Development - Appzure
Benefits of PhoneGap for Mobile App Development - AppzureBenefits of PhoneGap for Mobile App Development - Appzure
Benefits of PhoneGap for Mobile App Development - Appzure
 
Salesforce1 app getting started guide
Salesforce1 app getting started guideSalesforce1 app getting started guide
Salesforce1 app getting started guide
 
QuickSoft Mobile Tips & Tricks 11-03-10
QuickSoft Mobile Tips & Tricks 11-03-10QuickSoft Mobile Tips & Tricks 11-03-10
QuickSoft Mobile Tips & Tricks 11-03-10
 
Salesforce1 for ISVs Webinar (May 15, 2014)
Salesforce1 for ISVs Webinar (May 15, 2014)Salesforce1 for ISVs Webinar (May 15, 2014)
Salesforce1 for ISVs Webinar (May 15, 2014)
 
Salesforce Lightning App Development_ The Comprehensive Guide 2024.pdf
Salesforce Lightning App Development_ The Comprehensive Guide 2024.pdfSalesforce Lightning App Development_ The Comprehensive Guide 2024.pdf
Salesforce Lightning App Development_ The Comprehensive Guide 2024.pdf
 
From mobile browser to mobile app
From mobile browser to mobile appFrom mobile browser to mobile app
From mobile browser to mobile app
 
Visualforce in Salesforce1: Optimizing your User Interface for Mobile
Visualforce in Salesforce1: Optimizing your User Interface for MobileVisualforce in Salesforce1: Optimizing your User Interface for Mobile
Visualforce in Salesforce1: Optimizing your User Interface for Mobile
 
DroidCon 2011: Developing HTML5 and hybrid Android apps using Phonegap
DroidCon 2011: Developing HTML5 and hybrid Android apps using PhonegapDroidCon 2011: Developing HTML5 and hybrid Android apps using Phonegap
DroidCon 2011: Developing HTML5 and hybrid Android apps using Phonegap
 
Salesforce App On iOS
Salesforce App On iOSSalesforce App On iOS
Salesforce App On iOS
 
Salesforce1 Adoption Workshop - Silicon Valley User Group
Salesforce1 Adoption Workshop - Silicon Valley User GroupSalesforce1 Adoption Workshop - Silicon Valley User Group
Salesforce1 Adoption Workshop - Silicon Valley User Group
 

Mais de John Stevenson

ClojureX Conference 2017 - 10 amazing years of Clojure
ClojureX Conference 2017 - 10 amazing years of ClojureClojureX Conference 2017 - 10 amazing years of Clojure
ClojureX Conference 2017 - 10 amazing years of ClojureJohn Stevenson
 
Confessions of a developer community builder
Confessions of a developer community builderConfessions of a developer community builder
Confessions of a developer community builderJohn Stevenson
 
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
Progscon 2017: Taming the wild fronteer - Adventures in ClojurescriptProgscon 2017: Taming the wild fronteer - Adventures in Clojurescript
Progscon 2017: Taming the wild fronteer - Adventures in ClojurescriptJohn Stevenson
 
Introduction to Functional Reactive Web with Clojurescript
Introduction to Functional Reactive Web with ClojurescriptIntroduction to Functional Reactive Web with Clojurescript
Introduction to Functional Reactive Web with ClojurescriptJohn Stevenson
 
Thinking Functionally with Clojure
Thinking Functionally with ClojureThinking Functionally with Clojure
Thinking Functionally with ClojureJohn Stevenson
 
Getting into public speaking at conferences
Getting into public speaking at conferencesGetting into public speaking at conferences
Getting into public speaking at conferencesJohn Stevenson
 
Functional web with clojure
Functional web with clojureFunctional web with clojure
Functional web with clojureJohn Stevenson
 
Get into Functional Programming with Clojure
Get into Functional Programming with ClojureGet into Functional Programming with Clojure
Get into Functional Programming with ClojureJohn Stevenson
 
Guiding people into Clojure
Guiding people into ClojureGuiding people into Clojure
Guiding people into ClojureJohn Stevenson
 
Git and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern DeveloperGit and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern DeveloperJohn Stevenson
 
Get Functional Programming with Clojure
Get Functional Programming with ClojureGet Functional Programming with Clojure
Get Functional Programming with ClojureJohn Stevenson
 
So you want to run a developer event, are you crazy?
So you want to run a developer event, are you crazy?So you want to run a developer event, are you crazy?
So you want to run a developer event, are you crazy?John Stevenson
 
Trailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App CloudTrailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App CloudJohn Stevenson
 
Clojure for Java developers
Clojure for Java developersClojure for Java developers
Clojure for Java developersJohn Stevenson
 
Introducing the Salesforce platform
Introducing the Salesforce platformIntroducing the Salesforce platform
Introducing the Salesforce platformJohn Stevenson
 
Getting started with Clojure
Getting started with ClojureGetting started with Clojure
Getting started with ClojureJohn Stevenson
 
Heroku Introduction: Scaling customer facing apps & services
Heroku Introduction: Scaling customer facing apps & servicesHeroku Introduction: Scaling customer facing apps & services
Heroku Introduction: Scaling customer facing apps & servicesJohn Stevenson
 
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...John Stevenson
 
Building a great mobile experience on the force.com platforms
Building a great mobile experience on the force.com platformsBuilding a great mobile experience on the force.com platforms
Building a great mobile experience on the force.com platformsJohn Stevenson
 
Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013John Stevenson
 

Mais de John Stevenson (20)

ClojureX Conference 2017 - 10 amazing years of Clojure
ClojureX Conference 2017 - 10 amazing years of ClojureClojureX Conference 2017 - 10 amazing years of Clojure
ClojureX Conference 2017 - 10 amazing years of Clojure
 
Confessions of a developer community builder
Confessions of a developer community builderConfessions of a developer community builder
Confessions of a developer community builder
 
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
Progscon 2017: Taming the wild fronteer - Adventures in ClojurescriptProgscon 2017: Taming the wild fronteer - Adventures in Clojurescript
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
 
Introduction to Functional Reactive Web with Clojurescript
Introduction to Functional Reactive Web with ClojurescriptIntroduction to Functional Reactive Web with Clojurescript
Introduction to Functional Reactive Web with Clojurescript
 
Thinking Functionally with Clojure
Thinking Functionally with ClojureThinking Functionally with Clojure
Thinking Functionally with Clojure
 
Getting into public speaking at conferences
Getting into public speaking at conferencesGetting into public speaking at conferences
Getting into public speaking at conferences
 
Functional web with clojure
Functional web with clojureFunctional web with clojure
Functional web with clojure
 
Get into Functional Programming with Clojure
Get into Functional Programming with ClojureGet into Functional Programming with Clojure
Get into Functional Programming with Clojure
 
Guiding people into Clojure
Guiding people into ClojureGuiding people into Clojure
Guiding people into Clojure
 
Git and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern DeveloperGit and github - Verson Control for the Modern Developer
Git and github - Verson Control for the Modern Developer
 
Get Functional Programming with Clojure
Get Functional Programming with ClojureGet Functional Programming with Clojure
Get Functional Programming with Clojure
 
So you want to run a developer event, are you crazy?
So you want to run a developer event, are you crazy?So you want to run a developer event, are you crazy?
So you want to run a developer event, are you crazy?
 
Trailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App CloudTrailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App Cloud
 
Clojure for Java developers
Clojure for Java developersClojure for Java developers
Clojure for Java developers
 
Introducing the Salesforce platform
Introducing the Salesforce platformIntroducing the Salesforce platform
Introducing the Salesforce platform
 
Getting started with Clojure
Getting started with ClojureGetting started with Clojure
Getting started with Clojure
 
Heroku Introduction: Scaling customer facing apps & services
Heroku Introduction: Scaling customer facing apps & servicesHeroku Introduction: Scaling customer facing apps & services
Heroku Introduction: Scaling customer facing apps & services
 
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...
Salesforce CCT Munich 2013 Introducing heroku - elastic, polyglot platform as...
 
Building a great mobile experience on the force.com platforms
Building a great mobile experience on the force.com platformsBuilding a great mobile experience on the force.com platforms
Building a great mobile experience on the force.com platforms
 
Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013
 

Último

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 

Último (20)

From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 

Developer week EMEA - Salesforce1 Mobile App overview

  • 1. Salesforce1 Developer Week Bringing developers around the world together to build mobile apps.
  • 3. Two ways to build Mobile Apps Customer-Facing Mobile Services Custom Mobile Apps Employee-Facing Out-of-the-box AppExchange Apps: Dropbox Concur Evernote ServiceMax More Custom Apps and Integrations: SAP Oracle Everything Custom More Sales, Service and Marketing Accounts Cases Campaigns Dashboards More Salesforce1 Mobile App
  • 4. The Salesforce1 Mobile App “Everything” you develop In your Org is accessible Via Salesforce1 mobile app
  • 5. Download Salesforce1 Mobile App from your mobile phone app store i.e Apple Store, Google Play
  • 6. Also viewable in a browser yourorg.salesforce.com/one/one.app Use Salesforce1 mobile in your browser If you don‟t have a mobile device - Can be useful for rapid testing Note: this does not currently work in Firefox or Windows 8 browsers. Google Chrome is the recommended browser.
  • 7. Introducing Salesforce1 Mobile App Drag and drop UI customization Notifications Publisher Actions You Saleslforce Apps Recently searched for Objects Chatter
  • 8. Mobile Navigation (aka Left Nav) Mobile Administration  Mobile Navigation
  • 9. Page and Compact Layouts SObject  Page Layout SObject  Compact Layout
  • 10. List Views Sobject Tab  New List View Tapping an object in the Left Nav displays your List Views and your Recent records Also shows any custom list views you created
  • 11. Expanded Lookup Parent Sobject  Compact Layout Child SObject  Page Layout  Expanded Lookup Show additional info for Parent records
  • 12. Built-in Map Integration for Accounts & Contacts Account  record  populate Billing Address or Shipping Address fields Map icon will automatically display at the top of the detail page.
  • 13. Publisher Actions Global: Create  Global Actions Object Specific: SObject  Buttons, Links & Actions  New Action Page Layouts control which actions show in what order
  • 14. Visualforce – Mobile Cards Mobile Cards - Visualforce Pages on Record Detail
  • 15. Visualforce – Publisher Actions Visualforce Pages as Publisher Actions (VF page extends Standard Controller for Object Specific Publisher Actions) JavaScript Pub-Sub library available to interact with the publisher publisher.setValidForSubmit publisher.post publisher.close
  • 16. Visualforce in Salesforce1  <apex:page docType="html-5.0" …>  „Available for Salesforce Mobile apps‟ flag enabled  Developers are responsible for making the VF page „mobile ready‟ – Use a Responsive Design framework like Bootstrap or Mobile Design templates – Leverage touch and swipe events where appropriate  Use JavaScript Remoting/VF Remote Objects for better performance  Use HTML5 for device features like Geolocation and Camera access TODO: URL for Salesforce Mobile Gallery / Mobile Packs
  • 17. Visualforce – Left Nav Visualforce Pages in Left Nav JavaScript navigation library available sforce.one.navigateToSObject etc.
  • 18. Visualforce – Custom Publisher Action Visualforce Pages as Custom Publisher Actions Standard Controller JavaScript publisher library available Sfdc.canvas.publisher.publish etc
  • 19. Visualforce – Formula Field Link Visualforce Pages as Formula Field Links
  • 20. Salesforce 1 App Design Suggested approaches for configuring and customising apps for all devices
  • 21. Book: Salesforce 1 Developer Guide developer.salesforce.com -- search for “developer guide” Note: This book contains advice on the design of your Salesforce apps across all devices (web, tabliet, phone, etc)
  • 24. Heroku1 Connect Connecting customer facing apps with your Salesforce Org
  • 25. Building Customer Facing Apps on Salesforce1 This app runs on Heroku and select data is synchronized between the Heroku database and an associated Salesforce Org
  • 26. Consumer Application with Heroku Connect Case CampaignProduct Contact Interactio n CampaignProduct Contact Interactio n Marketing Manager Customer Heroku Connect REST
  • 28. Summary: Salesforce1 App and Platform  Fast non-programmatic mobile app development  Many hooks available to the developer to leverage  HTML5/JS/CSS supported Visualforce Development  HTTP standards based services integration  Great for internal employee facing apps
  • 29. Resources Salesforce1 Platform Use Cases: bit.ly/s1mobile Salesforce1 developer resources: developer.salesforce.com Salesforce1 Mobile App Workshop: http://forceworkbooks.herokuapp.com/s1mobile/

Notas do Editor

  1. This is salesforce1. Salesforce1 is comprised of all the applications that run on top of Salesforce1 Platform Services, and Salesforce1 Platform APIs and served up using the Salesforce1 Mobile App. The consolidation of the platform services combined with their APIs make up the Salesforce1 Platform. We have taken this route so that we can enable you, the developer, to create a multitude of mobile applications easily, reliably and with massive flexibility.We are here to talk about driving a mobile app revolution in the enterprise.
  2. Positioning Salesforce1 mobile with respect to bespoke and native mobile development. Salesforce1 mobile app delivers the most value for employee facing (internal company) applications, requiring little or no coding.
  3. “Everything” except for:Rich text fields – these could be pulled in via visualforce pagesVisualforce pages that have not been set to show up in mobile
  4. Download the Salesforce1 mobile app from you devices app store is probably the easiest way to get it.
  5. If you don’t have a mobile device handy you can still test out the Salesforce1 mobile app by using your desktop browser.We have found some issues with Firefox that prevent the app from running. Also found some issues with any browsers on Window 8.
  6. A quick overview of the Salesforce1 mobile app – there is a little bit of terminology to learn.The next few slides will drill into each of these in a little more detail
  7. By creating our custom tab we were able to have it show up in our left nav!Create a new App in force.com setup and show it appear in the app
  8. We also create a compact layout which is automatically used when the record is accessed from salesforce1! But there is a lot more we can do, even still without coding.
  9. Let’s review the other parts of the salesforce1 app that we interacted with.You are going to see 5 different apps today, and I don’t expect you to remember every click. You can dig into these features in Setup and the documentation when you get started building your own app.First is List Views. Main point here is that they are the same as the ones your user has access to in the desktop application, including custom List Views they add.
  10. Next is the Expanded Lookup. In the Page Layout Editor, there is a new category called Expanded Lookups, and you drag the one you want into the Mobile Card section. It will only display in Salesf orce1 Mobile, not on the Desktop app.The fields for the Expanded Lookup are defined by the Primary Compact Layout definition for the object in the lookup. So, in our case that was the Contact object. This is important because the Compact Layout also controls the fields at the top of the detail page in Salesforce1 Mobile, and you can only have 4 fields, so choose carefully.
  11. One great trick is the built-in map integration for Account &amp; Contact records. Note this is ONLY on Accounts and Contacts, not on custom objects, but it is pretty cool.
  12. This last feature is the secret sauce of Salesforce1 Mobile success in your company. The thing is, like any sauce, you want to use it wisely. Not enough quick actions, Salesforce1 feels cumbersome, too many, users get overwhelmed. This is the area you want to really focus on when you are gathering requirements from your users – what are the 3-4 things they are ALWAYS doing on the road. Define those as Publisher Actions, setting Predefined Values whenever possible to save even more time, and you will be a hero.
  13. A couple of things that you should do to make your Visualforce pages work well in the salesforce1 app. Always use the doctype attribute on your page tag. This provides access to the most current features of HTML from your javascript code.There is a check box on the metadata detail page for your Visualforce pages that needs to be checked. If for some reason your page is not showing, double check that you have made it available for salesforce mobile apps.You need to style your pages appropriately for the device you are targeting. Responsive design CSS and JS are great ways to target multiple devices with one code base.
  14. Just to recap, we used the left nav bar to navigate to the issues list, and the issue detail page used the sforce.one library to navigate to a linked case, providing that seamless integration.
  15. This highlights the features we used in this app.Not sure if we’re planning to use this throughout the deck, so this is hidden.
  16. Anothergreat non-code trick to use to amaze your friends is the new Twitter component for Social Contacts in Spring ’14. Follow these steps to set it up and you’re users will have easy access to their Contacts social feed right from Salesforce1 Mobile.
  17. Here is an app that leverages a common feature of a lot of mobile apps, the ability to check in to a location. In this case, we are going to enable checking in when have arrived at an account for some business. Because this app is targeted at a field sales person, we have also added the ability to get driving directions.[Demo the app]To build this kind of app, we need to use a combination of declarative and programmatic platform features. First, let’s take a look at the directions part of the app. We have used a VF page and can easily leverage a mapping API to provide the users current location coordinates from her device and the coordinates of the account to request proper directions from the mapping provider.There are a couple of things I’d like to point out about this visualforce page. First, it uses a standard controller, in this case the account standard controller. This is important for providing the context that this page will run in. When designating a standard controller, you are essentially specifying that this page is appropriate for including on an Account standard layout.The rest of the page is really almost copy and paste from a sample for the Google directions API. We include a reference to the directions javascript library. We are leveraging HTML5’s geolocation feature to obtain the users current location, and then setting a destination based on the account object made available from the standard controller.Once we have this visualforce page ready to go we need to integrate into the Account details standard page layout. For salesforce1 we can do this using a mobile card. Mobile cards are only displayed from within the salesforce1 mobile app. Let’s go ahead and edit the page layout. Now, scrolling down we can find this section called “Mobile Cards”. Now, because we indicated the Account standard controller on our page, it shows up here in the group of available Visualforce pages. We can now just drag that page to the mobile card section and drop it in place and save our layout. That’s all it takes. When the detail loads, our page is passed the appropriate account object and it all just works.Now to the check in functionality. This is slightly different from the directions in that the context for this feature should be global instead of the context of a single record, like an account. First, let’s take a look at the page. In this case I have a custom controller to provide access to the Chatter API. This page is also using knockout.js to control the flow of the page. You can, of course, use any Javascript library or framework that you like. This page also is a good example of using our Mobile Template library for rapid salesforce1 app development. Finally, we are referencing our publisher.js library that provides key functionality for interacting with the salesforce1 app container.Once an account has been selected, we execute the code that publishes a notification that the submit button can now be activated. The salesforce1 app itself is subscribed to the “setValidForSubmit” notification and will do all the work of enabling the submit button for us. On the other side of the pub/sub technique, we are listening for a particular action also. In this case we are subscribed to any “publisher.post” notifications. When we receive this we can make a remote action call to our custom controller to create the check in task. Finally, when that call returns, we ask salesforce1 to close our check in action.Making the check in action available to salesforce1 is very straight forward. First, we create the global action. Just select new and Visualforce action type. With the action created we can now add it to the Global Layout for the publisher. Editing the global layout gives me access to every global action in my org and allows me to add and remove and re-order all the actions that are in the publisher. All publisher actions show up as quick actions in salesforce1.This kind of app is really impactful and easy to create. Let’s review our integration points within the salesforce1 mobile app for this kind of app.
  18. Imagine you&apos;re working on a product that has some or all of its code in a GitHub repository. This app integrates GitHub Issues with Cases in Salesforce. As a user, I can browse open issues assigned to me, link them to cases, and see the link on the Case record. The app does OAuth against GitHub, obtaining an access token to call the GitHub REST API and retrieve issues and comments.Preparation:You will need a GitHub account. If you do not already have one, you can sign up at https://github.com . You will also need to create a repository on GitHub. If you already have a repository with issues, then great - use that; otherwise, go to https://github.com/new and create a new repository. Create some issues in the new repository and assign them to yourself (select them in the issues screen for your repository, click &apos;assignee&apos; and select yourself).You will also need to create a GitHub app specific to your org. Go to https://github.com/settings/applications , click &apos;Register new application&apos;, and enter:Application Name: Issues in GithubHomepage URL: https://github.com/metadaddy-sfdc/IssuesInGitHubApplication description: Link GitHub issues to Cases in Salesforce1Authorization callback URL: https://instance.salesforce.com/apex/github_callback_htmlIMPORTANT: Replace &apos;instance&apos; as appropriate for your DE org - e.g. na15.Keep the GitHub app window around - you&apos;ll need to copy Client ID and Client Secret.To install the app into a DE org, go to the GitHub repository for this project - https://github.com/metadaddy-sfdc/IssuesInGitHub - and click &apos;Install Unmanaged Packed&apos; from there.You will need to add the app&apos;s tab to the left nav menu - go to Setup | Mobile Administration | Mobile Navigation, move &apos;Issues in GitHub&apos; to the &apos;Selected&apos; list, click &apos;Up&apos; to move it just after &apos;Groups&apos;, and click &apos;Save&apos;.Now add the GitHub link and publisher action to the Case Page Layout. Go to Setup | Customize | Cases | Case Layouts, and click &apos;Edit&apos; next to &apos;Case Layout&apos;. Drag the &apos;GitHub Link&apos; field and drop it under &apos;Case Number&apos; in the &apos;Case Information&apos; section. Click &apos;Actions&apos; in the palette, drag &apos;Link to GitHub Issue&apos; and drop it in the &apos;Publisher Actions&apos; between &apos;Post&apos; and &apos;Log a Call&apos;. Save the page layout.You will also need to create a Custom Setting record with the app&apos;s Github credentials. Go to Setup | Develop | Custom Settings, click &apos;Manage&apos; next to &apos;GitHub App Settings&apos; and create a new record with:Name: Github AppClient Id: copy from GitHub app windowClient Secret: copy from GitHub app windowSource code is in the GitHub repository at https://github.com/metadaddy-sfdc/IssuesInGitHubIn your DE org, pin &apos;Cases&apos; to the top of the Search results - in the regular browser interface to your DE org, search for any text you like, hover over the &apos;Cases&apos; entry in the &apos;Records&apos; list on the left, and click the pin that appears. Cases will move to the top of the Records list. This just makes it easier to find cases during the demo.The app writes a GitHub access token to your user record. Netween demos, you will need to delete the access token to be able to show authorization with GitHub. Go to your User record in your DE org (Setup | Manage Users | Users | click your user&apos;s name), click &apos;Edit&apos;, then scroll down to the &apos;Additional Information&apos; section and delete the GitHubAccessToken value. Hit &apos;Save&apos;.Show the app on a real phone if you can (using AirServer or Reflector to show your phone&apos;s screen on your laptop). Next best is to use the iOS simulator. If you have to use your laptop browser, use Chrome and enable mobile emulation (https://developers.google.com/chrome-developer-tools/docs/mobile-emulation) - this will correctly generate the touch events that Salesforce1 is expecting.Run through the demo at least a couple of times, and leave some issues linked to cases.Running through the app:In the Salesforce1 Mobile App, open the left nav menu, and select &apos;Issues in GitHub&apos;. If you deleted your GitHub access token (see &apos;Preparation&apos;, above), you should see a login page with the GitHub logo. Touch the logo, and you will be prompted to log in to GitHub, and authorize the app to access your data. Don&apos;t worry if it skips the login page and goes straight to authorization - if you&apos;ve been round this loop, the browser has your GitHub cookie - it&apos;s not important for the demo flow. Also, if you don&apos;t see the GitHub authorization screen within a few seconds, just close the window and touch the GitHub logo again - occasionally this page seems to glitch.Once you&apos;ve authorized the app, you should see a list of issues from GitHub. This JavaScript single-page app, running on a Visualforce page in Salesforce1, is retrieving this data directly from GitHub, without hitting the Apex controller.Note that it will only show open issues assigned to you, so if you see an empty list of issues, go create some in GitHub and assign them to yourself (see &apos;Preparation&apos;, above). You can touch an issue to drill down and see more detail, including any comments posted to the issue, and any cases that the issue is linked to. You can touch a linked case to go to its record detail page - seamless integration between the app and Salesforce1.Now let&apos;s link an issue to a case. Open the left nav menu, and select &apos;Cases&apos; (it should be visible at the top of the &apos;Recent&apos; sub menu - if not, you&apos;ll need to pin it in the Search results - see &apos;Preparation&apos;, above). Select a Case, and open the publisher (plus sign on bottom right of screen). Select &apos;Link to GitHub Issue&apos; and you should see a list of issues. This time, touching an issue will select it for linking to the case. A link icon will appear to indicate the selected issue. You can play around in this screen a little - the icon will move to the last touched issue, and touching the linked issue will deselect it.When you&apos;ve selected an issue, touch &apos;Submit&apos; at the top of the screen. You&apos;ll be taken back to the Case record, which will refresh. Swipe left to see the Case detail, and scroll down to the &apos;GitHub Link&apos; field. Touch &apos;View GitHub Issue&apos; and the detail page for the linked issue should appear. Notice that the linked case is listed on the issue detail. Note that, currently, the &apos;spinner&apos; stays active, even though the detail page has loaded. I&apos;m investigating why this is the case - it might be fixed by the time you run through this.Exploring the code:Due to time constraints, we&apos;ll highlight the important integration points, but the code is on GitHub for anyone to dig deeper.Start on the github_app_htmlVisualforce Page. Point out the &lt;apex:page&gt; attributes - we&apos;re using showHeader=&quot;false&quot;, sidebar=&quot;false&quot;, standardStylesheets=&quot;false&quot; and applyHtmlTag=&quot;false&quot; to get complete control over the page.The app uses AngularJS and the Ionic Framework - the CSS and JavaScript for this is loaded from static resources. AngularJS is a client-side MVC framework - it allows you to divide up your JavaScript app into modules. You can see the includes for the modules in github_app_html under the &quot;&lt;!-- the app&apos;s js --&gt;&quot; comment. You can also see where the app gets the GitHub API access token from the Visualforce Page&apos;s Apex controller, in the {!accessToken} merge field.Open that Apex controller - the GithubController class. The Apex controller reads the access token from the User record in its constructor. Notice in the &apos;onLoad&apos; action method, if there is no access token, the onLoad method returns a redirect to the login page. The Visualforce Page runs this action method before it renders the page - this is what activates the GitHubOAuth login. We won&apos;t go down the OAuth rabbit hole here, but the code is all there if anyone wants to take a look.Back on the github_app_htmlVisualforce Page, scroll down to the bottom - the &lt;ion-nav-view&gt; element is where the app content will be rendered. This app comprises a number of views that can be dynamically loaded from templates.Open the github_app_js static resource - this is where the app is configured. Scroll down and you&apos;ll see a set of &apos;states&apos; that associate a url with a template and controller, all broken down into their own static resource files. You can see the states for the issue list, issue detail, and link views.Open the github_issues_html static resource. Notice the &lt;ion-list&gt;, containing an &lt;ion-item&gt;, with an &apos;ng-repeat&apos; attribute. This is very similar to a Visualforce &lt;apex:repeat&gt; - we&apos;re iterating through a list of issues, showing some fields from each one. Notice the link - it has a # prefix - we don&apos;t want to go to a different page to see issue detail; we want to show a different view, and the # is followed by a path, containing an encoded issue url. When the user touches the list item, that link will be followed, loading the issue detail view.Open the github_controllers_js static resource. The first controller, IssuesCtrl, simply loads all issues from the Issues service. In AngularJS, controllers simply marshall data into the template - services retrieve data.Open the github_services_js static resource. The &apos;all&apos; function retrieves a list of issues from GitHub. Skip past the error handling to see where it caches the issue list, and builds a map so that issues are easily accessible to the app from their URL without going back to the GitHub API. This function uses &apos;promises&apos; to simplify asynchronous programming. The function returns a promise that the caller can use to get the data later, without building a stack of callbacks.Open the github_link_js static resource. This is the publisher action for linking an issue to a case. Since it runs in the context of a Case record, it uses the Case standard controller, but we define GithubController as an extension. Scroll down and you&apos;ll see that the HTML is almost identical to github_app_html, except that we pull data from the Apex controller (the {!case.Id}, {!case.CaseNumber} and {!case.GitHub_Issue__c} merge fields) and add it to the AngularJS root scope so that it is accessible to the AngularJS controllers.A little lower down, you can see the integration with Salesforce1. We use the publisher library, activating the &apos;Submit&apos; button in the &apos;publisher.showPanel&apos; handler, and, when the user hits submit, we call the attachIssue method on GithubController to attach that issue to the case. Go to the GithubController class and scroll down to the attachIssue method - it&apos;s really very simple.Now look at the &apos;Buttons, Links &amp; Actions&apos; page for Case. You&apos;ll see the publisher action there. Click its &apos;Edit&apos; link and you&apos;ll see the Visualforce page there. Now go to the Case &apos;Page Layout&apos; and point out the action in the list of publisher actions.There are quite a few moving parts here, but the end result is a very seamless user experience. With this app in Salesforce1, the user can move between issues from GitHub and Cases from Salesforce in a very natural way.
  19. Our custom publisher action allowed a context-specific operation – linking an issue to a particular case – here we used the publisher library to manage the action page lifetime
  20. And, though it’s not specifically a feature of Salesforce1, adding a formula field to the Case object allowed us to navigate straight to its linked issue – another seamless integration.
  21. A selection of design considerations and approaches that Salesforce recommend when building apps that will be used across all devices (web, tablet, phone, etc).
  22. Focused on development specifically for the Salesforce1 Mobile App
  23. A developer theatre, library, quick-starts and mini-hacksPeter Chittum &amp; John Stevenson will be there. Possibility of talks from community members?
  24. Developer library, Quick-starts and help from local developers as experts.
  25. Let’s say you work for a large consumer product company, and you want to extend your marketing campaigns to include a loyalty program. Your company has millions of customers and you want to create an app that can push offers and products to them as a reward for being a great consumer of your product.Let’s take a look at an app that does exactly that.Access the following URL: http://devweek.herokuapp.com[Tap Sign Up, then tap the Back button without signing up. Tap Sign In, and “Login with Facebook”]As a customer of this company, I can sign up for the loyalty program within the app and login, or I can just login with Facebook. When I sign up or login with Facebook, a Contact is automatically created in Salesforce.[Wait for Facebook login to complete]On the first screen, I can see my profile including my status (Gold, Silver, Bronze) and my point balance. Some of this information, including my profile picture was pulled directly from Facebook.[Click ‘Edit’ (upper right)]- I can change my personal information including my profile picture, and my preferences. When I click Save (upper right button), the Contact object is updated. [Click the Menu button (left side of the Header)]When I click the menu button, I can see the different options available in the app[Select Special Offers]I can select ‘Special Offers’ to see a list of offers that the company pushes to its loyal customers. These offers come from the Campaign object in Salesforce.[Optional: if you have access to the org, show the corresponding campaigns in Salesforce][Select one of the offers]- I can select an item in that list to see the details of a specific offer. In the Offer Details screen, I can:share the offer on social media (only Facebook is implemented at this time) redeem the offer, which will show a QR code that can be scanned at the cash registraror save the Offer to my Wallet to make it easy to access it at a later time . Some of these activities like ‘Share on Facebook’, or ‘Save to Wallet’ are tracked in the Interaction custom object in Salesforce[Optional: if you have access to the org, show the Intecactions in Salesforce][Go back to the menu and select Wallet]Let’s go back to the menu and select ‘Wallet’ to see the offer I just saved.[Go back to the menu and select Products]I can also select Products to see a list of new Products the company wants to share with me. This list comes from the Product2 object in Salesforce.[Optional: if you have access to the org, show the corresponding products in Salesforce][Select a product]Again, I can select a Product in the list to see the Product Details. In the Product Details screen, I can share the Product on social media or add the Product to my wish list [The Add to Wish List button is not implemented at this time][Go back to the menu and select Store Locator]The store locator option shows my position on a map, and a list of stores near me. Clicking a store in the list will center the map on the store location.[You can also tap the location pin (upper right corner) to go back to your location][Go back to the menu and select Help]The Help option lets me provide feedback or ask a question. When I click Submit, a case is automatically created in Salesforce.
  26. This app leverages standard technologies and practices for building mobile web apps. Here is the architecture for building this kind of customer engagement app.The Marketing organization manages the content of the application (Campaigns and Products) in Salesforce through the browser or the Salesforce1 app. As I said before, Users of the app become Contacts in Salesforce.The consumer app runs in Heroku. It’s built in JavaScript on Node.js, but it could have been written in any other language supported by Heroku: Java, Ruby, or PHP.The Node application accesses the Salesforce data in a Postgres database running in Heroku. “Heroku Connect” is used to synchronize the data between your Salesforce org and the Postgres database. In this app, “Heroku Connect” syncs Product, Campaign, Contact and Interaction (a custom object that keeps track of the user interactions in the app: Facebook Likes, Offers saved to wallet, Offers redeemed, etc.)“Heroku Connect” provides bi-directional synchroniztion:- Products and campaigns are copied from Salesforce to Postgres- App Users are created in Heroku and pushed as contacts to Salesforce. Interactions are also pushed from Heroku to Salesforce.Heroku Connect is a great solution to access Salesforce data from a custom app. One thing to be aware of is that the data sync process is asynchronous: the sync process kicks in every 10 minutes. That is appropriate for many types of data. However, if you need immediate “real time” data, you can still use API calls. For example in this application, when a the user fills in the Help form, a Case is created in Salesforce using an API call through nforce. This may be justified by a contractual clause that guarantees a response with a certain amount of time.The client app accesses the data in Heroku using a REST API defined in the Node.js app. These are API calls to your custom app, in other words they don’t count towards your API limits.The client of the application is built with AngularJS and the Ionic framework.So in summary, we built an entirely custom application, and the Salesforce1 platform made it easy to implement the back-end and to deeply integrate with the Salesforce data and processes that are managed by the Marketing organization using the Salesforce1 app or Salesforce in the browser.
  27. Backup slide: Use this slide if you want to go deeper on Heroku Connect and don’t have access to it to demonstrate live.Heroku Connect is very simple to set up:You simply map Salesforce objects to Postgres database tables. For each object, you can specify which fields to synchronize. That’s it! Heroku Connect takes care of keeping the data in sync.
  28. Re-write slide
  29. A developer theatre, library, quick-starts and mini-hacksPeter Chittum &amp; John Stevenson will be there. Possibility of talks from community members?
  30. Developer library, Quick-starts and help from local developers as experts.