APNS Push PHP неправильный ответ

У нас есть некоторые проблемы с отправкой Pushes через APNS. Как кажется, мы получаем неправильные ответы от Apple. Подтверждение отправлено, но мы получаем ответ об ошибке, который приводит к отправке повторов несколько раз. Кто-нибудь еще испытывал подобные проблемы или я что-то пропустил?

<?php
private function checkAppleErrorResponse($apns, PushToken $token)
{

//byte1=always 8, byte2=StatusCode, bytes3,4,5,6=identifier(rowID). Should return nothing if OK.
$apple_error_response = fread($apns, 6);if ($apple_error_response) {
//unpack the error response (first byte 'command" should always be 8)
$error_response = unpack('Ccommand/Cstatus_code/Nidentifier', $apple_error_response);

if ($error_response['status_code'] == '0') {
$error_response['status_code'] = '0-No errors encountered';
} else if ($error_response['status_code'] == '1') {
$error_response['status_code'] = '1-Processing error';
} else if ($error_response['status_code'] == '2') {
$error_response['status_code'] = '2-Missing device token';
} else if ($error_response['status_code'] == '3') {
$error_response['status_code'] = '3-Missing topic';
} else if ($error_response['status_code'] == '4') {
$error_response['status_code'] = '4-Missing payload';
} else if ($error_response['status_code'] == '5') {
$error_response['status_code'] = '5-Invalid token size';
} else if ($error_response['status_code'] == '6') {
$error_response['status_code'] = '6-Invalid topic size';
} else if ($error_response['status_code'] == '7') {
$error_response['status_code'] = '7-Invalid payload size';
} else if ($error_response['status_code'] == '8') {
$error_response['status_code'] = '8-Invalid token';
} else if ($error_response['status_code'] == '255') {
$error_response['status_code'] = '255-None (unknown)';
} else {
$error_response['status_code'] = $error_response['status_code'] . '-Not listed';
}

if ($token->isExistingUser()) {
$this->logger->error('#cloudalarm User-Id: ' . $token->getAssociatedUser() . ': Something went wrong with APNS pushing , error is ' . $error_response['status_code']);
} else {
$this->logger->error('#cloudalarm  for simple login id ' . $token->getAssociatedUser() . ': Something went wrong with APNS pushing , error is ' . $error_response['status_code']);
}

return true;
}

return false;
}
?>

11

Решение

Я думаю, что вы неправильно понимаете ошибку. Обычно коды ответов предназначены для того, чтобы помочь вам управлять списком. Если вы получаете ошибку «неверный токен», она обычно сопровождается обновленным токеном, удалите неверный токен и вставьте новый вместо него. Имейте в виду, что APNS «пересылает» сообщение автоматически, и уведомление просто для того, чтобы помочь вам оставаться в курсе.

Если вы не получаете обновленный токен, возможно, ваше приложение было удалено и не переустановлено, поэтому токен просто недействителен.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]