小编jes*_*ssn的帖子

APNs消息已发送但未在iOS设备上接收

我已经建立了一个转发/调度服务,它按照苹果的声明/推荐与APN保持开放连接,以防止DoS检测并且证书正在运行......

我连接成功,消息发送成功,但iOS设备(iPhone)上没有收到消息......(?!?)发送的字节数等于fwrite返回的字节数(字节数).

最后,消息可能包含国家/地区特定字符.APN如何处理?以及如何将这些字符发送到APNs服务器?

无论是否有转发服务,我都试过了,但没有运气.:-(

所有对日志的调用都会在代码段中删除,以避免混淆.这意味着粘贴的日志消息无法直接映射到代码片段,但应该可以"猜测"日志消息的来源.

请帮我解决这些问题.提前致谢

以这种方式建立连接:

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $certPath);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passPhrase);
$this->apn_link = stream_socket_client($url, $err, $errstr, 60,                                       STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx);
/* ... */
Run Code Online (Sandbox Code Playgroud)

在侦听转发服务的套接字的循环内:

foreach ($changed as $changed_socket) {
    while(isset($changed_socket) && socket_recv($changed_socket, $buf, 1024, 0) >= 1)
    {
        $buf = trim($buf);
        if ($buf != '') {
            $this->msg2apn($buf);
        }
    }
}
/* ... */
Run Code Online (Sandbox Code Playgroud)

我还以这种方式发送消息:

public function msg2apn($msg) {
if (isset($this->apn_link)) {
    while(!$result = fwrite($this->apn_link, $msg, strlen($msg))) {
        usleep(400000); //400 msec
    }

    if …
Run Code Online (Sandbox Code Playgroud)

php apple-push-notifications ios

2
推荐指数
1
解决办法
4825
查看次数

标签 统计

apple-push-notifications ×1

ios ×1

php ×1