最後,我發現了沙箱標記,它與生產標記混合在一起,我更新代碼,接收來自蘋果的錯誤響應,將沙箱標記發佈到蘋果時,下一個令牌都失敗了......雖然推消息是「$ payload ['aps'] = array('content-available'=> 1);」,蘋果會推送消息,但設備不會顯示此消息,當我找到錯誤的,我刪除它,並重新測試。Iphone推送通知錯誤的設備令牌
有蘋果推送通知服務的一個有趣的問題: 當我爲我的設備後通知發送到蘋果的服務器,有一陣子,我的設備將收到通知。 但是,如果我第一次發佈錯誤devicetoken的通知,然後將正確的通知發佈到我的設備,我的設備將無響應,就像推送通知被蘋果吃掉一樣?
這有什麼問題?
我使用PHP代碼的推送服務,這裏是最重要的部分:
$payload['aps'] = array('content-available' => 1);
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
foreach ($line as $deviceToken) {
break;
}
print_r($deviceToken);
$apnsMessage = chr(1) . $time . $time . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;
$ret = fwrite($apns, $apnsMessage);
if ($ret !== strlen($apnsMessage)) {
echo "push error";
}
ob_flush();
flush();
$read = array($apns);
$null = null;
$changedStreams = stream_select($read, $null, $null, 0, 100000);//wait for 0.1s
if ($changedStreams === false) {
echo "Error: Unabled to wait for a stream availability";
} elseif ($changedStreams > 0) {
print "can't receive any notification behind this token";
$responseBinary = fread($apns, 6);
if ($responseBinary !== false || strlen($responseBinary) == 6) {
$response = unpack('Ccommand/Cstatus_code/Nidentifier', $responseBinary);
print_r($response);
}
} else {
//update the success push status in database
}
print "<br>";
}
我不知道什麼是錯,而我也在另一個PHP添加反饋服務,並獲得無錯令牌來自蘋果,因爲我的數據庫中有很多devicetoken,所以我找不到哪一個是錯誤的。
有人幫助我,原諒我的英語不好
是「錯誤deviceToken」有一個正確的格式?蘋果如何「長期」「禁止」你? (幾個通知或1分鐘?) – 2012-02-07 03:29:06
錯誤devicetoken是我測試應用程序時的沙箱令牌,當我向沙箱發送沙箱令牌時,下一個令牌全部失敗。 – carl 2012-02-07 09:11:38
如果以下所有令牌都失敗了,那麼如何獲得「unbanned」?以便您可以再次向Apple發送令牌(錯誤或正確)? – 2012-02-08 04:55:29