先进的集成

当用户点击发送到对话中的URL、电话号码或电子邮件地址时,SDK通过启动能够完成该操作的默认应用程序来自动处理该事件:

  • URL的默认浏览器
  • 电话号码的默认手机应用
  • 电子邮件地址的默认电子邮件应用程序

请注意:只支持urlhttps://www.亚博zendesk.com/在UI中是可点击的。其他uri,如亚博zendesk: / / myapp将不能点击。

您可以自定义行为,并通过设置URL来更改用户单击URL时发生的情况MessagingDelegate.的消息传递(shouldHandleURL::)函数将在用户单击URL时调用。

为了防止SDK打开默认浏览器,您应该在发生这种情况时返回false。在这种情况下,您必须自己处理操作的完成。函数接收两个参数:

  • url:被点击的URL
  • :描述在UI中的位置的枚举url被单击,例如文本消息、旋转木马项目等。

下面的代码片段展示了如何设置MessagingDelegate在Swift和Objective-C中:

斯威夫特
  1. 消息传递
             
message .delegate = self
  1. 在委托方法中处理URLmessaging(_ messaging: messaging, shouldHandleURL url: url, from source: URLSource) -> Bool
             
函数messaging(_ messaging: messaging, shouldHandleURL url: url, from source: URLSource) -> Bool {//你的自定义动作…//返回false以防止SDK自动处理URL//返回true,允许SDK自动处理URL//如果你做了一些自定义的事情}
objective - c
  1. ZDKMessaging
             
ZDKMessaging委托自我
  1. 在委托方法中处理URL—(BOOL)messaging:(ZDKMessaging * _Nonnull)messaging shouldHandleURL:(NSURL * _Nonnull)URL from:(enum ZDKURLSource)source
             
-保龄球消息传递ZDKMessaging*_Nonnull消息传递shouldHandleURLNSURL*_NonnullURL从枚举ZDKURLSource{//你的自定义动作…//返回false以防止SDK自动处理URL//返回true,允许SDK自动处理URL//如果你做了一些自定义的事情返回没有}

事件

iOS版亚博Zendesk SDK提供了一个事件观察者,你可以在其中监听任何事件亚博ZendeskEvent从SDK发出的。

可用的事件

亚博ZendeskEvent是非冻结枚举,其中包含当前可以触发的每个事件的用例。它有以下几种情况:

unreadMessageCountChanged

当当前未读消息总数发生更改时调用。

名字 类型 评论
currentUnreadCount Int 当前未读邮件的总数。
authenticationFailed

当任何API调用发生身份验证错误时调用。

名字 类型 评论
错误 错误 发生错误的详细信息。

EventObserver

斯威夫特

下面的代码示例展示了如何添加和删除事件观察者。

目前只有一种情况要匹配,但由于枚举是到未,将来可能会增加更多的案例。

出于这个原因,添加一个“包罗万象”的案例@unknown违约它匹配任何值并产生a警告如果枚举的所有已知元素尚未匹配。如果添加了其他情况,并且您不希望在这里看到警告,请删除@unknown属性。请看下面的代码片段:

             
//添加一个事件观察者到Zendesk实例:亚博亚博.addEventObserver(self){事件中的开关事件{case .unreadMessageCountChanged(让unreadCount)://你的自定义动作…case .authenticationFailed(让错误作为NSError):print("收到身份验证错误:\(error)")print(“域:\ (error.domain)”)print("Error code: \(Error .code)")print("本地化描述:\(error.localizedDescription)")/ /……@unknown默认值:打破}}//从Zendesk实例中移除一个事件观察者:亚博亚博Zendesk.instance ? .removeEventObserver(自我)
objective - c

下面的代码示例展示了如何添加和删除事件观察者。

每一个案例ZDK亚博ZendeskEvent前缀为ZDKZendeskEvent,格亚博式如下:

ZDK亚博ZendeskEvent {EventName}

目前只有一种情况要匹配,但由于枚举是到未,将来可能会增加其他病例。出于这个原因,添加一个“包罗万象”的案例默认的它匹配任何值。

             
//获取Zendesk实亚博例:亚博*实例(亚博Zendesk实例]//添加一个事件观察者到Zendesk实例:亚博(实例addEventObserver自我枚举ZDK亚博ZendeskEvent事件id _可空值{开关事件{情况下ZDK亚博ZendeskEventUnreadMessageCountChanged//你的自定义动作…情况下ZDK亚博ZendeskEventAuthenticationFailed//你的自定义动作…默认的打破}}]//从Zendesk实例中移除一个事件观察者:亚博(实例removeEventObserver自我]

身份验证

Zend亚博esk SDK允许对最终用户进行身份验证,以便使用Zendesk的代理可以验证他们的身份。关于为您的帐户设置身份验证的步骤的详细文章是在这里.在开始下面的步骤之前,应该完成本文中提到的步骤。

LoginUser

要验证用户,请调用loginUser使用自己的APIJWT

JWT可以包含以下字段:

名字 类型 评论
external_id 字符串 用户的外部id。必需的。
名字 字符串 用户名。可选的。
电子邮件 字符串 用户的email地址。可选的。
斯威夫特

的结果loginUser可在可选中观察completionHandler

             
亚博Zendesk.instance ?。loginUser(with: "your_jwt_here") { result in切换结果{案例成功(让用户):/ /……Case .failure(let error):/ /……}}
objective - c
             
亚博*实例(亚博Zendesk实例](实例loginUserWith@“your_jwt_here”completionHandlerZDK亚博ZendeskUser*_Nullable用户NSError*_Nullable错误{/ /……}]

LogoutUser

要取消对用户的身份验证,请调用logoutUserAPI。

这主要用于经过身份验证的用户,但呼叫logoutUser对于未经身份验证的用户,将清除他们的所有数据,包括他们的对话历史记录。请注意,我们无法恢复这些数据,因此仅将其用于测试目的。下次未经身份验证的用户进入对话屏幕时,将为他们创建一个新用户和对话。

斯威夫特

的结果logoutUser可在可选中观察completionHandler

             
亚博Zendesk.instance ?。logoutUser{result in切换结果{案例.success:/ /……Case .failure(let error):/ /……}}
objective - c
             
亚博*实例(亚博Zendesk实例](实例logoutUserWithCompletionHandlerNSError*_Nullable错误{/ /……}]

身份验证错误

所有身份验证错误都可以通过事件

这里最常见的错误是HTTP 401错误。在这种情况下是新的JWT应该生成并呼叫到loginUser

访客路径

访问者路径让代理看到终端用户登陆的屏幕,以获得更好的对话上下文。

页面查看事件

页面浏览人数对象封装了与用户交互相关的信息,并将其传递给Page View事件API。使用Zendesk的支持代理可以在代理工作区中看到这些基于会话的页面查看事件。亚博

斯威夫特

下面是演示如何发送页面视图事件的代码示例。

API接受页面浏览人数对象作为参数。传递最终用户所处的屏幕位置url和屏幕的名称pageTitle

             
//创建一个' PageView '对象let pageView = pageView (pageTitle: pageTitle, url: url)亚博sendpageviewevent (pageView) {result in//你的自定义结果处理…}
objective - c

下面是演示如何发送页面视图事件的代码示例。

API接受页面浏览人数对象作为参数。传递最终用户所处的屏幕位置url和屏幕的名称pageTitle

             
//获取Zendesk实亚博例:亚博*实例(亚博Zendesk实例]//创建一个PageViewZDKPageView*页面浏览人数((ZDKPageView alloc]initWithPageTitle@“页面标题”url@“www.example.com”](亚博zendesk sendPageViewEvent页面浏览人数completionHandlerNSError*错误{如果错误! ={//处理错误}}]

积极的消息

主动消息传递可以在触发预定义条件时,通过移动SDK通道向用户提供有针对性的本地推送通知。看到为移动SDK渠道创建主动消息有关为您的频道创建主动消息传递活动的信息。在执行以下步骤之前,应该完成本文中提到的步骤。

本地推送通知

主动消息传递使用iOS本地通知向满足您预定义条件的用户发送消息。

亚博ZendeskSDK将向用户请求通知权限(如果之前没有提示),以便显示主动消息。

按照在应用程序的代码库中实现推送通知确保您的项目能够正确处理推送通知操作。您必须实现handleTap函数内部userNotificationCenter (didReceive)显示终端用户点击主动消息通知后的对话视图。

斯威夫特

             
PushNotifications.handleTap(userInfo) {viewController in//处理在这里显示返回的viewController}

objective - c

             
(ZDKPushNotifications handleTap完成用户信息ui*_Nullable viewController{//处理在这里显示返回的viewController}]

与Page View事件的关系

触发主动消息传递活动时,将对其进行评估页面视图事件集成.对于用户访问的每个屏幕,正确更新页面查看事件以反映这一点是至关重要的。

例如,假设您有一个活动,当用户在特定产品屏幕上停留30秒时触发该活动。如果用户在25秒后导航到不同的屏幕,并且没有发送后续的页面查看事件,则用户将收到主动消息通知。