appid: Q01WRqsMva3XBwcC3n6YH4Gd
IOS 设备token:23d181ad4d064eb02a6045afadfa14e0184eb39f8991f93761d349d14fcb850c
首先使用默认离线推送设置:{"alert":"您有新的消息", "badge":"Increment"},收不到推送
然后使用 _receiversOffline 函数,打印日志正常,还是收不到推送

设备注册了自定义证书:PTSXX

在线推送测试,使用开发者证书 或者 自定义证书 推送 都能收到!!!!!

求助!!!!

请问收不到推送的clientId是什么?

clientId?
是不是指这个? [self.client openWithClientId:_clientID]
自定义的: 23ae1ab5-6410-418d-a8c8-78729ad64e95

可否贴一下云函数代码 以及日志打印出来的内容?谢谢

代码:
var params = request.params;
console.log("push params==========>");
console.log(params);
var json = {
// 自增未读消息的数目,不想自增就设为数字
badge: "Increment",
//sound: "default",
// 使用开发证书
//_profile: "PTSXX",
// content 为消息的实际内容
alert: "您有新的消息"
};

var pushMessage = JSON.stringify(json);

response.success({"pushMessage": pushMessage});

日志:
push params==========>
INFO 2015-12-09 14:21:30 { offlinePeers: [ '23ae1ab5-6410-418d-a8c8-78729ad64e95' ],
INFO 2015-12-09 14:21:30 convId: '5667b6b560b2d140a976e4a0',
INFO 2015-12-09 14:21:30 groupId: null,
INFO 2015-12-09 14:21:30 content: '{"allContent":"44444444","isMucMsg":false,"isOverTime":false,"msgTime":"2015-12-09 14:21:28","msgType":1,"recvID":"23ae1ab5-6410-418d-a8c8-78729ad64e95","recvName":"倩倩","recvPhoto":"","recvUType":1,"state":false,"status":2,"stuID":"74ace0ce-8e59-450d-83df-a480e5179c07_temp","userName":"技术支持","userPhoto":"/UploadFile/Teacher/0d81a477-0e48-4231-bb46-3888e55a4d2f/2013/10/15/s_418759953228801.jpg","userType":1}',
INFO 2015-12-09 14:21:30 timestamp: 1449642090122,
INFO 2015-12-09 14:21:30 fromPeer: '74ace0ce-8e59-450d-83df-a480e5179c07_temp',
INFO 2015-12-09 14:21:30 bin: false }

实时消息查询出来
用户 23ae1ab5-6410-418d-a8c8-78729ad64e95 离线,未读消息数 3

云函数应该是没有问题的,这么写可以。
问题在于 23ae1ab5-6410-418d-a8c8-78729ad64e95 这个用户是否登陆过?或者登陆之后调用过 close 退出登录状态了。

可以在控制台 Installation 表中找到 23d181ad4d064eb02a6045afadfa14e0184eb39f8991f93761d349d14fcb850c 这个设备的记录,channels 中应该是没有 23ae1ab5-6410-418d-a8c8-78729ad64e95 这个字段的。

使用 23ae1ab5-6410-418d-a8c8-78729ad64e95 调用 open 进行登录成功之后,在 Installation 表中对应设备的 channels 下会填入 client id,之后发推送的时候我们会拿着 client 到 Installation 中去查找。如果 channels 中没有目标 client id 就无法发送推送的。

我手动将 Installation 表中那条数据删除了,客户端重新登录或者 AVInstallation 重新订阅,怎么都没有新增数据了???

可否先建立 Installation ?参看:https://leancloud.cn/docs/ios_push_guide.html#保存_Installation

请将App卸掉重装,AVInstallation会重新记录。

好像只有卸载重新安装才会重新记录
跟踪发现保存时报错了
verify-channels will throw an exception.

我的channels 名字有问题么???

你好,channel 只允许数字和英文字符,可以自行做一次md5。

这个文档里面一点没说呢....

抱歉文档不太全面,我们稍后补充。

同样的代码,写在其他地方就是对的
AVInstallation *currentInstallation = [AVInstallation currentInstallation];
[currentInstallation addUniqueObject:@"ok1111111111" forKey:@"channels"];
[currentInstallation saveInBackground];

写在聊天登录成功回调里面就报错verify-channels will throw an exception

[self.client openWithClientId:_clientID tag:@"ios" callback:^(BOOL succeeded, NSError *error) {
AVInstallation *currentInstallation = [AVInstallation currentInstallation];
[currentInstallation addUniqueObject:@"ok1111111111" forKey:@"channels"];
[currentInstallation saveInBackground];
}]

找到问题了,就是id 的问题
23ae1ab5-6410-418d-a8c8-78729ad64e95
订阅的时候去掉ID中的横线就对的,
聊天用这个id则没有问题,所以聊天登录成功,订阅频道失败了.

太坑了,这个订阅主题字符串限制能去掉吗?

你好,以后可能会更改,但是短时间内不会更改。