Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从APNS php错误中检索令牌_Php_Iphone_Apple Push Notifications - Fatal编程技术网

从APNS php错误中检索令牌

从APNS php错误中检索令牌,php,iphone,apple-push-notifications,Php,Iphone,Apple Push Notifications,我正在尝试实现APNS-PHP,并发现在我的测试环境中有一些无效的令牌(随着测试设备转移到生产环境中) 我需要从数组中的序列化对象中获取令牌ID,因为我希望捕获此场景并从DB中删除无效令牌。我使用以下代码,但这不起作用: $aErrorQueue = $push->getErrors(); if (!empty($aErrorQueue)) { foreach($aErrorQueue as $error){

我正在尝试实现APNS-PHP,并发现在我的测试环境中有一些无效的令牌(随着测试设备转移到生产环境中)

我需要从数组中的序列化对象中获取令牌ID,因为我希望捕获此场景并从DB中删除无效令牌。我使用以下代码,但这不起作用:

    $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_消息是$error['Message']中的序列化对象,我记不起如何访问该对象中的令牌

变量转储:

[“消息”]=> 对象(APNSHPU消息)#9(8){ [“\u bAutoAdjustLongPayload:protected”]=> 布尔(真) [“\u aDeviceTokens:protected”]=> 数组(1){[0]=>字符串(64) “018E4B9CB8CF73341CE4EBE7138E25E605CD80FB74B3A9701CE5CCA6D9363F3A” }[“\u sText:protected”]=>NULL [“\u nBadge:protected”]=>int(256) [“\u sSound:protected”]=>NULL [“\u aCustomProperties:受保护”]=> NULL[“\u nExpiryValue:受保护”]=> 内部(604800) [“\u mCustomIdentifier:protected”]=> 字符串(17)“Message-Badge-004”}


$error['MESSAGE']->\u aDeviceTokens[0]
\u aDeviceTokens
是受保护的属性,您会发现直接访问此属性将引发异常

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

例如:

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

我才意识到!一个愚蠢的错误,表明我已经有一段时间没有使用PHP了!