从5迁移。X到6.0.0
从5迁移。X到6.0.0
将应用程序最小部署目标设置为iOS 11.0或更高版本
iOS最低部署目标由iOS 10.0提升至iOS 11.0。
将.framework替换为.xcframework进行手动集成
版本6.0.0不支持任何集成方法的Fat框架格式模块。
从4迁移。X到5.0.0
添加新的依赖项
框架现在有了一些额外的依赖项。Support SDK的集成必须包括MessagingSDK、MessagingAPI和SDKConfigurations框架依赖关系你的Xcode项目。
更新ZendeskSDK和ZendeskProviderS亚博DK的导入语句
的亚博ZendeskSDK
已重命名为SupportSDK
.的亚博ZendeskProviderSDK
已重命名为SupportProvidersSDK
.这意味着在代码中任何已导入亚博ZendeskSDK
或者是亚博ZendeskProviderSDK
将需要更新。
用Configuration替换UiConfiguration
的UiConfiguration
协议已重命名为配置
.这意味着在代码中使用的任何地方UiConfiguration
将需要更新。
将SupportUI替换为Support
的SupportUI
已弃用单例模式。使用支持
单例。
将ArticleUiConfiguration和HelpCenterUiConfiguration中的deflectionEnabled替换为engines或objcEngines
的deflectionEnabled
的属性ArticleUiConfiguration
和HelpCenterUiConfiguration
类已替换为引擎
(斯威夫特)和objcEngines
(对于Objective-C)属性。
从3迁移。X到4.0
更新创建自定义字段的方式
一个CustomField
用Swift编写的类替换ZDKCustomField
用Objective-C编写的类。
初始化式已更改。新的初始化代码片段如下:
斯威夫特
let customFieldOne = CustomField(fieldId: 2345678,值:"some_text")
objective - c
ZDKCustomField*customFieldOne=[[ZDKCustomField alloc]initWithFieldId:@(2345678)价值:@“some_text”];
你也可以使用字典初始化自定义字段:
斯威夫特
let customFieldOne = CustomField(dictionary: ["id": 2345678, "value": "some_text"])
objective - c
ZDKCustomField*customFieldOne=[[ZDKCustomField alloc]initWithDictionary:@{@“id”:@(2345678),@“价值”:@“some_text”}];
有关更多信息,请参见与API提供者合作
更新设置和获取自定义字段的方式
- 的
customTicketFields
财产ZDKCreateRequest
类已重命名为customFields
- 的
字段
财产RequestUiConfiguration
已重命名为customFields
- 自定义字段现在可用
customFields
的属性ZDKRequest
类。
从2迁移。X到3.0
更新应用程序依赖项
Support SDK的3.0.0版本有一个新的依赖项CommonUISDK
.的亚博ZendeskSDK
模块直接依赖于它,所以你需要在你的应用目标的“嵌入式二进制文件”构建阶段有它。
更新初始化调用
如果在你的应用中使用Support SDK UI,你需要使用新的UI单例来初始化。这将替换使用Support UI的集成的旧初始化代码段。如果您正在使用支持SDK API提供者而不是UI,那么您的初始化代码片段将保持不变。
新的初始化代码片段是:
斯威夫特
进口Zende亚博skSDK
进口Zende亚博skCoreSDK
亚博Zendesk。初始化ialize(appId: "appId", clientId: "clientId", zendeskUrl: "url")
SupportUI。初始化ialize(withZendesk: Zendesk.instance)
objective - c
#进口<亚博ZendeskSDK/亚博ZendeskSDK.h>;
#进口<亚博ZendeskCoreSDK/亚博ZendeskCoreSDK.h>;
#进口<亚博ZendeskSDK/亚博ZendeskSDK-斯威夫特.h>;
#进口<亚博ZendeskCoreSDK/亚博ZendeskCoreSDK-斯威夫特.h>;
[ZDK亚博Zendesk initializeWithAppId:@“appId”clientId:@“clientId”亚博zendeskUrl:@“url”];
[ZDKSupportUI initializeWith亚博Zendesk:[ZDK亚博Zendesk实例]];
使用UiConfiguration时导入CommonUISDK
现在当使用UiConfiguration
类,CommonUISDK
将需要导入才能使用。
更新主题代码
Support SDK中有一种新的主题化方法。它的工作方式与旧的API相同,在那里您提供一个主要的颜色,我们使用它来主题的UI。新的API是这样的:
斯威夫特
进口CommonUISDK
CommonTheme.currentTheme.primaryColor = .red
objective - c
#进口<CommonUISDK/CommonUISDK-斯威夫特.h>;
[ZDKCommonTheme currentTheme].primaryColor=[用户界面颜色redColor];
迁移从1。X到2.0
这一页涵盖了你需要对你的应用程序从1升级的关键变化。Support SDK的2.0版本。
更新框架
SDK 2.0是一个混合框架objective - c
而且斯威夫特4
.因此,集成指令不同于完全用SDK 1.0编写的objective - c
.我们还将SDK分成了三个独立的框架:亚博ZendeskSDK
包含用户界面,亚博ZendeskProviderSDK
包含REST API包装器,和亚博ZendeskCoreSDK
包含用户管理和组网。
请跟添加Support SDK将SDK添加到项目中。对于积分到纯函数中有单独的说明objective - c
项目和项目包含斯威夫特
.
你可能需要移除亚博ZendeskSDK.bundle
从拷贝Bundle资源亚博电脑端
在你们的项目中构建阶段
.
更新初始化调用
方法初始化SDKZDKConfig
单例。在2.0中,我们将SDK的职责拆分为两个单独的枚举单例,它们都必须分别初始化。初始化亚博
首先使用帐户详细信息枚举单例,然后初始化支持
枚举单例,如下:
斯威夫特
进口Zende亚博skSDK
进口Zende亚博skCoreSDK
亚博Zendesk。初始化ialize(appId: "appId", clientId: "clientId", zendeskUrl: "url")
支持。初始化ialize(withZendesk: Zendesk.instance)
objective - c
#进口<亚博ZendeskSDK/亚博ZendeskSDK-斯威夫特.h>;
#进口<亚博ZendeskCoreSDK/亚博ZendeskCoreSDK-斯威夫特.h>;
[ZDK亚博Zendesk initializeWithAppId:@“appId”clientId:@“clientId”亚博zendeskUrl:@“url”];
[ZDKSupport initializeWith亚博Zendesk:[ZDK亚博Zendesk实例]];
有关更多信息,请参见初始化支持SDK.请注意参数的顺序已经从1.x改变了。
更新标识
在2.0中设置标识的机制没有改变,但是标识类已经移动setIdentity
方法为on亚博
而不是老的ZDKConfig
.
设置匿名身份:
斯威夫特
let identity = identity . createanonymous ()
亚博Zendesk.instance ? .setIdentity(身份)
objective - c
id<ZDKObjCIdentity>userIdentity=[[ZDKObjCAnonymous alloc]initWithName:空的邮件:零];
[[ZDK亚博Zendesk实例]setIdentity:userIdentity];
设置JWT标识:
斯威夫特
let identity = identity。createJwt(令牌:“unique_id”)
亚博Zendesk.instance ? .setIdentity(身份)
objective - c
id<ZDKObjCIdentity>userIdentity=[[ZDKObjCJwt alloc]initWithToken:“unique_id”];
[[ZDK亚博Zendesk实例]setIdentity:userIdentity];
有关更多信息,请参见设置标识.
更新启动SDK视图控制器的方式
我们已经改变了SDK在2.0中的呈现方式。现在一个UIViewController返回给你,让你在合适的时候呈现。之前启动控制器的所有方法都应该被替换,详见配置SDK活动.
请注意SDK v2中的Rate My App功能已被弃用并删除。若要继续使用该功能,请考虑使用我们的开源替代.
添加iCloud权限
如果希望用户附加文件以支持请求,则必须启用iCloud文档
在应用程序的功能
.用户仍然可以从他们的图片库或相机上传照片,只要使用描述在info.plist
更新。
更新提供者引用
我们所有的提供者类都已更改。他们不再接受任何论点。
进口Zende亚博skProviderSDK
进口Zende亚博skCoreSDK
让ZDKRequestProvider()
让helpCenterProvider = ZDKHelpCenterProvider()
@进口Zende亚博skSDK;
@进口Zende亚博skCoreSDK;
[[ZDKRequestProvider alloc]初始化];
[[ZDKHelpCenterProvider alloc]初始化];
注意2.0.0到2.0.2
在2.0.0ZDKHelpCenterProvider
需要在init中传递一亚博个Zendesk实例。现在情况已经不同了。
更新推送通知处理和深度链接
如果您以前使用过ZDKPushUtil
方法来处理即将到来的推送通知,它已被取代。新方法是一种更加“放手”的方法来处理传入的推送。现在,您应该在接收到推送通知时调用以下方法,并将来自推送有效负载的请求ID传递给它。
Support.instance ? .refreshRequest (requestId:“request_id”)
[[ZDKSupport实例]refreshRequestWithRequestId:@“request_id”];
此方法将不会处理到票务屏幕的任何深度链接。它只会重新加载相关屏幕(RequestListViewController
而且RequestViewController
),如果最终用户在使用它们。深度链接到RequestViewController
请求ID应该由您处理。
可以这样做:
let requestVC = ZDKRequestUi.buildRequestUiWithRequestId:@"request_id"];
ui*requestVC=[ZDKRequestUi buildRequestUiWithRequestId:@“request_id”];
下一步该去哪里?
现在您已经完成了这些步骤,您的应用程序应该可以使用Support SDK 2.0版本构建和运行了。要利用最新的功能,请尝试我们的新配置选项.
从2.0.0迁移到2.0.2
2.0.0附带了一些Int
公共api中的类型。这是一个错误,因为它们可以在32位设备上溢出。为了解决这个问题,我们不得不破坏几个api。如果您的集成只使用SDK UI,那么影响应该是最小的。如果你使用供应商您需要更新您的项目。
亚博Zendesk id,如票务、类别、节和文章id是64位的。在32位设备上,你需要像这样将字面值整数包装成NSNumber:
let doubleValue: Double = 123456789123
让doubleValueNumber: NSNumber = NSNumber(值:doubleValue)
显示帮助中心界面
我们已经删除了所有Int
类型从我们的api。这会影响HelpCenterUiConfiguration.groupdIds
财产和ZDKHelpCenterUi。buildHelpCenterArticle (withArticleId:)
函数。
HelpCenterUiConfiguration.groupdIds
已更改为NSNumber。
ZDKHelpCenterUi。buildHelpCenterArticle (withArticleId:)
已经改成带了吗字符串
.
使用帮助中心提供者
所有NSInteger
类型已更改为NSString
类型。这让他们回到了他们在SDK 1.X中的工作方式。由于在Objective-C中,类型更改只会发出警告,因此我们必须更改签名以强制错误并确保正确的行为。
初始化ZDKHelpCenterProvider:
让helpCenterProvider = ZDKHelpCenterProvider(地区:"en")!
就变成:
让helpCenterProvider = ZDKHelpCenterProvider()
getSectionsForCategoryId:
helpCenterProvider.getSectionsForCategoryId(200183938) {(result, _) in}
就变成:
helpCenterProvider。getSectionsWithCategoryId("200183938", withCallback: {(result, _) in})
getArticlesForSectionId:
helpCenterProvider。gettarticlesforsectionid (200549778, withCallback: {(result, _) in})
就变成:
helpCenterProvider。gettarticleswithsectionid ("200549778", withCallback: {(result, _) in})
getArticlesWithLabels:
helpCenterProvider。getArticlesForSectionId(200549778, labels: ["ios"]) {(result, _) in}
就变成:
helpCenterProvider。getArticlesWithSectionId("200549778", labels: ["ios"]) {(result, _) in}
getAttachmentForArticleId:
helpCenterProvider.getAttachmentForArticleId(203296726) {(result, _) in}
就变成:
helpCenterProvider。getAttachmentWithArticleId("203296726", withCallback: {(result, _) in})}
getArticleById:
helpCenterProvider.getArticleById(203296726) {(result, _) in}
就变成:
helpCenterProvider.getArticleWithId("203296726") {(result, _) in}
getSectionById:
helpCenterProvider.getSectionById(200549778) {(result, _) in}
就变成:
helpCenterProvider.getSectionWithId("200549778") {(result, _) in}
getCategoryById:
helpCenterProvider.getCategoryById(200183938) {(result, _) in}
就变成:
helpCenterProvider.getCategoryWithId("200183938") {(result, _) in}
upvoteArticle:
helpCenterProvider。upvoteArticle(withId: 203296726){(结果,_)in}
就变成:
helpCenterProvider。upVoteArticle(withId: "203196726") {(result, _) in}
downvoteArticle:
helpCenterProvider。downvoteArticle(withId: 203296726){(结果,_)in}
就变成:
helpCenterProvider。downVoteArticle(withId: "203296726") {(result, _) in}
deleteVote:
helpCenterProvider.deleteVote(withId: 203296726){(结果,_)in}
就变成:
helpCenterProvider。removevte (withId: "203196726"){(结果,_)in}