2011-04-04 91 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();