七鱼开发文档中心
总览服务端 APIWebiOSAndroid鸿蒙Uniapp微信小程序插件三方接入

消息推送

推送消息

本节说明客服消息或系统推送到达访客端后的接收和处理方式。

APNs推送

注册推送服务

需在 App 启动时注册推送服务:


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //注册 APNS
    if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 10.0) {
        [UNUserNotificationCenter currentNotificationCenter].delegate = self;
        UIUserNotificationType types = UNAuthorizationOptionAlert | UNAuthorizationOptionBadge | UNAuthorizationOptionSound;
        [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:types completionHandler:nil];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    } else if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 8.0) {
        UIUserNotificationType types = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    } else {
        UIRemoteNotificationType types = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge;
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
    }
}

注意 iOS10 及以上系统推送相关 API 变化较大,可分系统做注册处理。

获取到设备的 DeviceToken 后,通过 QYSDK.updateApnsToken: 传给 SDK:

:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    ...
    [[QYSDK sharedSDK] updateApnsToken:deviceToken];
    ...
};...}

使用七鱼回调实现前台推送(海外版不支持)

APP在后台或者被杀死的情况下,客服发送给访客的消息,会通过APNS推送送达手机;APP处于前台激活状态下,APNS不再推送消息,此时可以使用以下回调方法处理:

1、先设置delegate

[[[QYSDK sharedSDK] conversationManager] setDelegate:self];

2、实现协议方法

/**
 *  接收消息
 */
- (void)onReceiveMessage:(QYMessageInfo *)message;

七鱼系统推送(海外版不支持)

七鱼系统推送与苹果的 APNs 推送无关,开发可通过注册推送消息通知回调,获取七鱼推送的消息:

/**
 *  推送消息回调
 */
typedef void(^QYPushMessageBlock)(QYPushMessage *pushMessage);

/**
 *  注册推送消息通知回调
 *
 *  @param block 收到消息的回调
 */
- (void)registerPushMessageNotification:(QYPushMessageBlock)block;

收到服务器返回的消息后,前端可进行自定义界面展示;无论是主动获取的消息还是管理后台主动推送的消息,均采用统一接口回调。

QYPushMessageBlock类的属性说明

属性类型说明
typeQYPushMessageType推送消息的类型0--文本消息,1--富文本消息,2--图片消息
headImageUrlNSString发送方头像图片url
actionTextNSString按钮的标题
actionUrlNSString按钮的跳转URL
textNSString文本消息内容
richTextNSString富文本消息内容
imageUrlNSString图片消息内容
timeNSTimeInterval消息接收时间 单位:毫秒

通知栏提醒

本节说明通知栏提醒、点击跳转和提醒开关等配置。

推送证书

本节说明推送证书制作、配置和上传流程。

创建应用AppID

​

  • 登陆 iOS Dev Center 选择进入 Certificates,Identifiers & Profiles。

  • 点击左栏 iOS Apps IDs ,进入 Identifiers - App IDs 列表。

​

  • 点击右侧 “+” 号,创建 App ID。

开启Push Notification

​

  • 点击创建好的 App,选择 Edit 按钮。
  • 勾选 Push Notifications 功能,点击配置证书按钮,进入配置证书页面。请注意开发证书的种类,开发证书供开发调试使用,生产证书供发布使用。

配置证书

​

  • 在 macOS 系统中点击“钥匙串访问”,生成请求证书。

​

  • 在证书信息中填入常用邮件地址,选择保存到磁盘。

​

  • 在上一节进入的配置证书页,点击 Continue。

​

  • 将刚刚生成的请求证书上传,点击 Generate。

​

  • 完成后下载并打开证书,会将证书自动导入钥匙串。在“钥匙串访问”中“我的证书”里可以找到刚刚导入的证书。

导出推送所需p12文件

  • 选择刚刚导进来的证书,选择右键菜单中的导出选项。

​

  • 保存 p12 文件时,请设置密码,上传证书时需要填写密码。

通过管理系统上传证书

​

  • 进入 管理端-应用-在线系统-在线接入-App,点击按钮 添加一个App。
  • 按图中所示,上传刚刚导出的 p12 文件。
  • 注意选择正确的环境:线上环境使用 Production 证书,Release 包使用;测试环境使用 Sandbox 证书,Debug 包使用。

配置证书

详细的证书制作及上传请参考文档:制作推送证书并在管理后台配置 。

常见问题

本节汇总开发者接入和使用过程中常见问题,并给出对应处理建议。

常见问题

​

  1. 无法正常推送​

检查管理端 App接入 中是否配置过推送证书 p12 文件,此证书是否就是此 App bundleID 关联的推送证书。

检查初始化时填的 AppName 是否和管理端 添加一个App 时填写的 App名称 一致。

检查证书的线上、测试环境是否跟管理后台配置的相同。请注意,若您想同时在 Debug 包和 Release 包中均接收推送消息,应添加两个 App,分别填入不同的名称并上传线上环境和测试环境的证书,同时在注册 AppKey 的地方这样写代码:

#if DEBUG
  //AppKey是企业唯一标识,字符串类型,必填项;AppName是App名称,即七鱼管理后台添加App时填写的App名称;对应云信的Apns推送证书名apnsCername,非必填
    [[QYSDK sharedSDK] registerAppId:Appkey appName:Debug包App名称];
#else
    [[QYSDK sharedSDK] registerAppId:Appkey appName:Release包App名称];
#endif

检查 provisioning profile 是否包含了推送证书。

检查推送证书中是否有 p12 文件。

检查代码调试是否可以获取到 DeviceToken。

使用第三方推送工具(例如 Pusher )检查是否可以正常推送,如果不能,说明可能是证书本身的问题。

​

  1. 可以同时使用第三方推送工具吗

​可以同时使用第三方推送工具和 SDK 的消息推送,两者可以共存,不会有任何冲突。

这篇文档有帮助吗?

目录