处理推送通知(市区飞艇)

你可以使用Urban Airship在Support SDK中使用推送通知。

Zend亚博esk Support SDK可以设置为当代理对终端用户的请求发布公开评论时通知终端用户。

在开始之前

在开始之前,了解以下信息是有用的:

  • 你可以使用Webhook API或Urban Airship发送推送通知。
  • 如果你已经有推送通知服务,我们建议你使用Webhook API选项。另一方面,如果你没有自己的推送通知服务,或者你不愿意开发一个,你应该使用Urban Airship替代方案。
  • 您只会收到通过Support SDK创建的请求的通知。
  • Zendesk支持中应用程序的配置必须包含所选选项的推送通知细节。亚博
  • 如果从一个集成切换到另一个集成,或者更改身份,请重新注册设备。否则推送通知将无法正常发送。

使用Urban Airship进行推送通知

亚博Zendesk支持通知城市飞艇时,需要发送通知。

对于一个完整的城市飞艇集成,你需要做三件事:

  1. 在您的帐户中配置支持SDK应用程序
  2. 将城市飞艇SDK集成到应用程序中
  3. 设置应用程序来处理推送通知和深度链接
  4. 通知Zende亚博sk关于未注册的设备

帐户配置

在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 preferredLanguagesfirstObjectZDKPushProvider allocinitWith亚博ZendeskZDK亚博Zendesk实例registerWithUAIdentifier标识语言环境现场完成NSString_Nullable registrationResponseNSError_Nullable错误如果错误NSLog无法注册设备:%@。错误:%@在%@"pushIdentifier错误自我其他的如果registrationResponseNSLog@"成功注册的设备:%@在%@"pushIdentifier自我

请注意:我们在NSData上有一个类别,它解析上述委托方法中返回的标识符。请随意使用我们示例应用程序中的这个方法,NSData + ZDKSampleApp.m

要在Zendesk Support中注册推送通知,必须在Support SDK中亚博设置有效的身份。中可能没有准备好的标识,这取决于应用程序的配置方式AppDelegate.我们建议您存储苹果返回的设备标识符,并在标识可用时向Zendesk Support注册推送通知,例如当用户登录到您的应用程序时。亚博

设备时

当用户退出或不再需要推送通知时,调用以下API从Zendesk支持中删除设备标识符:亚博

斯威夫特

             
ZDKPushProvider 亚博(zendesk: Zendesk.instance !) .unregisterForPush ()

objective - c

             
ZDKPushProvider allocinitWith亚博ZendeskZDK亚博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

             
-无效userNotificationCenterUNUserNotificationCenter中心didReceiveNotificationResponseUNNotificationResponse响应withCompletionHandler无效无效completionHandlerNSStringrequestID响应的通知请求内容用户信息@“tid”//在UIViewController内部-无效presentRequestNSStringrequestIDuirequestControllerZDKRequestUi buildRequestUiWithRequestIdrequestID自我导航控制器pushViewControllerrequestController动画是的

刷新评论流

如果评论流是可见的,您可以刷新它。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

             
-无效userNotificationCenterUNUserNotificationCenter中心didReceiveNotificationResponseUNNotificationResponse响应withCompletionHandler无效无效completionHandlerNSStringrequestID响应的通知请求内容用户信息@“tid”如果ZDKSupport实例refreshRequestWithRequestIdrequestID返回其他的//处理推送

如果你只使用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

             
-无效userNotificationCenterUNUserNotificationCenter中心didReceiveNotificationResponseUNNotificationResponse响应withCompletionHandler无效无效completionHandlerNSStringrequestID响应的通知请求内容用户信息@“tid”如果ZDKSupport实例refreshRequestWithRequestIdrequestID返回其他的//处理推送

批量删除设备

城市飞艇有一个反馈API它返回一个令牌列表,这些令牌无法接收推送通知,因为应用程序已被卸载。你也要让我们知道。

您可以对推送通知设备使用批量取消注册端点大量取消注册API注销已删除应用程序或已不再注册的客户的设备。