处理推送通知(市区飞艇)
处理推送通知(市区飞艇)
你可以使用Urban Airship在Support SDK中使用推送通知。
Zend亚博esk Support SDK可以设置为当代理对终端用户的请求发布公开评论时通知终端用户。
在开始之前
在开始之前,了解以下信息是有用的:
- 你可以使用Webhook API或Urban Airship发送推送通知。
- 如果你已经有推送通知服务,我们建议你使用Webhook API选项。另一方面,如果你没有自己的推送通知服务,或者你不愿意开发一个,你应该使用Urban Airship替代方案。
- 您只会收到通过Support SDK创建的请求的通知。
- Zendesk支持中应用程序的配置必须包含所选选项的推送通知细节。亚博
- 如果从一个集成切换到另一个集成,或者更改身份,请重新注册设备。否则推送通知将无法正常发送。
使用Urban Airship进行推送通知
亚博Zendesk支持通知城市飞艇时,需要发送通知。
对于一个完整的城市飞艇集成,你需要做三件事:
帐户配置
在Zendes亚博k管理界面中,选择城市飞艇中的推送通知组合框中的定制Mobile SDK页签。
Urban Airship凭据显示了两个文本字段。第二点,城市飞艇App Master Secret,尤为重要。确保你使用你的城市飞艇主钥匙。如果你使用城市飞艇应用程序键,推送通知将不会发送。
城市飞艇SDK集成
集成城市飞艇SDK是获得城市飞艇设备标识符(a)的唯一方法通道标识用城市飞艇的说法)。一旦你有了通道标识,您可以按照章节的描述注册设备应用程序集成在下面。
中详细描述了该设置城市飞艇iOS指南.
你也可以查看我们的样例应用程序查看集成了城市飞艇SDK的支持SDK应用程序。
应用程序集成
你需要在应用程序代码中处理以下四种场景:
您还必须启用后台取回而且远程通知在背景模式项目配置中的功能。
设备注册
首先,您需要向用户请求许可,如iOS文档.
斯威夫特
//在应用程序中注册远程通知应用程序:
UAirship.push()。userPushNotificationsEnabled = true
objective - c
//在应用程序中注册远程通知应用程序:
[UAirship推].userPushNotificationsEnabled=是的;
这将导致对应用程序委托的调用didRegisterForRemoteNotificationsWithDeviceToken
方法。你需要一个城市飞艇通道标识注册设备。看到城市飞艇SDK集成上面如果你还没有的话。获得城市飞艇后通道标识你可以用它来注册设备:
斯威夫特
NSLocale.preferredLanguages.first ? ?“en”
ZDKPushProvider 亚博(zendesk: Zendesk.instance !)。register(UAIdentifier: identifier, locale: locale) {(pushResponse, error) in
打印("无法注册设备:\(标识符)。错误:\(错误)”)
}其他{
print("成功注册的设备:\(标识符)")
}
}
objective - c
...
NSString*语言环境=[[NSLocale preferredLanguages]firstObject];
[[[ZDKPushProvider alloc]initWith亚博Zendesk:[ZDK亚博Zendesk实例]]registerWithUAIdentifier:标识语言环境:现场完成:^(NSString*_Nullable registrationResponse,NSError*_Nullable错误){
如果(错误){
NSLog(无法注册设备:%@。错误:%@在%@",pushIdentifier,错误,自我.类);
}其他的如果(registrationResponse){
NSLog(@"成功注册的设备:%@在%@",pushIdentifier,自我.类);
}
}];
...
请注意:我们在NSData上有一个类别,它解析上述委托方法中返回的标识符。请随意使用我们示例应用程序中的这个方法,NSData + ZDKSampleApp.m
.
要在Zendesk Support中注册推送通知,必须在Support SDK中亚博设置有效的身份。中可能没有准备好的标识,这取决于应用程序的配置方式AppDelegate
.我们建议您存储苹果返回的设备标识符,并在标识可用时向Zendesk Support注册推送通知,例如当用户登录到您的应用程序时。亚博
设备时
当用户退出或不再需要推送通知时,调用以下API从Zendesk支持中删除设备标识符:亚博
斯威夫特
ZDKPushProvider 亚博(zendesk: Zendesk.instance !) .unregisterForPush ()
objective - c
[[[ZDKPushProvider alloc]initWith亚博Zendesk:[ZDK亚博Zendesk实例]]unregisterForPush];
通知有效载荷处理
设置委托方法来处理接收到的有效负载如iOS通知编程指南中所述在苹果网站上。
当收到通知时,您可以使用Support-SDK的深度链接功能处理它,也可以自己处理它。如果你选择自己处理,你可以的领取机票而且获取注释使用API提供者。
票深度链接
您可以使用Support SDK的深度链接功能来直接响应通知点击来显示票据。
呈现请求UI
斯威夫特
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler:
@escaping () -> Void) {
let requestID = response.notification.request.content.userInfo["tid"]
}
//在UIViewController内部
func presentRequest(with requestID: String) {
let viewController = RequestUi。buildRequestUi (requestId requestId):
self.navigationController ?。pushViewController(viewController, animated: true)
}
objective - c
-(无效)userNotificationCenter:(UNUserNotificationCenter*)中心didReceiveNotificationResponse:(UNNotificationResponse*)响应withCompletionHandler:(无效(^)(无效))completionHandler{
NSString*requestID=[[[[响应的通知]请求]内容]用户信息[@“tid”]];
}
//在UIViewController内部
-(无效)presentRequest:(NSString*)requestID{
ui*requestController=[ZDKRequestUi buildRequestUiWithRequestId:requestID];
[自我.导航控制器pushViewController:requestController动画:是的];
}
刷新评论流
如果评论流是可见的,您可以刷新它。refreshRequest
返回一个布尔值,表示刷新是否成功,例如用户当时打开了票据。如果它返回false,您将需要自己处理通知。
斯威夫特
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let requestID = response.notification.request.content.userInfo["tid"]
如果Support.instance ?。refreshRequest(请求Id: requestID) {
返回
}其他{
//处理通知
}
}
objective - c
-(无效)userNotificationCenter:(UNUserNotificationCenter*)中心didReceiveNotificationResponse:(UNNotificationResponse*)响应withCompletionHandler:(无效(^)(无效))completionHandler{
NSString*requestID=[[[[响应的通知]请求]内容]用户信息[@“tid”]];
如果([[ZDKSupport实例]refreshRequestWithRequestId:requestID]){
返回;
}其他的{
//处理推送
}
}
如果你只使用API提供者自己创建UI:
斯威夫特
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let requestID = response.notification.request.content.userInfo["tid"]
如果Support.instance ?。refreshRequest(请求Id: requestID) {
返回
}其他{
//处理通知
}
}
objective - c
-(无效)userNotificationCenter:(UNUserNotificationCenter*)中心didReceiveNotificationResponse:(UNNotificationResponse*)响应withCompletionHandler:(无效(^)(无效))completionHandler{
NSString*requestID=[[[[响应的通知]请求]内容]用户信息[@“tid”]];
如果([[ZDKSupport实例]refreshRequestWithRequestId:requestID]){
返回;
}其他的{
//处理推送
}
}
批量删除设备
城市飞艇有一个反馈API它返回一个令牌列表,这些令牌无法接收推送通知,因为应用程序已被卸载。你也要让我们知道。
您可以对推送通知设备使用批量取消注册端点大量取消注册API注销已删除应用程序或已不再注册的客户的设备。