从APNS-php错误中检索令牌

时间:2011-04-04 11:09:44

标签: php iphone apple-push-notifications

我正在尝试实施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是$ error ['MESSAGE']中的序列化对象,我不记得如何访问该对象中的令牌......

Var转储:

  

[ “MESSAGE”] =>   object(ApnsPHP_Message)#9(8){   [ “_bAutoAdjustLongPayload:保护”] =>   布尔(真)   [ “_aDeviceTokens:保护”] =>   array(1){[0] =>串(64)   “018E4B9CB8CF73341CE4EBE7138E25E605CD80FB74B3A9701CE5CCA6D9363F3A”   } [“_sText:protected”] =>空值   [ “_nBadge:保护”] => INT(256)   [ “_sSound:保护”] =>空值   [ “_aCustomProperties:保护”] =>   NULL [“_nExpiryValue:protected”] =>   INT(604800)   [ “_mCustomIdentifier:保护”] =>   string(17)“Message-Badge-004”}

2 个答案:

答案 0 :(得分:2)

_aDeviceTokens是受保护的属性,您会发现直接访问此属性会引发异常。

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

例如:

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

答案 1 :(得分:0)

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