function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
zshahzshah 

Using iOS mobile SDK with Force.com objects

Hi,
I've been through the Force.com introductory documents, familiarizing myself with the Force.com platform, and watched the MobileSDK webcast. But I had some basic high-level questions about how mobile apps run and interact with the Force.com platform, that weren't answered in the documentation that I've read so far.
 
Specifically:
 
- when you create an app on Force.com, that's usually for within the organization you belong to. So how do you make a "global" app that can be distributed to any salesforce customer, no matter which org they belong to? Ideally, it would be distributed through the App Store and/or AppExchange. From the tutorial, it seems like a mobile app is created under "Connected Apps", and not the regular "Apps" section. Does the Connected App default to acting as a "Global" app?
 
- Can you do everything with fields, objects etc when configuring a mobile app that you can while configuring a regular app? 
 
- I saw how Force.com apps can add custom objects and fields, and those can be used to drive the display from the salesforce.com portal. How does a mobile app that is "global" also install those custom objects and fields within your individual org's portal? For e.g. suppose I have a task-management mobile app, with a "Task" entity defined. If the user installs this app and logs in with his/her salesforce account, does the "Task" entity show up in their portal? 
 
- would a user of the app have to first install the app through App Exchange or some other mechanism before they can use the mobile app from the App Store? Or do they just login to the app the first time and the backend is setup for them?
 
- when a user connects to the salesforce database using the mobile app, are all the roles and user privileges also attached to that data? For e.g. it would be able to distinguish between a Manager logging in as opposed to a Worker logging in?
 
- how is this priced from an app-developer perspective? I haven't seen any pricing information for using Force.com to develop mobile apps.
 
Thanks.

 

joshbirkjoshbirk

Basically:

 

Yes, Connected Apps are defined in an org but are globally available.  The name / keys can be used be other administrators to allow users and profiles to have access to specific apps.

 

When it comes to the objects, fields, workflows, etc. - it is probably best to think in terms of a managed or unmanaged package.  Anything custom that you need to assume the user will have would need to be installed in their prior to using your mobile application.

 

There's no additional pricing for the Mobile SDK, so pricing would be up to the normal Salesforce licensing and whatever you want to charge via the AppExchange or the like.

zshahzshah

Thanks. I also got some more clarity by reading this article (if anyone else is interested): http://media.developerforce.com/workbooks/Mobile_SDK_Workbook_web.pdf

 

I had some other questions as well about the iOS SDK:

- is there any way to use the iOS SDK with Core Data, through NSIncrementalStore? Or would we need to come up with the mapping ourselves?

- do you do batching of updates? If I want to insert 100s of rows, ideally it would only send one update to the salesforce backend

- can we do fetching and inserting new data from a background thread?
- can we query the currently logged-in user for their properties, like 'role', user id, etc? I would at least want to know if the logged in user if an administrator or not. 

- I believe that I read somewhere that the data is cached locally as well, to allow offline access? How do you reconcile any conflicts that happen in this case? 

 

That should be good enough to get started in earnest.

Thanks.

 

 

zshahzshah

And one more:

- can you create new Users and assign them roles through the app?

joshbirkjoshbirk
  • You can technically access any iOS framework, but yes - mapping / accessing it may be up to your own devices.
  • Batch is not supported out of the vanilla REST API, but you may be able to accomplish what you need with a custom Apex REST point
  • I believe so, but to be completely honest have not tried.  You might also look at the blocks version of the API callouts.
  • You get the UserID as part of the OAuth response and can query additional information from that
  • You can use SmartStore natively in iOS - just make sure you add the appropriate libs.  You might check Tom Gersic's work on it: https://github.com/tomgersic/HazyPassword
  • You could probably most easily accomplish dynamic user creation via an Apex REST endpoint to handle the specific ins and outs