Наконец, я обнаружил токены песочницы, которые были смешаны с рабочими токенами, и я обновляю код, получаю ответ об ошибке от apple, когда при отправке токена песочницы на apple все следующие токены не работают.... Хотя push-сообщение было "$ payload ['aps'] = array ('content-available' => 1);", Apple будет выдавать сообщение, но устройство не будет показывать это сообщение, когда я найдуНеправильно, я удаляю его и повторно тестирую.
Существует забавная проблема службы уведомлений Apple Push: когда я генерирую почтовое уведомление для своего устройства и отправляю на сервер Apple, на некоторое время, мойустройство получит уведомление.Но если я сначала опубликую уведомление по неправильному токену устройства, а затем опубликую правильное уведомление на моем устройстве, мое устройство будет без ответа, точно так же, как push-уведомление было съедено яблоком?
Что не так с этим?
Я использую php-код для push-службы, вот самая важная часть:
$payload['aps'] = array('content-available' => 1);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $deviceToken) {
break;
}
print_r($deviceToken);
$apnsMessage = chr(1) . $time . $time . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
$ret = fwrite($apns, $apnsMessage);
if ($ret !== strlen($apnsMessage)) {
echo "push error";
}
ob_flush();
flush();
$read = array($apns);
$null = null;
$changedStreams = stream_select($read, $null, $null, 0, 100000);//wait for 0.1s
if ($changedStreams === false) {
echo "Error: Unabled to wait for a stream availability";
} elseif ($changedStreams > 0) {
print "can't receive any notification behind this token";
$responseBinary = fread($apns, 6);
if ($responseBinary !== false || strlen($responseBinary) == 6) {
$response = unpack('Ccommand/Cstatus_code/Nidentifier', $responseBinary);
print_r($response);
}
} else {
//update the success push status in database
}
print "<br>";
}
Я не знаю, что с этим не так, и я также добавил службу обратной связи в другой php, иЯ не могу получить неправильный токен от Apple, потому что у меня в базе данных много токенов устройств, я не могу найти, какой из них неправильный.
Кто-нибудь, помогите мне, простите мой плохой английский