我已经使用easyAPNS设置了APNS服务器,一切正常,证书,权限,设备都正确注册,消息在消息表中创建。但问题是,当我尝试获取quored消息时,class_APNS.php中的函数:
private function _flushMessages(){
// only send one message per user... oldest message first
$sql = "SELECT
`apns_messages`.`pid`,
`apns_messages`.`message`,
`apns_devices`.`devicetoken`,
`apns_devices`.`development`
FROM `apns_messages`
LEFT JOIN `apns_devices` ON (`apns_devices`.`pid` = `apns_messages`.`fk_device` AND `apns_devices`.`clientid` = `apns_messages`.`clientid`)
WHERE `apns_messages`.`status`='queued'
AND `apns_messages`.`delivery` <= NOW()
AND `apns_devices`.`status`='active'
ORDER BY `apns_messages`.`created` ASC
LIMIT 100;";
$this->_iterateMessages($sql);
}
不会迭代任何消息,因为设备和消息clientid列值为空,所以de clausule(apns_devices
。pid
= apns_messages
。fk_device
AND { {1}}。apns_devices
= clientid
。apns_messages
)永远不会被完成。
以下是我用来创建消息的samples.php代码段:
clientid
我非常感谢你的帮助。
非常感谢。
答案 0 :(得分:1)
我有同样的问题。 我用这种方式修改了查询:
$sql = "SELECT
apns_messages
.pid
,
apns_messages
.message
,
apns_devices
.devicetoken
,
apns_devices
.development
FROM apns_messages
LEFT JOIN apns_devices
ON (apns_devices
.clientid
= apns_messages
.clientid
)
WHERE apns_messages
.status
='queued'
AND apns_messages
.delivery
<= NOW()
AND apns_devices
.status
='active'
ORDER BY apns_messages
.created
ASC
LIMIT 1000;";
并发送超过100条消息
apns_messages
pid
apns_messages
似乎工作正常。