Passbook Update Push未在锁屏上显示

A.S*_*.S. 0 apple-push-notifications ios6 passbook

我正在玩苹果Passbook服务.我在所有设备上都有一个非常奇怪的行为.如果我通过APNS向设备发送推送,让他们知道某个传递有更新,他们会进行更新,但他们不会在设备的锁屏上显示任何通知.

现在我正在记录我的PHP-Webservice和APNS之间的整个通信.我总是回答headre 200和所要求的答案.(第一个序列;第二个Pass.pkpass)和设备进行更新,因为我可以在存折应用程序中看到,但正如我已经说过,我没有在锁屏上得到任何通知.设备已按照本文所述正确设置:链接

我这样做我的APNS请求:

public function sendePushNotification($passTypeID, $debug = true)
{
// Zertifikat vorhanden ?
$certFullPath = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "api/cert/ck.pem";
if (file_exists($certFullPath))
{
  /**
   * Payload vorbereiten
   */
  $message = 'PASSDROP UPDATE'; 
  $body = array();
  $body['aps'] = array('alert' =>  $message);


  /**
   * Host bestimmen
   */
  $apnsHost = "gateway.push.apple.com";   // Development Umgbung

  /**
   * Stream erstellen
   */
  $ctx = stream_context_create();
  stream_context_set_option($ctx, 'ssl', 'local_cert', $certFullPath);
  $fp = stream_socket_client('ssl://' . $apnsHost . ':2195', $err, $errstr, 2, STREAM_CLIENT_CONNECT, $ctx);
  if (!$fp) 
  {
    echo "Fehler beim APNS: " . $err . " / ". $errstr. "\n";
    return false;
  }

  /**
   * Payload versenden
   */
  $payload = json_encode($body);
  $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $this->token)) . pack("n",strlen($payload)) . $payload;      
}
else
{
  throw new Exception("Zertifikat-Bundle " . $certFullPath . " existiert nicht !!!");
}
}
Run Code Online (Sandbox Code Playgroud)

据我所知,Apple在推送Passbook Pass时没有读取有效载荷.

有没有人对我有什么暗示我接下来可以尝试什么?我在pass.json文件中需要什么吗?

Pas*_*Kit 5

如果您的设备正在更新并接收新的通行证,但您没有看到通知,那么您的pass.json很可能不包含changeMes​​sage键.

要显示通知:

  • 传递数据值必须已更改(字段标签,颜色和图像不会触发更新),以及
  • 更改的字段必须包含changeMes​​sage键,最好使用%@占位符,该占位符将替换为新的字段值.

对于Passbook,APNS推送的唯一目的是通知设备Web服务具有新内容.所有通知活动都由旧的和新的pass.json文件之间的差异决定.

如果您的传递字段正在更改,并且您有一个changeMes​​sage键设置但是您没有看到通知,那么在pass.json的前后部分发布相关信息可能有助于我们识别出错误.

当'after'传递替换'before'传递时,下面的json摘录将触发以下两个通知:

  • 请前往22号门
  • 航班状态:登机

通过前:

  "boardingPass": {
        "headerFields": [{
            "key": "h1",
            "value": "--",
            "label": "Gate",
            "changeMessage": "Please proceed to gate %@"
        }, {
            "key": "h2",
            "value": "On Time",
            "label": "Status",
            "changeMessage": "Flight status: %@"
        }],
           ...
Run Code Online (Sandbox Code Playgroud)

通过后:

  "boardingPass": {
        "headerFields": [{
            "key": "h1",
            "value": "22",
            "label": "Gate",
            "changeMessage": "Please proceed to gate %@"
        }, {
            "key": "h2",
            "value": "Boarding",
            "label": "Status",
            "changeMessage": "Flight status: %@"
        }],
           ...
Run Code Online (Sandbox Code Playgroud)