检查证书的线上、测试环境是否跟管理后台配置的相同。请注意,若您想同时在 Debug 包和 Release 包中均接收推送消息,应添加两个 App,分别填入不同的名称并上传线上环境和测试环境的证书,同时在注册 AppKey 的地方这样写代码:
if DEBUG
[[QYSDK sharedSDK] registerAppId:Appkey appName:Debug包App名称];
else
[[QYSDK sharedSDK] registerAppId:Appkey appName:Release包App名称];
endif
重点!!!!!
推送开发证书需要建一个开发的应用比如:weixin_dev
推送生产证书需要建一个生产的应用比如: weiixin_pro
根本原因在于七鱼客服后台上传对应应用的证书只能选择测试环境或者生产环境,所以需要每个环境对应不同的证书和新的应用;
最后附上自己检查推送收不到的全部可能问题:
常见问题
-
无法正常推送
检查管理端 App接入 中是否配置过推送证书 p12 文件,此证书是否就是此 App bundleID 关联的推送证书。
检查初始化时填的 AppName 是否和管理端 添加一个App 时填写的 App名称 一致。
-
检查证书的线上、测试环境是否跟管理后台配置的相同。请注意,若您想同时在 Debug 包和 Release 包中均接收推送消息,应添加两个 App,分别填入不同的名称并上传线上环境和测试环境的证书,同时在注册 AppKey 的地方这样写代码:
#if DEBUG [[QYSDK sharedSDK] registerAppId:Appkey appName:Debug包App名称]; #else [[QYSDK sharedSDK] registerAppId:Appkey appName:Release包App名称]; #endif
检查 provision profile 是否包含了推送证书。
检查推送证书中是否有 p12 文件。
检查代码调试是否可以获取到 DeviceToken。
使用第三方推送工具(例如 Pusher )检查是否可以正常推送,如果不能,说明可能是证书本身的问题。
-
可以同时使用第三方推送工具吗
- 可以同时使用第三方推送工具和 SDK 的消息推送,两者可以共存,不会有任何冲突。
-
能否区分出哪些推送消息是来自七鱼的
- 所有来自七鱼的推送消息中
payload
都带有nim:1
,以此可判断是否为七鱼的推送消息。
- 所有来自七鱼的推送消息中
#七鱼系统推送
七鱼系统推送与苹果的 APNs 推送无关。开发者可以主动要求服务器推送指定ID的消息,调用[QYSDK sharedSDK]
单例接口:
/**
* 获取推送消息
*
* @param messageId 消息id
*/
- (void)getPushMessage:(NSString *)messageId;
同时,需注册推送消息通知回调:
/**
* 推送消息回调
*/
typedef void(^QYPushMessageBlock)(QYPushMessage *pushMessage);
/**
* 注册推送消息通知回调
*
* @param block 收到消息的回调
*/
- (void)registerPushMessageNotification:(QYPushMessageBlock)block;
收到服务器返回的消息后,进行界面展示;无论是主动获取的消息还是管理后台主动推送的消息,均采用统一接口回调。