配置应用程序
创建新项目
注册客户端后,就可以开始创建自己的 iOS 应用程序了。
在命令行中移至要创建移动项目的目录,并执行以下命令。
zohoios create
系统将提示您输入以下内容。
- 移动应用的名称(例如,Lead Approver)。
- 您的 iOS 开发者机构名称。
- 您的 iOS 开发者机构标识。
- Zoho OAuth 客户端 ID(在注册应用期间获取)。
- Zoho OAuth 客户端密钥(在注册应用期间获取)。
- Zoho OAuth 重定向 URL(在注册应用期间获取)。
成功执行以上命令后,将在同一目录中创建项目文件夹。该项目文件夹的名称将与移动应用的名称相同。
运行项目
新创建的项目实际上是一个演示 iOS 应用,可使用 Xcode 立即运行。
- 打开新创建项目的 .xcworkspace 文件。
新创建的演示应用将作为 Xcode 项目打开。 - 成功编译后,可轻松地在仿真器中运行此项目。
此应用在仿真器中打开时将显示 Zoho 登录界面。 - 使用您的 Zoho CRM 凭证登录并使用演示应用查看您的数据。
扩展应用
成功构建并运行项目后,可根据您的需求进一步为应用设计和创建新界面和新功能。开发应用时,没有任何前端限制。但是,为简化用户认证,在设计应用时务必记住以下几点。
不要更改 AppDelegate.swift 中已存在的任何代码。
处理登录/注销:
为了正确处理用户登录,在SDK中已经配置了启动界面,以确保只有登录的用户才能够查看应用程序的数据。但是,如果要显示您自己的自定义登录界面,那么可以将您自己的视图声明为启动界面。
在自定义启动界面的 ViewController 类中,添加以下代码作为登录按钮的操作:
( UIApplication.shared.delegate as! AppDelegate ).loadLoginView()
添加以下代码作为注销按钮的操作:
( UIApplication.shared.delegate as! AppDelegate ).logout()
在 AppConfiguration.plist 文件中:
- OAuthscopes(必需)- 所创建属性文件中已指示样本作用域,可根据您的需要更改作用域。了解更多。
- AccessType(可选)- CRM 中的环境类型
- Production - 此环境拥有访问关键业务数据的活跃付费用户。
- Development - 可在这些环境中进行扩展、集成和开发而不影响生产环境。
- Sandbox - 这些环境专门用于在部署至生产环境或向客户发布之前测试应用程序功能。
- DomainSuffix(可选)多数据中心支持。
- us - www.zohoapis.com
- eu - www.zohoapis.eu
- cn - www.zohoapis.com.cn
- PortalID(可选)- 代表您的 CRM PortalID(例如,65468393)。如果您没有 PortalID,那么不必在属性文件中指定。
- ShowSignUp(可选)- 如果在应用中提供注册工具,请将此值指定为 true,否则指定为 false。
此文件包含运行应用所需的特定配置值。请不要更改已存在的属性名称或值,因为它们是顺利运行 SDK 和应用所必需的。
Zoho CRM API 包装器
所有 Zoho CRM 实体建模为具有适用于该特定实体的成员和方法的类。ZCRMRestClient 是客户端库的基类。
该库的类关系和层次结构遵循 Zoho CRM 中的实体层次结构。下面给出各种 Zoho CRM 实体的类层次结构。
ZCRMRestClient
-ZCRMOrganization
-ZCRMUser
-ZCRMRole
-ZCRMProfile
-ZCRMModule
-ZCRMLayout
-ZCRMSection
-ZCRMField
-ZCRMPickListValue
-ZCRMCustomView
-ZCRMModuleRelation
-ZCRMJunctionRecord
-ZCRMRecord
-ZCRMInventoryLineItem
-ZCRMTax
-ZCRMPriceBookPricing
-ZCRMEventParticipant
-ZCRMNote
-ZCRMAttachment
-ZCRMTrashRecord
在上述层次结构中,每个实体类都有方法获取自己的属性,并通过API调用获取其直接子实体的数据。
例如,Zoho CRM 模块 (ZCRMModule) 对象有一些方法用于获取模块的属性(例如,显示名称,模块 ID 等等),它还有一些方法用于获取其所有子布局 (ZCRMLayout) 对象。
访问记录属性
因为记录属性在模块中是动态的,所以我们仅给出常规字段(例如,createdTime、createdBy、owner 等等)作为 ZCRMRecord 的默认成员。所有其他记录属性在 ZCRMRecord 对象中以映射形式提供。
要访问某个记录的各个字段值,请使用所提供的 getter 和 setter 方法。记录属性映射的键为模块字段的 API 名称。所有模块中的所有字段的 API 名称位于以下位置:设置 > 开发者空间 > API > CRM API > API 名称。
- 要获取字段值,请使用 record.getFieldValue(fieldAPIName);
返回的值将位于被请求字段的apt数据类型中。对于查找字段和用户类型字段,系统将分别返回 ZCRMRecord 和 ZCRMUser 对象。 - 要设置字段值,请使用 record.setFieldValue(fieldAPIName, newValue);
在设置字段值时,请确保设置值是您将要设置的字段的apt数据类型。
响应处理
APIResponse 和 BulkAPIResponse 是 Zoho CRM API 的响应的包装器对象。所有 API 调用方法将返回其中一个对象。
搜寻单个实体的方法将返回 APIResponse 对象,搜寻实体列表的方法将返回 BulkAPIResponse 对象。
使用 getData() 方法可单独从响应包装器对象获取实体数据。APIResponse.getData() 将返回单个 Zoho CRM 实体对象,BulkAPIResponse.getData() 将返回 Zoho CRM 实体对象列表。
这些响应包装器对象具有以下属性而不是数据。
- ResponseHeaders 显示当天和窗口的余下 API 计数;以及当前窗口重置的经历时间。
- ResponseInfo - 实际数据及 API 提供的任何其他信息。
- [EntityResponse] - 批量 API 中的各个实体的状态。例如,在插入记录中,API 可能因为某些记录而部分失效。以下列表给出各个记录的创建状态。
错误
故障 API 响应、库异常之类的所有意外行为由客户端库处理,并仅以 ZCRMSDKError 形式抛出(带有相应错误的案例)。因此,在客户端应用代码中单独捕获此错误已经足够了。
SDK 数据访问包装器
除以上 Zoho CRM API 打包外,为避免使用不必要的 API 调用,SDK 还会将基本模块元数据缓存在设备的本地存储器中。
目前,不会缓存 CRM 数据(记录),只会缓存模块的元数据,例如,布局、分栏、字段、自定义视图详细信息。
ZCRMCachedModule
一些其他元数据缓存是使用 ZCRMCachedModule 完成的。这会扩展 Zoho CRM API 客户端库的 ZCRMModule 类。此类提供以下方法。
- getAllLayouts - 将模块的所有布局返回为一组 ZCRMLayout。
- getAllCustomViews - 将模块的所有自定义视图详细信息返回为一组 ZCRMCustomView。
刷新缓存
ZCRMCachedModule 存储并使用设备的本地存储器中缓存的模块和表单布局的元数据信息。SDK 按每 12 个小时一次的频率刷新已存储的模块元数据。
如果您要强制 SDK 删除缓存(例如,如果您要在应用中提供类似滑动刷新的功能)并通过 Zoho CRM API 调用刷新元数据,那么可通过设置以上方法的重载版本中提供的 refreshCache 标记来强制进行。下面给出了样本调用。
zcrmCachedModuleObj.getAllLayouts(true);
zcrmCachedModuleObj.getAllCustomViews(true);