从APNS php错误中检索令牌
我正在尝试实现APNS-PHP,并发现在我的测试环境中有一些无效的令牌(随着测试设备转移到生产环境中) 我需要从数组中的序列化对象中获取令牌ID,因为我希望捕获此场景并从DB中删除无效令牌。我使用以下代码,但这不起作用:从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){
$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了!