Salesforce Mobile Integration Services

Salesforce Integration with Mobile App You are developing a mobile app for a sales team that needs to sync leads, contacts, opportunities, and cases with Salesforce. The standard approach via Salesforce Mobile SDK adds 15+ MB to the app size and ties you to the SDK, which is not always convenient

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1734 services
Salesforce Mobile Integration Services
Medium
~1-2 weeks

Our competencies:

Frequently Asked Questions

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    598

Salesforce Integration with Mobile App

You are developing a mobile app for a sales team that needs to sync leads, contacts, opportunities, and cases with Salesforce. The standard approach via Salesforce Mobile SDK adds 15+ MB to the app size and ties you to the SDK, which is not always convenient. We offer flexible integration: from a lightweight REST client to full synchronization using Platform Events for real-time updates. Our team has 5+ years of experience in mobile development and CRM integration — we have delivered 20+ such turnkey projects.

Salesforce is a mature CRM platform with a well-documented REST API (developer.salesforce.com) and several mobile SDKs. Unlike 1C or Bitrix24, it has fewer unexpected API limitations, but more concepts to learn: Connected App, OAuth 2.0 flows, SOQL, SOSL, Apex REST, and Platform Events. We guarantee that the integration will comply with App Store Connect and Google Play Console guidelines.

How to Set Up Connected App and OAuth 2.0 for a Mobile App?

It all starts with creating a Connected App in Salesforce Setup: App Manager → New Connected App. Specify a Callback URL (the app's deeplink), enable OAuth scopes: api, refresh_token, offline_access.

The mobile app uses OAuth 2.0 Authorization Code Flow or JWT Bearer Flow for server-to-server communication. For user context, we use Authorization Code. We rely on proven libraries: AppAuth for Android and ASWebAuthenticationSession for iOS.

On Android with AppAuth:

val serviceConfig = AuthorizationServiceConfiguration( Uri.parse("https://login.salesforce.com/services/oauth2/authorize"), Uri.parse("https://login.salesforce.com/services/oauth2/token") ) val request = AuthorizationRequest.Builder( serviceConfig, clientId, ResponseTypeValues.CODE, Uri.parse("myapp://oauth/callback") ).setScope("api refresh_token offline_access").build() authService.performAuthorizationRequest(request, pendingIntent) 

After exchanging the code for a token, we save access_token, refresh_token, and instance_url — the base URL for all API calls (each Salesforce org has its own subdomain).

REST API and SOQL: How to Fetch Data Efficiently?

REST API is the main interface. Base URL: {instance_url}/services/data/v60.0/. Choose the API version based on the minimum Salesforce API version your client supports.

An SOQL (Salesforce Object Query Language) request:

GET /services/data/v60.0/query/? q=SELECT+Id,Name,Amount,StageName,CloseDate,Account.Name +FROM+Opportunity +WHERE+OwnerId='{userId}'+AND+IsClosed=false +ORDER+BY+CloseDate+ASC+LIMIT+50 

SOQL is SQL-like but with limitations: no JOIN in the usual sense; related objects via relationship queries (Account.Name). LIMIT max is 2000. For large datasets, use queryMore with the nextRecordsUrl from the response.

Creating a record: POST /services/data/v60.0/sobjects/Opportunity/ with JSON body. Updating: PATCH /services/data/v60.0/sobjects/Opportunity/{id}. Note: Salesforce uses PATCH, not PUT for updates.

Why Use Platform Events for Real-Time Updates?

Salesforce Platform Events is a publish/subscribe mechanism. The server publishes an event (OpportunityUpdated__e), clients receive it via CometD (Bayeux protocol, long polling).

More about CometD and implementation

On mobile — Salesforce Mobile SDK or a custom CometD implementation. The Mobile SDK includes ready SFRestAPI and StreamingAPI client, but the SDK is heavy — 15+ MB, which can be critical for some projects.

A lighter alternative: custom CometD client on OkHttp:

val cometdClient = BayeuxClient( "${instanceUrl}/cometd/60.0", LongPollingTransport.create(null, okHttpClient) ) cometdClient.handshake() cometdClient.getChannel("/event/OpportunityUpdated__e") .subscribe { message -> val payload = message.dataAsMap handleOpportunityUpdate(payload) } 

When an opportunity is updated in Salesforce → Platform Event → CometD → mobile client updates the screen. Latency: 1-3 seconds.

For one client, we reduced sync latency from 5 seconds to under 1 second using Platform Events and a custom CometD client, while keeping the APK size minimal.

Comparison of Integration Approaches

Criteria Salesforce Mobile SDK Custom Integration
OAuth Built-in AppAuth / custom
Offline SmartStore (SQLCipher) Room / Core Data
Push Built-in FCM/APNs directly
Size +15 MB Minimal
Flexibility Limited by SDK Full
OAuth Flow Use Case Supported on Mobile
Authorization Code User context, requires browser Yes (AppAuth, ASWebAuthenticationSession)
JWT Bearer Server-to-server (no user) No
Client Credentials Background sync Not recommended

How to Upload Files to Salesforce from a Mobile App?

Files in Salesforce are ContentDocument and ContentVersion. Uploading a file from a mobile app:

POST /services/data/v60.0/sobjects/ContentVersion/ Content-Type: multipart/form-data { "Title": "Customer photo", "PathOnClient": "photo.jpg", "FirstPublishLocationId": "{opportunityId}" } + binary data 

FirstPublishLocationId is the object to which the file is attached. Limitation: one file per request. For multiple files, use sequential requests or Salesforce Bulk API.

What Is Included in the Integration Work

  1. Analysis of current CRM structure and sync requirements.
  2. Configuration of Connected App and OAuth flows (Authorization Code / JWT Bearer).
  3. Development of REST client with caching and error handling.
  4. Integration of Platform Events for real-time notifications.
  5. Testing on sandbox and production Salesforce orgs.
  6. Documentation of API and deployment instructions.
  7. Post-launch support (1 month).

Timelines and Pricing

Basic integration (OAuth, SOQL queries, CRUD for Opportunity/Contact): 1-2 weeks. Platform Events, offline caching, push notifications: additional 1-2 weeks. Full-featured app with Salesforce Mobile SDK, SmartStore, and synchronization: 1.5-2 months. Cost is calculated individually. Send us a request for an estimate.