从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的属性ArticleUiConfigurationHelpCenterUiConfiguration类已替换为引擎(斯威夫特)和objcEngines(对于Objective-C)属性。

从3迁移。X到4.0

更新创建自定义字段的方式

一个CustomField用Swift编写的类替换ZDKCustomField用Objective-C编写的类。

初始化式已更改。新的初始化代码片段如下:

斯威夫特

             
let customFieldOne = CustomField(fieldId: 2345678,值:"some_text")

objective - c

             
ZDKCustomFieldcustomFieldOne=ZDKCustomField allocinitWithFieldId@(2345678价值@“some_text”

你也可以使用字典初始化自定义字段:

斯威夫特

             
let customFieldOne = CustomField(dictionary: ["id": 2345678, "value": "some_text"])

objective - c

             
ZDKCustomFieldcustomFieldOne=ZDKCustomField allocinitWithDictionary@@“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/亚博ZendeskSDKh>进口<亚博ZendeskCoreSDK/亚博ZendeskCoreSDKh>进口<亚博ZendeskSDK/亚博ZendeskSDK-斯威夫特h>进口<亚博ZendeskCoreSDK/亚博ZendeskCoreSDK-斯威夫特h>ZDK亚博Zendesk initializeWithAppId@“appId”clientId@“clientId”亚博zendeskUrl@“url”ZDKSupportUI initializeWith亚博ZendeskZDK亚博Zendesk实例

使用UiConfiguration时导入CommonUISDK

现在当使用UiConfiguration类,CommonUISDK将需要导入才能使用。

更新主题代码

Support SDK中有一种新的主题化方法。它的工作方式与旧的API相同,在那里您提供一个主要的颜色,我们使用它来主题的UI。新的API是这样的:

斯威夫特

             
进口CommonUISDKCommonTheme.currentTheme.primaryColor = .red

objective - c

             
进口<CommonUISDK/CommonUISDK-斯威夫特h>ZDKCommonTheme currentThemeprimaryColor=用户界面颜色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亚博ZendeskZDK亚博Zendesk实例

有关更多信息,请参见初始化支持SDK.请注意参数的顺序已经从1.x改变了。

更新标识

在2.0中设置标识的机制没有改变,但是标识类已经移动setIdentity方法为on亚博而不是老的ZDKConfig

设置匿名身份:

斯威夫特

             
let identity = identity . createanonymous ()亚博Zendesk.instance ? .setIdentity(身份)

objective - c

             
id<ZDKObjCIdentity>userIdentity=ZDKObjCAnonymous allocinitWithName空的邮件ZDK亚博Zendesk实例setIdentityuserIdentity

设置JWT标识:

斯威夫特

             
let identity = identity。createJwt(令牌:“unique_id”)亚博Zendesk.instance ? .setIdentity(身份)

objective - c

             
id<ZDKObjCIdentity>userIdentity=ZDKObjCJwt allocinitWithToken“unique_id”ZDK亚博Zendesk实例setIdentityuserIdentity

有关更多信息,请参见设置标识

更新启动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亚博skCoreSDKZDKRequestProvider 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"];
             
uirequestVC=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}