theomen
theomen

Reputation: 919

EasyAPNS when fetching queued messages in Production- Empty clientid column

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

Answers (1)

Andrea
Andrea

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

Related Questions