Skip to content
Mobile SDK Development Guide (mobile-sdk)
- Logging and Analytics
- Android Logging Framework
- iOS Compiler-Level Logging
- Receiving Logs with LogReceiver
- Instrumentation and Event Collection
- Android Application Structure
- Developing a Native Android App
- Native Android Development
- MainActivity Class
- ClientManager Class
- Encryptor class
- ForcePlugin Class
- LoginActivity Class
- SalesforceActivity, SalesforceListActivity, and SalesforceExpandableListActivity Classes
- Other UI Classes
- Overview of Native Classes
- RestClient Class
- RestRequest Class
- SalesforceSDKManager Class
- UI Classes
- Utility Classes
- OkHttp: The Underlying Network Library
- Deferring Login in Native Android Apps
- Native API Packages
- Using a Custom Template to Create Apps
- Creating an Android Project with Forcedroid
- Using Passcodes
- Android Project Files
- Setting Up Sample Projects in Android Studio
- Android Native Quick Start
- Native Android Requirements
- Resource Handling
- Batch and Composite Requests
- FileRequests Class
- Android Sample Applications
- Android Template App: Deep Dive
- MainApplication Class
- Template Manifest
- Unauthenticated REST Requests
- Using Maven to Update Mobile SDK Libraries in Android Apps
- Using REST APIs
- Using Advanced Authentication
- Configuring Advanced Authentication in Android Apps
- Upgrading Android Single Sign-On Apps to Google Login Requirements
- Customizing the Android Login Screen Programmatically
- Login Screen Customization
- Identity Providers: Architecture, Flow, and Connected App Requirements
- Implementation Details and Options
- Implementing Mobile Identity Provider Apps Without Mobile SDK
- Configuring an Android App as an Identity Provider
- Android Architecture and Flow
- Configuring an Android App as an Identity Provider Client
- Configuring an iOS App as an Identity Provider Client
- Configuring an iOS App as an Identity Provider
- Identity Provider Apps
- Configuring Advanced Authentication in iOS Apps
- Untitled
- Using OpenID Tokens to Access External Services
- Secure Key Storage in Android
- Secure Key Storage in iOS
- Biometric Authentication
- Use Your Branded Login Page
- Configure Your Experience Cloud Site
- Configure Your Facebook App
- Create a Facebook App
- Customize the Auth. Provider Apex Class
- Brand Your Experience Cloud Site
- Customize Login, Self-Registration, and Password Management for Your Experience Cloud Site
- Define a Salesforce Auth. Provider
- Example: Configure an Experience Cloud Site For Facebook Authentication
- Using External Authentication With Experience Cloud Sites
- Using Experience Cloud Sites With Mobile SDK Apps
- Configure the Login Endpoint
- Experience Cloud Sites and Mobile SDK Apps
- Set Up a Permission Set
- Set Up an API-Enabled Profile
- Add the API User Profile To Your Experience Cloud Site
- Create an Experience Cloud Site
- Create a New Contact and User
- Add Permissions to a Profile
- Test Your New Experience Cloud Site Login
- Example: Configure an Experience Cloud Site For Mobile SDK App Access
- Grant API Access to Users
- Creating a Connected App
- Create a Connected App
- About PIN Security
- External Client Apps and Connected Apps
- Deprecations and Removed APIs
- Sign Up for Salesforce Platform
- Running the ContactExplorer Hybrid Sample
- Hybrid Apps Quick Start
- Development Prerequisites for iOS and Android
- Create an External Client App
- About Backbone Technology
- Offline Caching
- Conflict Detection
- Mini-Tutorial: Conflict Detection
- Creating Native Apps with Mobile Sync
- Using Apex REST Resources
- Force.RemoteObjectCollection Class
- Accessing Custom API Endpoints
- Force.RemoteObject Class
- Using the Sync Manager with Global SmartStore
- Using Mobile Sync in Hybrid and React Native Apps
- Implementing Offline Caching
- Using Mobile Sync to Access Salesforce Objects
- Which Hybrid Version of Mobile Sync Should I Use?
- Syncing Metadata and Layouts on Android
- Syncing Metadata and Layouts on iOS
- Model Collections
- Models
- Using Sync Names
- Adding Mobile Sync to Existing Android Apps
- Adding Mobile Sync to Existing iOS Apps
- Using the Batch Sync Up Target
- Using Custom Sync Down Targets
- Using Custom Sync Up Targets
- Defining a Custom Sync Down Target
- Invoking the Sync Down Method with a Custom Target
- Sample Apps
- Incremental Syncs with reSync
- Syncing Metadata and Layouts
- Syncing Data
- Syncing Down
- Using the Sync Manager
- Syncing Up by External ID
- Syncing Up
- Defining a Custom Sync Up Target
- Invoking the Sync Up Method with a Custom Target
- Using Mobile Sync in Native Apps
- Mobile Sync Plugin Methods
- Using the Refresh Sync Down Target
- Using Standard Targets
- Stopping and Restarting Sync Operations
- Using the Briefcase Sync Down Target
- Using the MRU Sync Down Target
- Using the SOQL Sync Down Target
- Using the SOSL Sync Down Target
- Handling “Ghost” Records After Sync Down Operations
- Defining Sync Names and Sync Configuration Files
- Syncing Related Records
- About Sync Statuses
- About Sync Task Errors
- Using the sObject Collection Sync Up Target
- About Sync Targets
- Edit the Application HTML File
- Tutorial: Creating a Hybrid Mobile Sync Application
- Add the Search Result List Item View
- Create a Mobile Sync Model and a Collection
- Define a Router
- Add the Search Result List View
- Add the Search View
- Create a Template Project
- Create View Templates
- Add the User View
- Models and Model Collections
- Using Mobile Sync in JavaScript
- Using the Mobile Sync Plugin
- Using StoreCache For Offline Caching
- Managing the Request Queue
- Using Files in Android Apps
- Downloading Files and Managing Sharing
- Encryption and Caching
- Using Files in Hybrid Apps
- Files and Networking
- Managing Requests
- Using Files in iOS Native Apps
- Uploading Files
- Updating Mobile SDK Apps (5.0 and Later)
- Getting Started With Mobile SDK for iOS and Android
- What's New in Mobile SDK 13.2
- What Was New in Recent Releases
- Multi-Device Strategy
- Getting Started
- HTML5 and Hybrid Development
- Accessing Salesforce Data: Controllers vs. APIs
- HTML5 Development Requirements
- Using HTML5 and JavaScript
- Delivering HTML5 Content With Visualforce
- About Hybrid Development
- Building Hybrid Apps With Cordova
- Debugging a Hybrid App On an Android Device
- Debugging Hybrid Apps On a Mobile Device
- Debug a Hybrid App Running on an iOS Device
- Defer Login
- Developing Hybrid Remote Apps
- Example: Serving the Appropriate Javascript Libraries
- Creating Hybrid Apps
- Create Hybrid Apps
- JavaScript Files for Hybrid Apps
- Managing Sessions in Hybrid Apps
- Using Forcehybrid
- Build and Run Your Hybrid App on Android
- Build and Run Your Hybrid App On iOS
- Build Hybrid Sample Apps
- Hybrid Sample Apps
- Controlling the Status Bar in iOS 7 Hybrid Apps
- Removing UIWebView from iOS Hybrid Apps
- Versioning and JavaScript Library Compatibility
- Android Preparation
- Mobile SDK GitHub Repositories
- Installing Mobile SDK
- iOS Preparation
- Install Node.js, npm, and Git Command Line
- Mobile SDK npm Packages
- Uninstalling Mobile SDK npm Packages
- About Native, HTML, and Hybrid Development
- Developer Edition or Sandbox Environment?
- Authentication, Security, and Identity in Mobile Apps
- Enough Talk; I’m Ready
- Mobile SDK Release Notes
- Customize the Salesforce Mobile App, or Create a Custom App?
- Introduction to Salesforce Mobile SDK Development
- Using Carthage with Mobile SDK (Not Supported)
- Supporting Catalyst in Mobile SDK Apps
- Use CocoaPods with Mobile SDK
- Native iOS Development
- Supporting iPadOS in Mobile SDK Apps
- AppDelegate Class
- Overview of Application Flow
- Handling Authentication Errors
- Developing a Native iOS App
- About Login and Passcodes
- Using Salesforce REST APIs with Mobile SDK
- RootViewController Class
- SceneDelegate Class
- Native Swift Template
- iOS Native Template Apps
- Creating an iOS Project with Forceios
- Add Mobile SDK Libraries to Your Project
- Configure Your Project’s Build Settings
- Create an Xcode Swift Project
- Option 1: Import Mobile SDK Template Files
- Option 2: Add Mobile SDK Setup Code Manually
- Creating an iOS Swift Project Manually
- Using a Custom Template to Create Apps
- Refreshing Mobile SDK Pods
- Profiling with Signposts
- iOS Native Quick Start
- iOS Basic Requirements
- Batch and Composite Requests
- Creating REST Requests
- Handling REST Requests
- SFRestAPI (Blocks) Category
- SFRestAPI (Files) Category
- SFRestAPI (QueryBuilder) Category
- Mobile SDK REST Client Interface
- Handling REST Responses
- REST Request Class
- Supported REST Services
- Using REST Request Methods
- iOS Sample Applications
- Using Swift with Salesforce Mobile SDK
- Unauthenticated REST Requests
- Using iOS App Extensions with Mobile SDK
- Using Key-Value Stores for Secure Data Storage
- Migrate All Apps from 10.2 to 11.0
- Migrate All Apps from 11.0 to 11.1
- Migrate All Apps from 11.1 to 12.0.1
- Migrate All Apps from 12.0 to 12.1.1
- Migrate All Apps from 12.1 to 12.2
- Migrate All Apps from 12.2 to 13.0
- Migrate All Apps from 13.0 to 13.1
- Migrate All Apps from 13.1 to 13.2
- Migrating from Earlier Releases
- Migrating from the Previous Release
- About Multi-User Support
- AccountSwitcherActivity Class
- Android Native APIs
- UserAccount Class
- UserAccountManager Class
- Hybrid APIs
- Implementing Multi-User Support
- Multi-User Support in Mobile SDK
- iOS Native APIs
- SFUserAccount Class
- SFUserAccountManager Class
- UserSwitchReceiver Class
- Native Login for Experience Cloud
- Native Password Reset
- Native Passwordless Login
- Native User Registration
- Setting Custom Login Servers in iOS Apps
- Setting Custom Login Servers in Android Apps
- Refresh Token Revocation in Android Native Apps
- Customizing the iOS Login Screen Programmatically
- OAuth 2.0 Authentication Flow
- Using MDM with Salesforce Mobile SDK Apps
- Mobile SDK Login and Authentication Flow—Detailed Look
- Portal Authentication Using OAuth 2.0 and Salesforce Sites
- OAuth 2.0 Refresh Token Flow
- OAuth Terminology
- Revoking OAuth Tokens
- Scope Parameter Values
- OAuth 2.0 User-Agent Flow
- Using Identity URLs
- OAuth 2.0 Web Server Flow
- About SmartStore
- Creating and Accessing User-based Stores
- Alter a Soup with External Storage
- Adding SmartStore to Existing Android Apps
- Using Arrays in Index Paths
- Registering Soups with Configuration Files
- Validating Configuration Files
- Working with Query Results
- SmartStore Data Types
- Date Representation
- Register a Soup with External Storage
- Using External Storage for Large Soup Elements
- Full-Text Search Index Specs
- Full-Text Query Specs
- Full-Text Query Syntax
- Using Full-Text Search Queries
- Inserting, Updating, and Upserting Data
- Using Global SmartStore
- Testing with the SmartStore Inspector
- Using SmartStore to Securely Store Offline Data
- Offline Management
- Managing Soups
- Managing Stores
- Preparing Soups for Mobile Sync
- Using the Mock SmartStore
- Populating a Soup
- Retrieving Data from a Soup
- Removing Soup Elements
- Enabling SmartStore in Hybrid and Native Apps
- Smart SQL Queries
- SmartStore Soups
- Using SQLCipher with SmartStore
- Using SmartStore in Swift Apps
- Change Existing Index Specs on a Soup
- Clear a Soup
- Get the Database Size
- Reindex a Soup
- Remove a Soup
- Retrieve a Soup’s Index Specs
- Registering a Soup through Code
- Soup Specs
- SmartStore Stores
- About This Guide
- About Salesforce Mobile Apps
- Sending Feedback
- Introduction to Mobile Development
- Version
- Implement Actionable Notifications
- Code Modifications (Android)
- Configure a Connected App or External Client App for FCM (Android)
- Code Modifications (Hybrid)
- Push Notifications and Mobile SDK
- Code Modifications (iOS)
- Configure a Connected App or External Client App for APNS (iOS)
- Using Push Notifications in Android
- Using Push Notifications in Hybrid Apps
- Using Push Notifications in iOS
- About Push Notifications
- QR Code Login for Android
- Configure QR Code Login for iOS
- QR Code Login Prerequisites
- QR Code Login with Single Access UI Bridge API
- Upload Binary Content
- Using Mobile SDK Components in React Native Apps
- Defer Login
- React Native Development
- Creating a React Native Project with Forcereact
- Mobile SDK Native Modules for React Native Apps
- Mobile SDK Sample App Using React Native
- Using TypeScript in React Native Projects
- Supported Salesforce APIs
- Batch Request
- Briefcase Priming Records Response
- Briefcase Priming Records
- Collection Create
- Collection Delete
- Collection Response
- Collection Retrieve
- Collection Update
- Collection Upsert
- Composite Request
- Create
- Delete
- Describe Global
- Describe
- Metadata
- Notification Update
- Notification
- Notifications Status
- Notifications Update
- Notifications
- Object Layout
- Resources
- Retrieve
- Search Result Layout
- Search Scope and Order
- SOSL Search
- SObject Tree
- SOQL Query All
- SOQL Query
- User Info
- Update
- Upsert
- Versions
- Android Packages and Classes
- Android Resources
- Android Architecture
- Android Current Deprecations
- iOS Current Deprecations
- Android APIs Removed in Mobile SDK 13.0
- iOS APIs Removed in Mobile SDK 13.0
- Supported Versions of Tools and Components for Mobile SDK 13.1
- Files API Reference
- iOS Architecture
- Reference
- Refresh Token Migration
- Runtime Consumer Key
- SDK Manager Classes
- Sample Property List Configuration
- Android Sample Apps
- Hybrid Sample Apps (Source Only)
- Installing the Sample Apps
- Mobile SDK Sample Apps
- iOS Sample Apps
- React Native Sample Apps
- Account Editor Sample
- Mobile Sync Sample Apps
- REST Wrappers for SFAP APIs
- Authentication Provider SSO with Salesforce as the Relying Party
- Use the Experience Cloud URL Parameter
- Use the Scope URL Parameter
- Configure a Facebook Authentication Provider
- Configure an Authentication Provider Using OpenID Connect
- Configure a Salesforce Authentication Provider
- Token Revocation Events
- In-App Developer Support
- Mobile SDK Tools for Developers
- Dark Mode and Dark Theme Settings
- Configure WebSockets