gpt4 book ai didi

php - 通过 PHP 与 APNS 的持久连接

转载 作者:可可西里 更新时间:2023-11-01 04:36:21 25 4
gpt4 key购买 nike

我知道 SO 上有很多帖子可以解决这个问题,不幸的是我在 PHP 编程方面不是那么先进,我有一个问题在其他地方没有得到回答:

Apple Push Notifications 的许多教程都通过 stream_socket_client() 创建连接。但是他们中的大多数都缺少标志“STREAM_CLIENT_PERSISTENT”。这个标志会使连接真正持久吗?如果有,什么时候关闭?文档说它也会在页面重新加载时保持连接。这取决于 session 吗?

没有此标志的版本可以正常工作,但我担心 APNS 会在我输入生产证书等后立即阻止我(描述 here)。提前致谢。

最佳答案

根据 Predefined Constants 上的 PHP 文档,将 STREAM_CLIENT_PERSISTENT 与 APNS 连接一起使用应该在页面加载之间保持连接处于事件状态。这是 APNS 连接的要求,因为它限制您,因为它认为发送有效负载后的任何断开连接都是潜在的拒绝服务攻击。

如果您在总统连接之外的客户端有任何问题,您可能想尝试以下方法,因为这是迄今为止我在 PHP 中看到的处理 APNS 连接的最佳方法。这使用来自 PHPXMLRPC 的客户端,因此您必须下载该软件包。

<?php

include '../vendors/xmlrpc.inc';

$hostName = 'localhost'; # Your services endpoint here.
$rpcPath = '';
$port = 7077;

if($_GET['action'] == 'provisioning')
{
$echoString = new xmlrpcmsg(
'provision',
array(
php_xmlrpc_encode('appid'),
php_xmlrpc_encode('/path/to/certificate.pem'),
php_xmlrpc_encode('sandbox'),
php_xmlrpc_encode(100)
)
);
$continue = TRUE;
}

if($_GET['action'] == 'notify')
{
$echoString = new xmlrpcmsg(
'notify',
array(
php_xmlrpc_encode('paparazzme'),
php_xmlrpc_encode(array('6bcda...', '7c008...')),
php_xmlrpc_encode(array(array("aps" => array("alert" => "Hello User 1" )), array("aps" => array("alert" => "Hello User 2" ))))
)
);
$continue = TRUE;
}

if($continue == true)
{
# Create a client handle and send request
$client = new xmlrpc_client($rpcPath, $hostName, $port);

# A little verbose debug
$client->setDebug(2);

# The response
$response = &$client->send($echoString);

# Check if response is good
if (! $response->faultCode())
print "\nReturned string is: " . php_xmlrpc_decode($response->value()) . "\n";
else
print "An error occurred: \nCode: " . $response->faultCode() . " Reason: '" . htmlspecialchars($response->faultString()) . "'\n";
}

?>

来源:How to get started with APNS for iPhone or iTouch

我想花点时间指出,我没有测试过任何这段代码,我现在没有 iPhone 应用程序来测试它,所以我可以告诉你这是否真的有效。

如果这对您来说可行,我建议您改用 Uban Airship,因为他们确实每月向每个客户提供 250,000 次免费推送,并从那里为您处理与 APN 服务器的连接使用他们的 APIs与您的客户交谈。

关于php - 通过 PHP 与 APNS 的持久连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946865/

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