2

有了这个PHP代码:发送推送通知没有中间件(如PHP)

<?php 
$apnsHost = 'gateway.sandbox.push.apple.com'; 
$apnsCert = 'apns-dev.pem'; 
$apnsPort = 2195; 

$streamContext = stream_context_create(); 
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); 

$payload['aps'] = array('alert' => 'Oh hai!', 'badge' => 1, 'sound' => 'default'); 
$output = json_encode($payload); 
$token = pack('H*', str_replace(' ', '', $token)) 
$apnsMessage = chr(0) . chr(0) . chr(32) . $token . chr(0) . chr(strlen($output)) . $output; 
fwrite($apns, $apnsMessage); 

socket_close($apns); 
fclose($apns); 

?> 

您可以使用PHP发送推送通知。从AIR桌面客户端,我可以轻松地将POST变量传递给类似的代码,并使用AS3 + PHP发送通知。

问题:理论上只有使用AS3和AIR(没有PHP)才能做到这一点吗?有没有人试过?除了防火墙问题,最终会导致什么问题呢?谢谢。

+0

您是否在谈论直接在客户端之间推送通知? – weltraumpirat

+0

我只是想知道,如果我可以将上面的PHP代码转换为AS3(是的,直接从AIR桌面应用程序打开套接字)。 – AsTheWormTurns

+0

您可以在ActionScript中使用XMLSocket http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/XMLSocket.html,但是在哪里可以打开套接字?你仍然需要服务器端代码... – weltraumpirat

回答

1

NetGroup类对此非常理想。您可以将任何您想要的设备A发送到设备B,反之亦然,甚至可以发送多个设备。它的工作原理类似于聊天室,但不限于字符串。

如果设备不在同一网络上,需要通过Adobe Cirrus服务器(免费用于测试和非商业用途)或其他FMS服务器(如Adobe或Amazon托管服务或您自己的服务器)。一旦推出,它们通常通过rtmfp安全对等协议直接与对方通信,该协议可以穿越几乎所有的防火墙。在极少数情况下,他们不能直接连接FMS服务器可以中继消息。

+0

从代码中可以看出,我没有直接联系其他设备:代码使用套接字连接到服务器,然后服务器向设备发送通知(如果此服务器确认您可以:这就是.pem文件的原因)。 – AsTheWormTurns