Reputation: 919
I have alrealy set APNS server with easyAPNS, everything is ok, certificates, permissions, devices are registered correctly, messages are created at messages table. But the issue is that when I try to fetch queded messages, the function in 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);
}
doesn't iterate any messages, because devices and messages clientid column values are empty, so de the clausule (apns_devices
.pid
= apns_messages
.fk_device
AND apns_devices
.clientid
= apns_messages
.clientid
) is never acomplished.
Here is the samples.php snippet code I use to create messages:
$apns->newMessage(4);
$apns->addMessageAlert('Si us plau!!!');
$apns->addMessageCustom('acme2', array('bang', 'whiz'));
$apns->queueMessage();
I really appreciate your help.
Many thanks.
Upvotes: 0
Views: 694
Reputation: 11
I have the same problem. I modified the query in this way:
$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;";
and to send more than 100 messages
$tv_sec = 0;
$tv_usec = 200000;
It seems to work fine.
Upvotes: 1