DeskKit SDK 是一个框架,它使得将您的 Desk 网站的支持门户集成到您的 iOS 应用程序变得简单。SDK 支持在项目中安装框架的多种方法。
从 DeskKit SDK 版本 4.0
开始,预构建框架附在 GitHub 仓库的发行中。为了使用预构建框架
Frameworks.zip
文件DeskKit.framework
、DeskAPIClient.framework
、DeskCommon.framework
)并选择它们。当提示时,请勾选“目的:如果需要则复制项”复选框。重要提示:附带的预构建框架包含为多个架构(x86_64
、i386
、armv7
、arm64
)构建的二进制文件。根据此雷达,在提交到 AppStore 之前,您必须剥离模拟器切片(x86_64
、i386
)。
在显示任何支持门户视图控制器之前,您必须启动一个 DKSession
来授权 Desk API
[DKSession startWithHostname:@“yoursite.desk.com”
APIToken:@“YOUR_API_TOKEN”];
您可以通过访问设置 > API 页面在站点的管理员控制台中获取 API 代令。您可以设置 API 应用程序,然后点击“您的移动 SDK 代令”链接以获取您需要在此处输入的代令。
如果您的支持中心的安全模式(管理员 -> 渠道 -> 高级设置 -> 安全模式)设置为“仅 HTTP”或“混合”,则需要配置 Apple 的 App Transport Security 以允许通过 SDK 通过 HTTP 内容。如果您的安全模式设置为“仅 HTTPS”,则可以跳过以下步骤。
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.desk.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
DeskKitExample
应用通过顶级的 UISplitViewController
展示一个支持门户。当然,如何展示您自己的支持门户取决于您。然而,一个常见的起点是 DKTopicsViewController
,这是一个基于表格的列表,列出了您门户中的所有支持主题。这个视图控制器还包含一个搜索栏,允许用户搜索文章。
DKSession
提供了一个方便的方法来创建此控制器
[DKSession newTopicsViewController]
您可能希望将自身设置为 DKTopicsViewControllerDelegate
并使用 DKArticleDetailViewController
来展示文章。请参考 DeskKitExample
应用以了解如何连接这两个视图控制器。
DeskKitExample
应用亦演示了一种展示“联系我们”操作表的方式。 DSSession
有一个类方法来创建一个预配置的 UIAlertController
,允许用户选择通过电子邮件联系您还是通过电话联系您,这取决于下面您启用的哪些设置。这个控制器可以如此实例化
[DKSession newContactUsAlertControllerWithCallHandler:^(UIAlertAction *callAction) {
[[UIApplication sharedApplication] openURL:[[DKSession sharedInstance] contactUsPhoneNumberURL]];
} emailHandler:^(UIAlertAction *emailAction) {
[self alertControllerDidTapEmailUs];
}];
当用户点击“电子邮件我们”时,您可以实例化和配置一个 DKContactUsViewController
的实例
- (void)alertControllerDidTapEmailUs
{
DKContactUsViewController *contactUsVC = [[DKSession sharedInstance] newContactUsViewController];
contactUsVC.delegate = self;
// Configure additional properties of DKContactUsViewController here
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:contactUsVC];
nvc.modalPresentationStyle = UIModalPresentationPageSheet;
[self presentViewController:nvc animated:YES completion:nil];
}
您可以通过 DeskKitSettings.plist
(见下文)或通过您的 DKContactUsViewController
实例的属性来配置要显示的字段。代码中设置的属性优先于 DeskKitSettings.plist
设置。
如果您已经有了用户的姓名和电子邮件,您可以通过以下方式将它们传递给 DKContactUsViewController
实例
DKUserIdentity *userIdentity = [[DKUserIdentity alloc] initWithEmail:@“[email protected]”];
userIdentity.givenName = @“John”;
userIdentity.familyName = @“Doe”;
contactUsVC.userIdentity = userIdentity;
如果通过 userIdentity
属性没有提供用户的电子邮件,则表单中会显示一个必要的“您的电子邮件” UITextfield
。
您通过 SDK 指定的自定义字段必须与您在网站管理控制台中定义的自定义字段匹配。
当您通过 DKSession
单例创建 DKContactUsViewController
时,SDK 会自动使用DeskKit设置(见下文)的 ContactUsStaticCustomFields
键提供的字典设置customFields
属性。您可以在运行时进一步修改customFields
属性。
// Grab initial custom fields populated from DeskKitSettings.plist
NSMutableDictionary *customFields = [contactUsVC.customFields mutableCopy];
// Add your own dynamic custom fields.
[customFields addEntriesFromDictionary:[self dynamicCustomFields]];
// Assign back to property.
contactUsVC.customFields = customFields;
您指定的customFields
字典将在您的客户在DKContactUsViewController
中点击“发送”时发送。
以下内容可以在支持门户中进行自定义(所有设置都是可选的,如果需要可以省略)。要这样做,请复制此存储库中的现有 DeskKitSettings-Example.plist
文件,并将其重命名为 DeskKitSettings.plist
。以下(可选)键可以设置:
DKContactUsViewController
发送电子邮件的主题。您可以通过此键覆盖此字符串。您还可以通过DKContactUsViewController
上的subject
属性在代码中指定电子邮件主题。DKContactUsViewController
` 的 showSubjectItem
属性上重写此选项。DKContactUsViewController
` 上的 userIdentity
属性设置用户名的初始值。ContactUsShowSubjectItem
和 ContactUsShowYourNameItem
设置为“是”。DKContactUsViewController
` 的 userIdentity
属性设置电子邮件后才会生效。如果您希望允许用户编辑通过 userIdentity
设置的电子邮箱地址,请将此值更改为“是”。DKContactUsViewController
` 的 `customeFields
属性。我们提供了一个示例应用程序来展示上述功能如何在您的应用程序中工作。以下是设置和运行它的方法:
desk-kit
目录的根目录开始,执行 cd DeskKitExample
pod install
将 DeskKitExample/DeskKitSettings-Example.plist
复制到 DeskKitExample/DeskKitSettings.plist
打开 ./DeskKitExample.xcworkspace
AppDelegate.m
文件,输入您的主机名和API令牌[DKSession startWithHostname:@“yoursite.desk.com”
APIToken:@“YOUR_API_TOKEN”];
DeskKitExample/Supporting Files/DeskKitSettings.plist
设置您想要的设置,如果需要的话。