本文将指导您在iOS应用程序中启用Chat SDK的推送通知。

注意:本指南不讨论配置概要文件.如果您计划创建分发证书,请确保在开始本指南之前已配置了供应。开发/沙盒证书可以用Xcode托管配置文件进行测试。

1.使用Apple启用推送通知并生成.p12证书

  1. 登入标识符部份苹果开发者会员中心然后选择你的应用。

  2. 在能力下,启用推送通知然后点击配置

  3. 生产SSL证书中,选择创建证书

  4. 请按照创建证书签名请求在Apple Developer center上使用Keychain Access生成证书签名请求。

  5. Apple Push服务证书生成后,下载并双击在Keychain Access中打开。

  6. 右键单击您创建的证书并选择导出“Apple Developer IOS Push Services…”

  7. 保存.p12文件到您的计算机。密码为空。

  8. 保存. c文件到您的计算机。密码为空。

2.生成.pem文件

生成.pem为你的.p12文件使用OpenSSLpkcs12命令。看到pcks12www.openssl.org.可以将“导入密码”保留为空。

             
$ openssl pkcs12-clcerts-节点-你的p12-你的pem

你的.pem文件应包含证书和私钥部分。它还应该包含<代码数据-garden-id="typography.code" data-garden-version="8.39.0" class="sc-eKYRIR sc-bTDOke bpSbjj iFHZBF">包的属性有关捆绑包标识符、公司名称和其他信息的信息。

例子.pem文件:

             
属性friendlyName苹果服务你的标识符localKeyID<关键数据>主题/UID你的标识符/CN苹果服务你的标识符/0000000/O你的公司/C国家代码发行人/C我们/O苹果公司/苹果在世界范围内开发人员关系/CN苹果在世界范围内开发人员关系认证权威-----开始证书-----<证书数据>-----结束证书-----属性friendlyName开发人员的名字localKeyID<关键数据>关键属性<没有属性>-----开始私人关键-----<私人关键数据>-----结束私人关键-----

3.测试.pem文件

你可以测试.pem文件通过连接到苹果的生产APNS服务器。

             
$ openssl s_client-连接网关苹果com2195-cert你pem-关键你pem

如果你的.pem正确生成,SSL会话将与苹果APNS服务器建立,您将收到返回码<代码数据-garden-id="typography.code" data-garden-version="8.39.0" class="sc-eKYRIR sc-bTDOke bpSbjj iFHZBF">0 == ok

如果您收到不同的代码,请确保重新访问上面的步骤2,或按照响应中的说明进行操作。

来自Apple APNS服务器的响应示例:

             
TLSv1/SSLv3密码DES-CBC3-服务器公共关键2048安全重新谈判支持压缩没有一个扩张没有一个没有ALPN谈判SSL-会话协议TLSv12密码DES-CBC3-会话-ID会话-ID-ctx-关键XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX开始时间1563378474超时7200证券交易委员会验证返回代码0好吧---

4.将.pem文件上传到聊天仪表板

如果你不是聊天管理员,请别人帮你完成这一步。

将.pem文件上传到聊天仪表板

  1. 在“聊天”仪表板中,转到>帐户> API和sdk

  2. 选择仪表盘应用程序并单击选择PEM文件为iOS

  3. 上传你的.pem文件并保存更改。

  4. 此外,还可以启用APNS沙盒复选框以利用沙箱apn环境。

这是一个很好的练习.pem把它放在安全的地方,以防以后需要使用。

注意:在聊天仪表板中启用应用推送通知的完整指南可以在这里找到在这里

5.在你的应用中为聊天SDK设置推送通知

在应用程序中设置推送通知

  1. 打开推送通知在你的目标中功能选项卡。

  2. 打开远程通知在你的目标的背景模式功能选项卡。

    看到苹果公司的文档了解更多关于远程通知及其在后台模式下如何工作的信息。

  3. 在应用程序中设置分发APS环境.entitlements文件,以允许在部署期间使用生产推送证书对应用程序进行签名。

  4. 注册推送通知使用<代码数据-garden-id="typography.code" data-garden-version="8.39.0" class="sc-eKYRIR sc-bTDOke bpSbjj iFHZBF">UNUserNotificationCenter在AppDelegate中只针对该设备。看到为聊天SDK设置应用内推送通知下面实现<代码数据-garden-id="typography.code" data-garden-version="8.39.0" class="sc-eKYRIR sc-bTDOke bpSbjj iFHZBF">UNUserNotificationCenter

    斯威夫特

                   
    进口UserNotifications如果TARGET_IPHONE_SIMULATORnotificationCenterUNUserNotificationCenter当前的notificationCenter委托自我notificationCenterrequestAuthorization选项警报声音徽章授予_警卫队授予其他的返回DispatchQueue主要异步UIApplication共享registerForRemoteNotifications# endif

    objective - c

                   
    进口<UserNotifications/UserNotificationsh>@接口AppDelegateUIResponder<UIApplicationDelegateUNUserNotificationCenterDelegate>如果TARGET_IPHONE_SIMULATORUNUserNotificationCenter中心UNUserNotificationCentercurrentNotificationCenter中心委托自我中心requestAuthorizationWithOptionsUNAuthorizationOptionSound|UNAuthorizationOptionAlert|UNAuthorizationOptionBadgecompletionHandler保龄球授予NSError_Nullable错误如果错误UIApplicationsharedApplicationregisterForRemoteNotifications# endif
  5. 覆盖<代码数据-garden-id="typography.code" data-garden-version="8.39.0" class="sc-eKYRIR sc-bTDOke bpSbjj iFHZBF">func application (_application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)函数。

    聊天v2 - Swift

                   
    进口ChatProvidersSDK函数应用程序_应用程序UIApplicationdidRegisterForRemoteNotificationsWithDeviceToken deviceToken数据闲谈,聊天registerPushTokendeviceToken

    聊天v2 - Objective-C

                   
    @进口ChatProvidersSDK-无效应用程序UIApplication应用didRegisterForRemoteNotificationsWithDeviceTokenNSDatadeviceTokenZDKChatregisterPushTokendeviceToken

    聊天v1 - Swift

                   
    进口闲谈,聊天函数应用程序_应用程序UIApplicationdidRegisterForRemoteNotificationsWithDeviceToken deviceToken数据ZDCChatsetPushTokendeviceToken

    聊天v1 - Objective-C

                   
    进口<ZDCChat/ZDCChath>-无效应用程序UIApplication应用didRegisterForRemoteNotificationsWithDeviceTokenNSDatadeviceTokenZDCChatsetPushTokendeviceToken
  6. 将收到的推送通知传递给Chat SDK。

    聊天v2 - Swift

                   
    进口ChatProvidersSDK函数userNotificationCenter_中心UNUserNotificationCenterdidReceive响应UNNotificationResponsewithCompletionHandler completionHandler@逃离->无效用户信息响应通知请求内容用户信息应用程序UIApplication共享闲谈,聊天didReceiveRemoteNotification用户信息应用程序completionHandler

    聊天v2 - Objective-C

                   
    @进口ChatProvidersSDK-无效userNotificationCenterUNUserNotificationCenter中心didReceiveNotificationResponseUNNotificationResponse响应withCompletionHandler无效completionHandlerZDKChatdidReceiveRemoteNotification用户信息应用程序completionHandler

    聊天v1 - Swift

                   
    进口ZDCChat函数应用程序_应用程序UIApplicationdidReceiveRemoteNotification用户信息AnyHashable任何fetchCompletionHandler completionHandler@逃离UIBackgroundFetchResult->无效ZDCChatdidReceiveRemoteNotification用户信息completionHandlernoData后

    聊天v1 - Objective-C

                   
    进口<ZDCChat/ZDCChath>-无效应用程序UIApplication应用didReceiveRemoteNotificationNSDictionary用户信息fetchCompletionHandler无效UIBackgroundFetchResultcompletionHandlerZDCChatdidReceiveRemoteNotification用户信息completionHandlerUIBackgroundFetchResultNoData

6.为聊天SDK设置应用内推送通知

允许通知显示在您的应用程序通过实现<代码数据-garden-id="typography.code" data-garden-version="8.39.0" class="sc-eKYRIR sc-bTDOke bpSbjj iFHZBF">UNUserNotificationCenterDelegate方法。

斯威夫特

             
进口UserNotifications函数userNotificationCenter_中心UNUserNotificationCenterwillPresent通知UNNotificationwithCompletionHandler completionHandler@逃离UNNotificationPresentationOptions->无效completionHandler警报声音徽章

objective - c

             
进口<UserNotifications/UserNotificationsh>//在AppDelegate.h中将AppDelegate定义为UNUserNotificationCenterDelegate@接口AppDelegateUIResponder<UIApplicationDelegateUNUserNotificationCenterDelegate>-无效userNotificationCenterUNUserNotificationCenter中心willPresentNotificationUNNotification通知withCompletionHandler无效UNNotificationPresentationOptions选项completionHandlercompletionHandlerUNNotificationPresentationOptionAlert|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge