当我不知道Salesforce时,如何构建连接到Salesforce的iOS应用?

每隔一段时间我就会感到沮丧。 我仍然想念Parse。 它使构建移动后端变得如此容易,而且我敢说它很有趣。 是的,是的,我明白了。 昆顿,过一辈子。 继续。

像许多伟大的技术一样,不幸的是Parse不得不消亡。 不是Facebook杀死了它。 解析从未将后端连接到公司。 正是这种联系使公司能够与他们的移动应用程序客户建立关系。 没有此连接,移动应用程序就像玩俄罗斯轮盘赌。 一会儿一切都好,然后ba! 最终,这个对业务至关重要的应用最终以致命的一击沉入了应用商店DEAD中。

作为我在Salesforce工作的一部分,我与许多企业讨论了如何构建移动应用程序,从而避免了断开连接的应用程序的命运。 到目前为止,大多数人都知道我们称为App Cloud的平台。 他们可能为员工构建了自定义应用程序,但是在构建本机应用程序时,他们没有内部技能。 现实情况是,除非该公司是旧金山湾区的一家科技公司,否则他们可能没有一支消费移动应用程序专家团队。 他们将这类工作外包。

Salesforce到底是什么?

我是本地人,主要关注Apple生态系统平台:iOS,MacOS,TVOS和WatchOS。 我们使用诸如Xcode,Cocoapods之类的工具,并且喜欢Swift(虽然泰勒·斯威夫特确实写了一首吸引人的歌曲,但他并不喜欢泰勒·斯威夫特的综艺)。

将客户线索添加到Salesforce

抓住Leads-SDK cocoapod,在情节提要中添加一个按钮,将其类型更改为LeadsButton,然后询问客户其Salesforce组织ID(不用担心,他们会知道您在说什么。)

 豆荚“ leads-sdk” 

然后捕获客户信息:

  var d:Dictionary = [String:String]() 

//填充标准字段
d [Leads.StandardFields.FIRST_NAME] =“奎顿”
d [Leads.StandardFields.LAST_NAME] =“墙”
d [Leads.StandardFields.EMAIL] =“ quinton@here.com”
d [Leads.StandardFields.COMPANY] =“ Salesforce”
d [Leads.StandardFields.CITY] =“旧金山”
d [Leads.StandardFields.STATE] =“ CA”
  myLeadButton.formFields = d 

并将其发送给Salesforce:

 做{ 
试试myLeadButton.sendLead()
}
捕获Leads.LeadError.NoOrgId {
打印(“未设置组织机构ID!”)
}
捕获Leads.LeadError.CommsFailure {
//通讯问题
}
赶上{
//意外的错误
}

方法2:访问Salesforce REST API

Salesforce提供了大量功能强大的RESTful API。 有很多很棒的培训材料可以帮助您通过Salesforce的在线学习平台Trailhead入门,但是一开始可能会有些困难,特别是如果您以前从未使用过Salesforce。 幸运的是,您可以使用一些很棒的cocoapods使其变得超级简单。

SwiftlySalesforce处理用户身份验证(如果您还没有帐户,Salesforce还提供社交登录功能,允许用户使用其Twitter或Facebook ID进行注册。请查看此示例应用程序作为示例)

 导入UIKit 
迅速导入Salesforce

@UIApplicationMain
AppDelegate类:UIResponder,UIApplicationDelegate,LoginDelegate {

var window:UIWindow?

/// Salesforce Connected App属性(替换为您自己的…)
让ConsumerKey =“ 3MVG91ftiraGaMd_SSxxaqQgkxx_rz_GVRxxFpDR6yDaxxEfpC0vKresPMY1kopH98G9Ockl2p7IJuqRk23nQ”
让redirectURL = URL(字符串:“ taskforce:// authorized”)!

func application(_ application:UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:Any]?)->布尔{
configureSalesforce(consumerKey:ConsumerKey,redirectURL:redirectURL)
返回真
}

func application(_ app:UIApplication,打开url:URL,选项:[UIApplicationOpenURLOptionsKey:Any] = [:])-> Bool {
handleRedirectURL(URL:网址)
返回真
}
}

获得授权后,您可以直接调用REST API:

 首先{ 
let soql =“选择帐户的ID,名称,WILLE BillingPostalCode ='\(zip)'”
返回salesforce.query(soql:soql)
}。然后 {
queryResult在
用于queryResult.records {
如果让name = record [“ Name”]为? 字符串{
打印(“帐户名= \(名称)”)
}
}
}

} .. catch {
错误中
//处理错误…

}

Salesforce对象和SOQL

到目前为止,除了它提供API端点之外,我们对Salesforce一无所知。 但是,上面的示例包含一个查询,查询看起来像一个关系数据库表Accounts。 Salesforce是使用元数据层构建的,该元数据层提取了物理数据库表并将其表示为对象。 帐户是这些对象之一。 可以使用Salesforce对象查询语言(简称SOQL)查询所有对象。 它有点像SQL,但专为多租户而设计。

大多数代理机构与其客户的Salesforce管理员合作,以提供移动应用程序所需的对象和字段名称。 为了使其变得更加容易,您可以使用SObjectKit完全不需要编写大多数SOQL语句。 作为移动开发人员,您可以使用强类型对象,并使SObjectKit担心字段映射。

豆荚“ SObjectKit” 
  func loadData(){ 

首先 {
SalesforceAPI.Query(soql:Account.soqlGetAllFields(nil))。request()

}。然后 {
(结果)->()在
self.allAccounts = Account.populateToCollection(result [“ records”] as!NSArray)as! [帐户]
}。始终{
self.tableView.reloadData()
self.refreshControl?.endRefreshing()

}。错误{_ in
//做一些错误处理
}
}

摘要

你有它。 我们只是简单介绍了您可以使用Salesforce做的事情。 这是一个功能强大的移动后端,不需要您成为Salesforce专家。 通过使用以上推荐的方法之一和此处的一些技巧,您可以立即构建连接到Salesforce的本地iOS应用。

下次您的客户来找您,并要求您构建一个连接到Salesforce的应用程序时,回答“没问题”,这是真的。 这使每个人都高兴,并给了我们更多的时间秘密听泰勒·斯威夫特的音乐。