0

すでに APNS サーバーを easyAPNS で設定しています。証明書、アクセス許可、デバイスは正しく登録されており、メッセージ テーブルにメッセージが作成されています。しかし、問題は、キューに入れられたメッセージを取得しようとすると、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 列の値が空であるため、メッセージapns_devicespid反復しません。apns_messagesfk_deviceapns_devicesclientidapns_messagesclientid

メッセージの作成に使用する samples.php スニペット コードを次に示します。

$apns->newMessage(4);
$apns->addMessageAlert('Si us plau!!!');
$apns->addMessageCustom('acme2', array('bang', 'whiz'));
$apns->queueMessage();

本当にありがとうございました。

どうもありがとう。

4

1 に答える 1

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件以上のメッセージを送信する

$tv_sec = 0;

$tv_usec = 200000;

それはうまくいくようです。

于 2012-11-12T15:57:43.043 に答える