2011-04-04 109 views
4

我正试图实施APNS-PHP,并发现在我的测试环境中,我有一些无效令牌(随着测试设备转移到产品)。从APNS-php错误中获取令牌

我需要从数组中的序列化对象中获取令牌ID,因为我想捕获此场景并从数据库中删除无效令牌。我使用下面的代码,但是,这并不工作:

$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在$错误[“消息”]序列化对象,我不记得如何访问令牌在对象...

瓦尔转储:

[ “MESSAGE”] => 对象(ApnsPHP_Message)#9(8){ [ “_bAutoAdjustLongPayload:保护”] => 布尔(真) [“_aDeviceTokens:protected”] => 阵列(1){[0] =>串(64) “018E4B9CB8CF73341CE4EBE7138E25E605CD80FB74B3A9701CE5CCA6D9363F3A” } [ “_sText:保护”] => NULL [ “_nBadge:保护”] => INT(256) [“_sSound:保护 “] => NULL [” _aCustomProperties:保护 “] => NULL [” _nExpiryValue:保护 “] => INT(604800) [” _mCustomIdentifier:保护 “] => 串(17)” MESSAGE-徽章-004" }

回答

0

$error['MESSAGE']->_aDeviceTokens[0]

+0

我刚刚意识到!一个愚蠢的错误,并表明我有一段时间没有使用PHP! – 2011-04-04 17:19:17

2

_aDeviceTokens是prote cted属性,你会发现直接访问这个属性会抛出一个异常。

您应该改用对象上的getRecipients()getRecipient($recipientNumber = 0)方法来检索设备令牌。

例如:

$token = $error['MESSAGE']->getRecipient();