【问题标题】:PHP Apple Enhanced NotificationPHP Apple 增强通知
【发布时间】:2011-01-13 15:34:51
【问题描述】:

我一直在使用this excellent blog post 尝试让 Apple 推送通知在我的服务器上工作。连接似乎建立得很好,我可以写信给它。但是,从未收到任何通知。为了尝试调试它,我想构建一个“增强通知”,这将使 APNS 服务器在断开连接之前返回错误代码。但是,我不确定如何使用 PHP 构造要发送到服务器的数据。

根据教程帖子,目前我正在使用普通通知:

$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload;

这会创建一个格式如下的请求:

但是,我需要以下格式的请求:

根据文档,在哪里:

标识符 - 标识此通知的任意值。如果 APN 无法解释通知,则会在错误响应数据包中返回相同的标识符。

到期 - 以秒 (UTC) 表示的固定 UNIX 纪元日期,用于标识通知何时不再有效并可被丢弃。到期值应按网络顺序(大端)。如果到期值为正,APNs 会尝试至少发送一次通知。您可以指定零或小于零的值来请求 APN 根本不存储通知。

任何有助于调整上述代码以使用上述增强通知格式的帮助将不胜感激!

【问题讨论】:

    标签: php push-notification apple-push-notifications


    【解决方案1】:
    $apnsMessage = 
        // 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;
    

    【讨论】:

      【解决方案2】:
      $apnsMessage = pack('CNNnH*na*',
          1, // always one
          intval($messageId), // sequential Id for a message
          time() + 86400, // UTC relative timestamp + one day
          32, // device token binary length
          $deviceToken, // clean (no spaces, hex-only) device token
          mb_strlen($payload, '8bit'), // payload binary length
          $payload
      );
      

      【讨论】:

        猜你喜欢
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多