PHP Apple iOS推送通知:Command2:二进制接口和通知格式

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP Apple iOS推送通知:Command2:二进制接口和通知格式脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如今,使用Command 2的 PHP和Apple / ios推送通知已经变得越来越流行.但是不确定,如何准备相同的格式,按照 Apple guideline here,如何实现以下数据包格式:

另外想知道,如何接收错误响应数据包的格式如下所述:

目前,我使用以下简单格式:

$msg = 
// new: Command "1"
chr(1)
// new: Identifier "1111"
. chr(1) . chr(1) . chr(1) . chr(1)
// new: Expiry "tomorrow"
. pack('N',time() + 86400)
// old 
. chr(0) . chr(32) . pack('H*',str_replace(' ','',$deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;

fwrITe($fp,$msg,strlen($msg));

解决方法

//command 2
$msginner =
  chr(1)
. pack('n',32)
. pack('H*',$deviceToken)

. chr(2)
. pack('n',strlen($payload))
. $payload

. chr(3)
. pack('n',4)
. chr(1).chr(1).chr(1).chr(1)

. chr(4)
. pack('n',4)
. pack('N',time() + 86400)

. chr(5)
. pack('n',1)
. chr(10);

$msg=
chr(2)
. pack('N',strlen($msgInner))
. $msgInner;

对于命令8,使用此函数:(由Yudmt)在About the apple Enhanced notification format

function error_response($fp)
{
    $read = array($fp);
    $null = null;
    $changedStreams = stream_select($read,$null,1000000);

    if ($changedStreams === false)
    {
        echo ("Error: Unabled to wait for a stream availability");
    }
    elseif ($changedStreams > 0)
    {
        $responseBinary = fread($fp,6);
        if ($responseBinary !== false || strlen($responseBinary) == 6)
        {
            $response = unpack('Ccommand/Cstatus_code/Nidentifier',$responseBinary);
            var_dump($response);
        }
    }
}

脚本宝典总结

以上是脚本宝典为你收集整理的PHP Apple iOS推送通知:Command2:二进制接口和通知格式全部内容,希望文章能够帮你解决PHP Apple iOS推送通知:Command2:二进制接口和通知格式所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。