APNS:设备种类有限制吗?

时间:2011-03-14 13:21:44

标签: iphone apple-push-notifications

我正在开发第三方服务器以使用APNS。我的服务器打开与APNS的连接,发送几条消息,然后关闭这样的连接。

$apns = stream_socket_client( ... );

foreach( $data as $row )
{
    SendPush( $apns, $row );
    ...
}

...


fclose( $apns );

我开发了一个带有php的服务器,并用4个设备完成了测试 - iPhone4 * 2和i Pod Touch * 2,然后我发现有些设备错过了它的推崇。

当我尝试使用此序列发送Push时,只有iPhone A收到了推送通知。

  

iPhone A - > iPod A - > iPhone B - > iPod B

按照以下顺序,只有iPod A收到了Push notificaton。

  

iPod A - > iPhone A - > iPod B - > iPhone B

我尝试了这个序列 - iPhone A - > iPhone B - > iPod A - > iPod B,然后iPhone A& B接受推动,但iPod A& B没有。使用iPod A - > iPod B - > iPhone A - > iPhone B,只有iPod受到推动。

我使用SSL证书进行制作。当我每次连接发送一次推送或使用证书进行开发时,没有问题 - 所有设备都很好地收到了他们的推送。为什么会这样?

1 个答案:

答案 0 :(得分:-1)

我认为你应该这样做:

1)启用AppID以使用APNS。用于开发/生产。 2)重新生成您为应用程序签名的配置/分发配置文件。小心,您必须使用使用上述AppID的配置文件。如果您正在开发中运行该应用程序并尝试使用启用了生产的appID进行发送,那么这将不起作用。

3)注意通知流程。服务器将通知发送给APNS,并且APNS将该通知发送给设备,如果该设备处于打开状态,并且&连接到互联网。 如果不是,APNS将不存储队列。如果一个通知失败,则管道中的所有通知都将失败。有一个关于推送通知的WWDC会话视频,您可以用图形方式查看其工作原理。

这意味着你发送到device1,device2和device3(按此顺序)然后你有这个管道(订单)。如果device2处于脱机或关闭状态,则device3也不会收到通知。您必须在服务器端对此进行管理,然后重新发送失败的那些以及跟随它的那些。

我希望这会有所帮助。 抱歉我的英文。

此致

乔治