先进的集成
先进的集成
可点击链接委托
当用户点击发送到对话中的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中:
斯威夫特
- 为
消息传递
.
message .delegate = self
- 在委托方法中处理URL
messaging(_ 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
- 为
ZDKMessaging
.
ZDKMessaging.委托=自我
- 在委托方法中处理URL
—(BOOL)messaging:(ZDKMessaging * _Nonnull)messaging shouldHandleURL:(NSURL * _Nonnull)URL from:(enum ZDKURLSource)source
.
-(保龄球)消息传递:(ZDKMessaging*_Nonnull)消息传递shouldHandleURL:(NSURL*_Nonnull)URL从:(枚举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”completionHandler:^(ZDK亚博ZendeskUser*_Nullable用户,NSError*_Nullable错误){
/ /……
}];
LogoutUser
要取消对用户的身份验证,请调用logoutUser
API。
这主要用于经过身份验证的用户,但呼叫logoutUser
对于未经身份验证的用户,将清除他们的所有数据,包括他们的对话历史记录。请注意,我们无法恢复这些数据,因此仅将其用于测试目的。下次未经身份验证的用户进入对话屏幕时,将为他们创建一个新用户和对话。
斯威夫特
的结果logoutUser
可在可选中观察completionHandler
.
亚博Zendesk.instance ?。logoutUser{result in
切换结果{
案例.success:
/ /……
Case .failure(let error):
/ /……
}
}
objective - c
亚博*实例=(亚博Zendesk实例];
(实例logoutUserWithCompletionHandler:^(NSError*_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实例];
//创建一个PageView
ZDKPageView*页面浏览人数=((ZDKPageView alloc]initWithPageTitle:@“页面标题”url:@“www.example.com”];
(亚博zendesk sendPageViewEvent:页面浏览人数completionHandler:^(NSError*错误){
如果(错误! =零){
//处理错误
}
}];
积极的消息
主动消息传递可以在触发预定义条件时,通过移动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秒后导航到不同的屏幕,并且没有发送后续的页面查看事件,则用户将收到主动消息通知。