处理推送通知(市区飞艇)
处理推送通知(市区飞艇)
本页向您展示如何使用城市飞艇的支持SDK使用推送通知。
Zend亚博esk Support SDK可以设置为当代理对终端用户的请求发布公开评论时通知终端用户。
在开始之前
在开始之前,了解以下信息是有用的:
- 你可以使用Webhook API或Urban Airship发送推送通知。
- 如果你已经有推送通知服务,我们建议你使用Webhook API选项。另一方面,如果你没有自己的推送通知服务,或者你不愿意开发一个,你应该使用Urban Airship替代方案。
- 您只会收到通过Support SDK创建的请求的通知。
- Zendesk支持中应用程序的配置必须包含所选选项的推送通知细节。亚博
- 如果从一个集成切换到另一个集成,或者更改身份,请重新注册设备。否则推送通知将无法正常发送。
- 如果设备令牌失效,您将需要注册新的设备令牌,以便继续正确发送推送通知。
使用Urban Airship进行推送通知
亚博Zendesk支持通知城市飞艇时,需要发送通知。
对于一个完整的城市飞艇集成,你需要做四件事:
帐户配置
在Zendes亚博k Support管理界面中,选择城市飞艇中的推送通知组合框中的定制Mobile SDK页签。
Urban Airship凭据显示了两个文本字段。第二点,城市飞艇App Master Secret,尤为重要。确保你使用你的城市飞艇主钥匙。如果你使用城市飞艇应用程序键,推送通知将不会发送。
城市飞艇SDK集成
集成Urban Airship SDK是获得Urban Airship设备令牌的唯一方法(a通道标识用城市飞艇的说法)。一旦你有了通道标识,您可以按照章节的描述注册设备应用程序集成在下面。
中详细描述了该设置城市飞艇安卓指南.
你也可以查看我们的样例应用程序看到一个工作的支持SDK应用程序与城市飞艇SDK集成到它。
应用程序集成
你需要在应用程序代码中处理以下四种场景:
设备注册
您必须向Zendesk Support注册有兴趣接收推送通知的设备。亚博
你需要一个城市飞艇通道标识注册设备。看到城市飞艇SDK集成上面如果你还没有的话。
要注册设备,请发送通道标识通过支持SDK 亚博API到Zendesk支持实例,如下所示:
亚博.实例.提供者().pushRegistrationProvider().registerWithUAChannelId(“< id >频道”,新亚博ZendeskCallback<字符串>(){
@覆盖
公共无效调用onSuccess(字符串的结果){
}
@覆盖
公共无效onError(ErrorResponse ErrorResponse){
}
});
设备时
当用户退出或者不再需要推送通知时,调用下面的API来删除设备标识符(Urban Airship通道标识)来自Zend亚博esk Support:
亚博.实例.提供者().pushRegistrationProvider().unregisterDevice(新亚博ZendeskCallback<无效>(){
@覆盖
公共无效调用onSuccess(最终虚空响应){
}
@覆盖
公共无效onError(ErrorResponse ErrorResponse){
}
});
通知有效载荷处理
要访问推送的有效载荷,请设置一个BaseIntentReceiver
.
更新后的票据的id可以从提供的PushMessage
通过调用:
@覆盖
受保护的布尔onNotificationOpened(上下文语境,PushMessage消息,int notificationId){
...
字符串ticketId=消息.getPushBundle().getString(“tid”);
...
}
当收到通知时,您可以选择使用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.在一个活动/片段中
final Intent deepLinkIntent = new RequestConfiguration.Builder()
.withRequestId (requestId)
.deepLinkIntent (getApplicationContext (), backStackItems);
context.sendBroadcast (deepLinkIntent);
刷新评论流
提供的另一个功能支持。实例
是刷新评论流的可能性,如果它是可见的。
/**
*
*……
*
* @param requestId刷新请求的ID
* @param context应用的上下文
* @如果对话界面在屏幕上刷新,则返回true,否则返回false。
* /
公共布尔refreshRequest(字符串requestId,上下文语境){
例子:
如果(支持.实例.refreshRequest(requestId,getApplicationContext())){
返回;
}其他的{
/ /。显示通知
}
批量删除设备
城市飞艇有一个反馈API它返回一个令牌列表,这些令牌无法接收推送通知,因为应用程序已被卸载。你也要让我们知道。
您可以对推送通知设备使用批量取消注册端点大量取消注册API注销已删除应用程序或已不再注册的客户的设备。