我正在开发一款使用推送通知的iOS应用程序,我已经实现了应用程序和服务器端,如果我只发送一两条通知,那么它们可以正常工作。但是当我需要向所有用户发送相同的通知时,问题就出现了,通知只会到达循环中的第一个用户。
我在沙盒环境中,所以我想知道是否有任何限制,因为我已经阅读过APNS服务没有限制的相关资料。
有什么建议吗?
提前感谢您的回复。
更新的解决方案:
我必须检查苹果的响应,我向无效的token发送推送,导致我被苹果从服务器中断开连接。 使用以下函数,我已经解决了这个问题。 感谢@Eran 和 这篇文章。
提前感谢您的回复。
更新的解决方案:
我必须检查苹果的响应,我向无效的token发送推送,导致我被苹果从服务器中断开连接。 使用以下函数,我已经解决了这个问题。 感谢@Eran 和 这篇文章。
/* FUNCTION to check if there is an error response from Apple
* Returns TRUE if there was and FALSE if there was not
*/
public function checkAppleErrorResponse($fp) {
//byte1=always 8, byte2=StatusCode, bytes3,4,5,6=identifier(rowID).
// Should return nothing if OK.
//NOTE: Make sure you set stream_set_blocking($fp, 0) or else fread will pause your script and wait
// forever when there is no response to be sent.
$apple_error_response = fread($fp, 6);
if ($apple_error_response) {
// unpack the error response (first byte 'command" should always be 8)
$error_response = unpack('Ccommand/Cstatus_code/Nidentifier', $apple_error_response);
if ($error_response['status_code'] == '0') {
$error_response['status_code'] = '0-No errors encountered';
} else if ($error_response['status_code'] == '1') {
$error_response['status_code'] = '1-Processing error';
} else if ($error_response['status_code'] == '2') {
$error_response['status_code'] = '2-Missing device token';
} else if ($error_response['status_code'] == '3') {
$error_response['status_code'] = '3-Missing topic';
} else if ($error_response['status_code'] == '4') {
$error_response['status_code'] = '4-Missing payload';
} else if ($error_response['status_code'] == '5') {
$error_response['status_code'] = '5-Invalid token size';
} else if ($error_response['status_code'] == '6') {
$error_response['status_code'] = '6-Invalid topic size';
} else if ($error_response['status_code'] == '7') {
$error_response['status_code'] = '7-Invalid payload size';
} else if ($error_response['status_code'] == '8') {
$error_response['status_code'] = '8-Invalid token';
} else if ($error_response['status_code'] == '255') {
$error_response['status_code'] = '255-None (unknown)';
} else {
$error_response['status_code'] = $error_response['status_code'].'-Not listed';
}
echo '<br><b>+ + + + + + ERROR</b> Response Command:<b>' . $error_response['command'] . '</b> Identifier:<b>' . $error_response['identifier'] . '</b> Status:<b>' . $error_response['status_code'] . '</b><br>';
echo 'Identifier is the rowID (index) in the database that caused the problem, and Apple will disconnect you from server. To continue sending Push Notifications, just start at the next rowID after this Identifier.<br>';
return true;
}
return false;
}
stream_set_blocking($fp, 0)
可能与 TLS 不兼容。 - Ngô Văn Thao