即时通讯
  • iOS : Objective-C
  • Android
  • macOS
  • Windows
  • Web
  • 小程序
  • Flutter
  • Unity3D
  • uni-app
  • React Native
  • 产品简介
  • 下载
  • 快速开始
    • 跑通示例源码
    • 实现基本消息收发
  • 用户相关
  • 房间相关
  • 群组相关
  • 消息相关
  • 呼叫邀请
  • 会话管理
  • 离线推送
  • 常见错误码
  • 服务端 API
  • 客户端 API
  • 常见问题

自定义点击通知获取 payload 字段

更新时间:2023-02-14 10:56

功能简介

离线推送发送端通过配置 ZIMPushConfig 的 payload 参数(2.5.0 之前版本为 extendedData 参数)向接收端发送额外信息,接收端需使用 ZPNs SDK 时,通过厂商通道的 extras 里面的 payload 字段获取该信息。

本文档介绍了如何使用 ZPNs SDK 的接口,获取 payload 透传字段。

前提条件

在获取 payload 透传字段之前,请确保:

  • 请确保开发环境满足以下要求:

    • Xcode 7.0 或以上版本。
    • iOS 10.0 或以上版本的 iOS 真机设备。
    • iOS 设备已经连接到 Internet。
  • 已在 ZEGO 控制台 创建项目,获取到了接入 ZIM SDK 服务所需的 AppID、AppSign。ZIM 服务权限不是默认开启的,使用前,请先在 ZEGO 控制台 自助开通 ZIM 服务(详情请参考控制台的 服务配置 - 即时通讯 - 开通服务),若无法开通 ZIM 服务,请联系 ZEGO 技术支持开通。

  • 已集成 ZIM SDK,详情请参考 快速开始 - 实现基本收发消息 的 “2 集成 SDK”。

  • 已集成 ZPNs SDK,详情请参考 实现离线推送

  • 已在控制台配置离线推送证书。

实现流程

  1. 实现 ZPNsNotificationCenterDelegate 协议中的以下方法:
// 应用在前台时收到离线推送,触发该方法
-(void)ZPNsNotificationCenter:(UNUserNotificationCenter *)center
      willPresentNotification:(UNNotification *)notification
                     userInfo:(NSDictionary *)userInfo
        withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler API_AVAILABLE(ios(10.0)){
    [userInfo objectForKey:@"payload"];
}

// 用户点击离线推送通知时,触发该方法
-(void)ZPNsNotificationCenter:(UNUserNotificationCenter *)center
    didReceiveNotificationResponse:(UNNotificationResponse *)response
                     userInfo:(NSDictionary *)userInfo
             withCompletionHandler:(void(^)(void))completionHandler API_AVAILABLE(ios(10.0)){
    [userInfo objectForKey:@"payload"];
}
  1. 将实现该协议的对象通过 setZPNsNotificationCenterDelegate 方法传入 ZPNs,从上述方法取出的 "payload" 字段获得额外信息,进而实现您的业务逻辑即可。
[[ZPNs shared] setZPNsNotificationCenterDelegate:(id)yourObject];