处理推送通知(Webhook API)
处理推送通知(Webhook API)
本页面向您展示如何使用Webhook API使用Support SDK的推送通知。
Zend亚博esk Support SDK可以设置为当代理对终端用户的请求发布公开评论时通知终端用户。
在开始之前
在开始之前,了解以下信息是有用的:
- 你可以使用Webhook API或Urban Airship发送推送通知。
- 如果你已经有推送通知服务,我们建议你使用Webhook API选项。另一方面,如果你没有自己的推送通知服务,或者你不愿意开发一个,你应该使用Urban Airship替代方案。
- 您只会收到通过Support SDK创建的请求的通知。
- Zendesk支持中应用程序的配置必须包含所选选项的推送通知细节。亚博
- 如果从一个集成切换到另一个集成,或者更改身份,请重新注册设备。否则推送通知将无法正常发送。
- 如果您使用相同的JWT标识注册了多个设备,这些设备都将被添加到该标识的活动设备列表中,以便您可以向多个设备发送推送通知。
- 如果设备令牌失效,您将需要注册新的设备令牌,以便继续正确发送推送通知。
使用Webhook API来推送通知
亚博当需要发送通知时,Zendesk Support会通知您设置的端点。在此之后,您的服务必须处理为最终用户的设备发送推送通知。
您必须设置一个推送通知服务,然后在应用程序端注册一个终端用户对接收推送通知的兴趣。
当Zend亚博esk Support向最终用户发送通知时,它会发送一个帖子
请求到应用配置中设置的URI。
对于一个完整的webhook集成,你需要做三件事:
帐户配置
在Zendes亚博k支持管理界面中,在推送通知组合框中选择“Webhook”选项定制“Mobile SDK”页签。
系统将提示您提供webhook URI。
服务器集成
Webhook API
如上所述,Zendesk Support亚博向服务的URI发送一个HTTP POST请求。有效载荷是这样的:
帖子[your_push_notification_callback_uri];
内容-类型:应用程序/json
接受:应用程序/json
{
“设备”:[
{
“标识符”:“oiuytrdsdfghjk”,
“类型”:“苹果”
},
{
“标识符”:“iuytfrdcvbnmkl”,
“类型”:“android”
}
],
“通知”:{
“身体”:特工回答什么什么,
“标题”:“代理说”,
“ticket_id”:“5”
}
}
请求体是一个JSON对象,包含以下参数:
的名字 | 类型 | 评论 |
---|---|---|
设备 | 数组 | 设备列表 |
通知 | 对象 | 通知的详细信息 |
设备
解析设备
数组获取需要接收推送通知的设备。
的名字 | 类型 | 评论 |
---|---|---|
标识符 | 字符串 | 通过Support SDK注册的设备标识符/令牌 |
类型 | 字符串 | 设备类型。可选值:ios或android |
通知
使用通知
对象来传递消息的标题或正文,或者您可以自己对其进行自定义。如果你想让客户端应用程序处理深度链接,传递ticket_id
值。
的名字 | 类型 | 评论 |
---|---|---|
标题 | 字符串 | 通知的短消息 |
身体 | 字符串 | 通知的长消息 |
ticket_id | 字符串 | 更新的票据标识符。把这个传下去亚博zendesk_sdk_request_id 如果你想要票深链接在应用程序 |
请注意:作为最佳实践,提供一个不可猜测的回调URL,并确保您可以轻松更改它。
设备删除
Firebase云消息(FCM)会让您知道用户是否已从推送通知中注销。你也要让我们知道。
您可以使用推送通知设备大量取消注册API删除已删除应用或已不再注册的客户的设备。
应用程序集成
你需要在应用程序代码中处理以下四种场景:
设备注册
您需要向Zendesk Support注册有兴趣接收推送通知的设备。亚博
首先,通过以下指南从谷歌在Android上实现FCM客户端:在Android上实现FCM客户端.FCM API将在注册后发出一个id。
其次,通过Zendesk API将id发送给Zendes亚博k Support实例来注册设备:
亚博.实例.提供者().pushRegistrationProvider().registerWithDeviceIdentifier(结果,新亚博ZendeskCallback<字符串>(){
@覆盖
公共无效调用onSuccess(字符串的结果){
}
@覆盖
公共无效onError(ErrorResponse ErrorResponse){
}
});
设备时
当用户退出或不再需要推送通知时,调用以下API从Zendesk支持中删除设备标识符:亚博
亚博.实例.提供者().pushRegistrationProvider().unregisterDevice(新亚博ZendeskCallback<无效>(){
@覆盖
公共无效调用onSuccess(最终虚空响应){
}
@覆盖
公共无效onError(ErrorResponse ErrorResponse){
}
});
通知有效载荷处理
设置你的BroadcastReceiver
或IntentService
接收和处理推送通知。从给定的意图中提取有效负载并显示通知.
当收到通知时,您可以选择使用Support SDK的深度链接功能来处理通知或自己处理通知。如果您选择自己处理它,您可以检索票据并使用API提供程序获取它的注释。请参阅Support SDK JavaDocs中的以下主题:
票深度链接
您可以使用Support SDK的深度链接功能来直接响应通知点击来显示票据。
获得意图
使用RequestConfiguration
构建器得到一个深层链接意图
为您通知的内容意图。所提供的方法之一亚博ZendeskDeepLinking。实例
来获取一个Intent。
最后意图mainActivity=新意图(getApplicationContext(),MainActivity.类);
mainActivity.putExtra(MainActivity.EXTRA_VIEWPAGER_POSITION,MainActivity.VIEWPAGER_POS_HELP);
最后ArrayList<意图>backStackItems=新ArrayList<>();
backStackItems.添加(mainActivity);
最后意图deepLinkIntent=新RequestConfiguration.构建器()
.withRequestId(requestId)
.deepLinkIntent(getApplicationContext(),backStackItems);
为了保持导航流,您可以指定一个回堆栈意图列表。如果用户按下返回按钮,这些活动就会显示出来。确保提供的意图是明确的意图.
使用意图
返回的Intent调用BroadcastReceiver
它处理进一步的深层链接过程。
1.通知
最后意图deepLinkIntent=新RequestConfiguration.构建器()
.withRequestId(requestId)
.deepLinkIntent(getApplicationContext(),backStackItems);
最后PendingIntentcontentIntent=PendingIntent.getBroadcast(
上下文,{requestCode},deepLinkIntent,{旗帜}
);
最后通知通知=新NotificationCompat.构建器(上下文)
...
.setContentIntent(contentIntent)
...
.构建();
2.在一个活动/片段中
最后意图deepLinkIntent=新RequestConfiguration.构建器()
.withRequestId(requestId)
.deepLinkIntent(getApplicationContext(),backStackItems);
上下文.sendBroadcast(deepLinkIntent);
刷新评论流
提供的另一个功能支持。实例
是刷新评论流的可能性,如果它是可见的。
/**
*
*……
*
* @param requestId刷新请求的ID
* @param context应用的上下文
* @如果对话界面在屏幕上刷新,则返回true,否则返回false。
* /
公共布尔refreshRequest(字符串requestId,上下文语境){
例子:
如果(支持.实例.refreshRequest(requestId,getApplicationContext())){
返回;
}其他的{
/ /。显示通知
}