Получение токена из ошибки APNS-php

Я пытаюсь внедрить APNS-PHP и обнаружил, что в моей тестовой среде есть несколько недействительных токенов (поскольку тестовые устройства перешли в производство).

Мне нужно получить идентификатор токена из сериализованного объекта в массиве, так как я хочу поймать этот сценарий и удалить недопустимые токены из БД. Я использую следующий код, но он не работает:

    $aErrorQueue = $push->getErrors();
    if (!empty($aErrorQueue)) {
        foreach($aErrorQueue as $error){            
            foreach($error['ERRORS'] as $err){
                $message .=  $err['statusMessage'] . " ";
                if($err['statusCode'] == 8){
                    $phones = Phone::getPhonesWithToken($error['MESSAGE']['_aDeviceTokens:protected'][0]);
                    Phone::setToken($phones[0]['id'], "");      
                }
            }   
        }
    }

Проблема в том, что APNS_Message является сериализованным объектом в $error['MESSAGE'], и я не могу вспомнить, как получить доступ к токену в этом объекте...

Вар дамп:

["MESSAGE"]=> object(ApnsPHP_Message)#9 (8) { ["_bAutoAdjustLongPayload:protected"]=> bool(true) ["_aDeviceTokens:protected"]=> array(1) { [0]=> string (64) "018E4B9CB8CF73341CE4EBE7138E25E605CD80FB74B3A9701CE5CCA6D9363F3A" } ["_sText:protected"]=> NULL ["_nBadge:protected"]=> int(256) ["_sSound:protected"]=> NULL ["_aCustom"> NProperties:protected ["_nExpiryValue:protected"]=> int(604800) ["_mCustomIdentifier:protected"]=> string(17) "Message-Badge-004" }


person Luuk D. Jansen    schedule 04.04.2011    source источник


Ответы (2)


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

Вместо этого вы должны использовать метод getRecipients() или getRecipient($recipientNumber = 0) для объекта Message для получения токена(ов) устройства.

Например:

$token = $error['MESSAGE']->getRecipient();
person wpearse    schedule 18.04.2013

person    schedule
comment
Я только что понял это! Глупая ошибка, которая показывает, что я некоторое время не использовал PHP! - person Luuk D. Jansen; 04.04.2011