在Production- Empty client id列中获取排队消息时的简易APNS

时间:2012-10-18 21:11:12

标签: php mysql objective-c ios5 apple-push-notifications

我已经使用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_devicespid = apns_messagesfk_device AND { {1}}。apns_devices = clientidapns_messages)永远不会被完成。

以下是我用来创建消息的samples.php代码段:

clientid

我非常感谢你的帮助。

非常感谢。

1 个答案:

答案 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

似乎工作正常。