我们有一个应用程序在AppStore上,并与注册的推送通知。 他们成功地工作所有的时间,但我们现在试图发送一个“全球性”推,和奇怪的事情发生了。 这是我们在我们的服务器端的PHP文件:
//Loop through tokens in tokenArray
$i = 0;
$t = 0;
foreach($tokenArray as $token)
{
$t++;
// Make notification
$msg = chr(0) . pack('n', 32) . pack('H*', $token) . pack('n', strlen($payload)) . $payload;
// Send
$result;
if($message != null)
{
$result = fwrite($fp, $msg, strlen($msg));
}
if ($result)
$i++;
}
// Close the connection to the server
fclose($fp);
if($i == 0)
{
echo 'The message was not delivered to anyone out of '.$t.'.';
}
else
{
echo 'The message was delivered to '.$i.' out of '.$t.'.';
}
在此之前的代码一直工作,并且它种仍然如此。 所述tokenArray包含令牌表,如在SELECT Token FROM Tokens;
从我们的SQL。 这工作。
在开发过程中,当只有我们自己令牌进行了登记,它总是说:“该消息被送到4全”,尽管我们已经从我们的手机中删除我们的应用程序。 现在我们努力传递给所有≈1100注册标记与此代码。 消息被发送,并且输出是“消息被递送到588总分1194” 而且,我们也未收到通知的自己! 这意味着什么?
约5分钟后,我换了tokenArray使用数组仅包含我自己的令牌,并发送一个新的推动,我收到了一个我的手机上。 我也知道一个事实,即在前面的“tokenArray”的失败“工作”令牌存在(我检查)。
是推送通知机会游戏!? 这是什么意思时if($result)
失败? 还有,为什么它不能超过500次?
证书和.PEM或.p12等等都在努力,我的确从push1到push2唯一不同的是使用另一个表,它是由我的SQL服务器的原始表的克隆。 表2只有我的令牌,和它的工作。 没有其他的变化作出。 只有SELECT Token FROM Tokens2
,后来我证明,在所有令牌Tokens2
中存在的Tokens
,我不知道,如果任何人有推可言,或者如果仍然安装了应用程序的1200的“幸运” 588收到。
是什么原因造成的? 我们不敢发的情况下,一半的另一个已经收到了吧..有一些限制我的速度有多快可以一次发送推? 或者我们在做什么错? 请帮忙,谢谢。