gpt4 book ai didi

ios - Apple 推送通知限制

转载 作者:可可西里 更新时间:2023-11-01 03:41:58 24 4
gpt4 key购买 nike

我正在开发一个使用推送通知的 iOS 应用程序,我已经实现了应用程序和服务器端,如果我只发送一两个通知,它会很好用。当我需要向我的所有用户发送相同的通知时,问题就来了,通知只到达循环的第一批用户。我在沙盒中,所以我想知道沙盒环境是否有任何限制,因为我已经阅读过 APNS 服务没有限制。有什么想法吗?

提前致谢

更新的解决方案:

我必须检查 Apple 的响应,我正在向无效 token 发送推送,Apple 将我与服务器断开连接。使用以下功能我已经解决了这个问题。谢谢@Eran 和 this post

/* 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>&nbsp;&nbsp;&nbsp;Identifier:<b>' . $error_response['identifier'] . '</b>&nbsp;&nbsp;&nbsp;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;
}

最佳答案

可能的问题是您使用的某些设备 token 无效(请记住,生产设备 token 在沙盒环境中无效,反之亦然)。向无效设备 token 发送通知将关闭您与 APN 服务器的套接字。在您打开一个新套接字之前,所有在无效套接字之后写入该套接字的通知都将被丢弃。

您可以尝试读取 Apple 的错误响应,找出哪个设备 token 无效。

您绝对应该阅读 Tech Note 的错误检查部分这里的其他人已经提到了这一点。

关于ios - Apple 推送通知限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17699715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com