Building a Simple iOS App for Service Engineers using Zoho CRM

Building a Simple iOS App for Service Engineers using Zoho CRM

Not Every department in your company works the same, With the help of Zoho CRM SDKs not only you can create customised experiences for your CRM users but also build custom solutions on top of Zoho CRM to run your business.

Introducing SerWiz - A simple mobile app for service engineers, through which they could have a quick look at their assigned jobs, go on the field and get their job done, all of this using Zoho CRM as the backend/the source of data.




We'll be using the Zoho CRM iOS SDK to build our app for iPhone and iPad. We'll also be using Zoho CRM Portals to give restricted access to Service engineers.

Note: It's not necessary to know iOS Development to understand this post, although it helps if you know a bit of it. 

Setup

Building a mobile app on Zoho CRM has two parts - Configuring Zoho CRM and building the mobile app in a particular platform, in this case, the iOS Platform.

Setting up Zoho CRM
  • Create a Client Portal for Zoho CRM. This will allow Service Engineers to login to Zoho CRM and access the data that has been disclosed to them

  • Add Service Engineers either as Contacts or through a custom module and invite them to the client portal we've just created. For simplicity, We will add them as Contacts for now.

  • Create a Custom Module for collecting Service Requests from Customer Complaints. This module will contain details like the affected product, details of the service request etc. Here we also ensure to add both the Customer and the Service Engineer as lookup fields so that we can associate them to the incoming service request.

  • Setup permission for Portal users,i.e Service Engineers so that they can access the necessary records in Zoho CRM.

  • Note: It is important to enable the Service Requests module and filter them by "Service Engineers" so that the Service Engineers in the portal will be shown their relevant Service requests

Getting Started With Zoho CRM iOS SDK

Zoho CRM iOS SDK is the easiest way to connect your app with Zoho CRM. The SDK takes care of all the heavy lifting that an app needs like Authentication, API calls, Data Parsing etc so that you can focus on delivering the best mobile experience to your users.

Prerequisites

  • A Mac Running MacOS Mojave or later

  • Download and Install XCode 10.2 or higher

  • Download and install Cocoapods, A Package Manager for iOS development

  • NPM

  • (Optional) A actual iOS device to test your app

Adding the Zoho CRM SDK to your XCode Project

  • You can also follow the instructions over here to setup Zoho CRM SDK for your project.

Before starting to code the app, it is always a good idea to visualize the flow of the app. Here's a simple flowchart for the same



Adding Authentication and Login to your iOS App

Authentication is the most important part of any application, and without proper authentication, one cannot access the underlying service.Building your own Authentication service is a pain, and there are so many things that could go wrong. 

The Zoho CRM SDK takes care of Securing authentication using the iOS Keychain store to provide a highly secure login layer for your app.

Zoho CRM iOS SDK provides a very handy class ZVCRMLoginHandler for handling Login for Portal users. Note that this class is different from the ZCRMLoginHandler which lets Zoho CRM users login.

For more details on how this class is used, check out the AppDelegate.swift in the shared Project.

Fetching Records from Modules

Data is the core of any application and for our application, we are sourcing our data from Zoho CRM. The Zoho CRM iOS SDK provides native Swift APIs to connect with the back end and fetch the data required.

For our app, we need all the service requests for the existing user from the custom module "Service Requests". This is achieved by the following code

  1. ZCRMSDKUtil.getModule(moduleAPIName: "Service_Requests") { (result) in 
  2. // Work with the result here
  3. }

(For the detailed code, check ViewController.swift file)

Once we get all the records from Zoho CRM, we can populate the list view in our application with the necessary details from the CRM records. 

For example, we can access the name of the service request using this code

  1. let name = record.getData()["Name"] as! String

(For detailed code, check WorkOrderTableViewCell.swift file)

Create and attach a note to a Service Request

Once the service engineer has completed the job, we create a note with details like - total time taken to complete the job, customer sign, payment reference number etc and add to the Service Request. 

Creating and adding a note is very simple using the CRM SDK, this is the code snippet as follows

  1. let note = workOrder?.newNote(content: jobCompletionNoteString)
  2. self.workOrder?.addNote(note: note!, completion: { [weak self] (result) in 
  3. // Completion block for creating a note
  4. }

(For detailed code, check `CompletionViewController.swift`)

I've shared the link to source code so that you can have a look at the code, although I've redacted the Client ID and Client Secret because I've used my personal Zoho account. Check out the Readme.md file to know more about how the code is structured. 

With a blend of good user interface and the Zoho CRM SDK, you can create custom mobile solutions in no time. This particular project, although very minimal, took me a weekend (around ~8-10 hours) to code. A fully fleshed out app might take a couple weeks or more depending on the app's requirement. 

If you are interested to know more about creating custom mobile solutions, I'll be available in Zoholics Developers, from Oct 1 - Oct 3, representing Zoho Catalyst, would love to catch up with you to know more about what you are working on.

Source Code - https://zdrive.li/RYiswO


    Access your files securely from anywhere











                            Zoho Developer Community





                                                  • Desk Community Learning Series


                                                  • Digest


                                                  • Functions


                                                  • Meetups


                                                  • Kbase


                                                  • Resources


                                                  • Glossary


                                                  • Desk Marketplace


                                                  • MVP Corner


                                                  • Word of the Day


                                                  • Ask the Experts





                                                            Manage your brands on social media



                                                                  Zoho TeamInbox Resources



                                                                      Zoho CRM Plus Resources

                                                                        Zoho Books Resources


                                                                          Zoho Subscriptions Resources

                                                                            Zoho Projects Resources


                                                                              Zoho Sprints Resources


                                                                                Qntrl Resources


                                                                                  Zoho Creator Resources



                                                                                      Zoho CRM Resources

                                                                                      • CRM Community Learning Series

                                                                                        CRM Community Learning Series


                                                                                      • Kaizen

                                                                                        Kaizen

                                                                                      • Functions

                                                                                        Functions

                                                                                      • Meetups

                                                                                        Meetups

                                                                                      • Kbase

                                                                                        Kbase

                                                                                      • Resources

                                                                                        Resources

                                                                                      • Digest

                                                                                        Digest

                                                                                      • CRM Marketplace

                                                                                        CRM Marketplace

                                                                                      • MVP Corner

                                                                                        MVP Corner







                                                                                          Design. Discuss. Deliver.

                                                                                          Create visually engaging stories with Zoho Show.

                                                                                          Get Started Now


                                                                                            Zoho Show Resources


                                                                                              Zoho Writer Writer

                                                                                              Get Started. Write Away!

                                                                                              Writer is a powerful online word processor, designed for collaborative work.

                                                                                                Zoho CRM コンテンツ




                                                                                                  Nederlandse Hulpbronnen


                                                                                                      ご検討中の方




                                                                                                            • Recent Topics

                                                                                                            • Power of Automation :: Automated 'Delayed & Closed' Status Update Based on Due Date

                                                                                                              Hello Everyone, A custom function is a software code that can be used to automate a process and this allows you to automate a notification, call a webhook, or perform logic immediately after a workflow rule is triggered. This feature helps to automate
                                                                                                            • Lead Blueprint transition in custom list view

                                                                                                              Hi, Is It possible to insert the Blueprint transition label in a custom Canvas list view? I am using Lead module. I see the status, but it would be great if our users could execute the Blueprint right from the list view without having to enter the detailed
                                                                                                            • Range names in Zoho Sheet are BROKEN!

                                                                                                              Hi - you've pushed an update that has broken range names. A previously working spreadsheet now returns errors because the range names are not updating the values correctly. I've shared a video with the support desk to illustrate the problem. This spreadsheet
                                                                                                            • populate email address and name in zoho desk?

                                                                                                              Is it possible to populate the email address and name in the zoho desk widget? We only use it in the context of an authenticated user, so we already know the user's name and email. Thanks,
                                                                                                            • Are there default/pre-built dashboards in Zoho Desk?

                                                                                                              Hi, I am looking for some pre-built dashboard templates in Zoho Desk, similar to what we can find in CRM/Projects, etc Thank you
                                                                                                            • SAP S/4 HANA to CRM Integration - change the SAP Client ID

                                                                                                              Hi I am trying to push the business partners from SAP S/4 HANA to ZOHO CRM module. The SAP Client ID is 421 in my case....kindly let me know how do I specify the sap client because it's a dropdown with specific values as of now. Thanks Ravi Aswani
                                                                                                            • Staff rules

                                                                                                              Hi! Do you people know what are the default staff rules when a new booking is created? We have two staff members in my team (me as the admin, and my employee). As we share the same services, I'm wondering how Zoho will pick the staff for new apointments.
                                                                                                            • Adding branded signature to tickets reply

                                                                                                              Hi, i am unable to figure out how to add signatures with logo to tickets reply. please advice .
                                                                                                            • Zoho Marketing Automation 2.0 - Landing Page function not working

                                                                                                              Dear Zoho Team, I am working on implementing Zoho Marketing Automation 2.0, and am now looking into the section "Lead Generation". If I open the "Landing Pages" section, I immediately get an Error code: Error: internal error occurred. Can you help me
                                                                                                            • Zoho Mail Android app update: Manage folders

                                                                                                              Hello everyone! In the latest version(v2.9) of the Zoho Mail Android app update, we have brought in support for an option to manage folders. You can now create, edit, and delete folders from within the mobile app. You can also manage folders for the POP
                                                                                                            • How to share ticket numbers across different ticket types

                                                                                                              I'm running an event and have three different ticket types. Add on Event + Main Event - Early bird Main Event only - Early bird Add on Event only - Early bird And Standard class - shown but not available until early bird finishes Add on Event + Main Event
                                                                                                            • Adding Social Media Buttons to Basic Campaigns

                                                                                                              Hi, I'm quote new to using Zoho Campaigns and I can't work out how to add Social Media Buttons into my basic campaign? In MailChimp there's a button that brings the icons into your campaign for you. I've tried adding the social media icons as 'buttons' in Zoho but it's not looking great. Can anyone help? Thanks!
                                                                                                            • Hide Inactive Social Sign-In Providers from Login Screen

                                                                                                              Hello Zoho Team, We hope you are doing well. Currently, Zoho One allows admins to configure security policies and enable or disable Social Sign-In options for third-party providers such as Apple, Google, Microsoft, LinkedIn, Yahoo, Twitter, Facebook,
                                                                                                            • [Free Webinar] AI Agents in Zoho Creator - Creator Tech Connect

                                                                                                              Hello Everyone! We welcome you all to the upcoming free webinar on the Creator Tech Connect Series. The Creator Tech Connect series is a free monthly webinar that runs for around 45 minutes. It comprises technical sessions in which we delve deep into
                                                                                                            • Download All Attached Files

                                                                                                              It would be extremely useful to have "download-all" functionality for downloading files attached to a task, subtask, comment, forum post or hosted in the "Documents" section etc. We've instructed our users to zip multiple files prior to uploading, but of course they forget all the time. Having to download lots of files one-at-a-time off a comment or task wastes a lot of time.
                                                                                                            • unable to send message reason 554 5.1.8 Email outgoing blocked

                                                                                                              unable to send message reason 554 5.1.8 Email outgoing blocked
                                                                                                            • Ship via Carrier Not Working Since Commerce Update

                                                                                                              Since the recent update to the Commerce platform, I can no longer use the ship via carrier function. It will take me to the address screen and let me verify them but when I go to save and move tot he next screen it will not do anything. This is happening
                                                                                                            • automations: Can I execute a step on a specific date?

                                                                                                              I have created a form in Zoho forms, and created a contacts list. I have also begun setting up an automation with the intention of sending the form to the contact list on a specific date every month (via email) for the entire year (essentially sending
                                                                                                            • Zoho Expense - The ability to add detail to a Trip during booking

                                                                                                              As an admin, I would like the ability to add more detail to the approved Trips. At present a requestor can add flights, accommodation details and suggest their preferences. It would be great if the exact details of the trip could be added either by the
                                                                                                            • Adding Folders in Android App

                                                                                                              Is it possible to create a new email folder within the Zoho Mail Android app?  Or can this only be done from the desktop version of Zoho Mail? Cheers!
                                                                                                            • Schedule Exports for Regular Project Updates

                                                                                                              Tracking project data often means exporting data at regular intervals. Instead of manually exporting data every time, users can schedule exports for Phases, Tasks, and Tasks in Zoho Projects. These exports can be set to run once, daily, weekly, or monthly
                                                                                                            • Question about custom fields using Pivot Tables.

                                                                                                              I have created a pivot table showing annual revenue of a client and how much payment that client is paying my company. Is there a way using pivot table to add an additional field that subtracts those to fields / shows me a percentage of that difference?
                                                                                                            • Request for Light/Dark Mode

                                                                                                              Would love the ability to switch between Light and Dark mode similar to Zoho CRM. https://help.zoho.com/portal/en/community/topic/introducing-dark-mode-light-mode-a-new-look-for-your-crm
                                                                                                            • Journey Email - Ignored Contacts

                                                                                                              I have a journey setup which simply sends a string of emails over time. For some reason I am getting large amounts of the contacts who enter the first email being ignored and I can't find anywhere in reports or audit logs why these contacts are not
                                                                                                            • Involved account types are not applicable when create journals

                                                                                                              { "journal_date": "2016-01-31", "reference_number": "20160131", "notes": "SimplePay Payroll", "line_items": [{ "account_id": "538624000000035003", "description": "Net Pay", "amount": 26690.09, "debit_or_credit": "credit" }, { "account_id": "538624000000000403", "description": "Gross", "amount": 32000, "debit_or_credit": "debit" }, { "account_id": "538624000000000427", "description": "CPP", "amount": 1295.64, "debit_or_credit": "debit" }, { "account_id": "538624000000000376", "description":
                                                                                                            • Zoho Books - Include Payment Terms as a Custom View filter

                                                                                                              It would be great if you could created a custom view based on Payment Terms. This would be really handy for seeing a list of customers who have credit terms. A workaround is not required. I could do something with a creditor checkbox, but it would be
                                                                                                            • How to update changed purchase account of item in invoice

                                                                                                              I have selected the wrong purchase account for various articles and created invoices. I had to adjust the purchase account in the article afterwards, but the old purchase account is still posted in the transaction-journal of the invoice. To adjust the
                                                                                                            • Help - Zoho CRM notification on mobile (IOS/Android)

                                                                                                              Hello Community! Can I get the IOS/Andoid CRM app to notify me of events, calls, etc. due as I can with MANY other apps?   I am running the free Zoho I would like this to be native to the Zoho CRM app. I do not want to write a sep. mobile app
                                                                                                            • Zoho Books Idea - Include another field in Bank Details for Address

                                                                                                              Hi Books team, Currently use the Description field in the Bank Details to store the bank's address. This works fine but it would be great if you could add another field for Bank Address, so that other notes about the bank account could be stored in the
                                                                                                            • a question about the COQL API v8

                                                                                                              When I specify eight or more values in a WHERE IN clause and execute it, an error occurs. Is there a limit to the number of values that can be specified in a WHERE IN clause? ↓Error select * FROM Vendors WHERE (id in (1, 2, 3, 4, 5, 6, 7, 8, 9)) ↓Success
                                                                                                            • Zoho Books Idea - Bank Details Button on Banking

                                                                                                              Hi Books team, Sometimes I'm asked to share bank details with a customer or a colleague. So I go to the Banking Module, find the correct bank account, click Setting > Edit, then copy and paste the bank details. Wouldn't it be great if there was a button
                                                                                                            • JS SDK 8.0 – TypeError: Cannot read properties of undefined (reading 'getCacheStore') with sample code

                                                                                                              Hello Zoho Support Team, I’m integrating the Zoho CRM JavaScript SDK v8.0 and I’m getting the error below when running your official sample. I tested directly from: https://github.com/zoho/zohocrm-javascript-sdk-8.0/blob/main/samples/create_records_sample/create_records.js
                                                                                                            • Function #55: Convert multiple quotes to single SO using Custom Button

                                                                                                              Hello everyone, and welcome back to our series! In Zoho Books, after a quote is accepted by your customer, it can be converted into a sales order or an invoice. Often, a customer might have multiple quotes, and for easier billing or upon the customer's
                                                                                                            • Time based workflow without edit/action

                                                                                                              Hello I need help solving this problem if possible. We have Deals come into the CRM via Live Transfer which have the field properties: Stage = New Channel = Inbound Some of them don't get answered so we want these to automatically go into our Outbound
                                                                                                            • What's New - August 2025 | Zoho Backstage

                                                                                                              Every month, Zoho Backstage grows with you. These updates aren't just features and fixes, they're about making your workday smoother, your events more impactful, and your attendees happier. We’ve listened, learned, and shaped this release to keep things
                                                                                                            • prevent selling expired items

                                                                                                              Hello. I need to make a constraint on expired batch items not to be sold. Is it possible in Zoho Inventory? if so, then how? Thanks for further help.
                                                                                                            • Product details removed during update from other system

                                                                                                              We maintain our product details in an other system. These details are synchronized with Zoho at the end of each day, through an API. This has worked perfectly sofar. But last Monday, all product codes and some other product data have been wiped during
                                                                                                            • Client Customer

                                                                                                              I purchased a customer user license, but we cannot see the project I added in the customer account. I would like to ask for support on what we should do.
                                                                                                            • Add Ability to Use Zoho Finance Tags

                                                                                                              For Zoho Finance (Books and Inventory), the current actions do not allow us to affect the tags associated with the entities in question (customers, vendors, items, etc.). Please consider adding this functionality into the actions.
                                                                                                            • Embeded Signing doesn't work on Safari Browser

                                                                                                              We have implemented Zoho Sign in our website by using embeded signing, It works perfectly on Chrome. But it fails on Safari, We get stuck on Zoho Sign Page during redirection from Zoho Sign to our website after signing the document, Please let us know
                                                                                                            • Next Page