Apple Wallet:推送更新后 Pass 不会自动更新

Posted

技术标签:

【中文标题】Apple Wallet:推送更新后 Pass 不会自动更新【英文标题】:Apple Wallet: Pass won't update automatically after pushing an update 【发布时间】:2018-01-11 19:20:14 【问题描述】:

我关注 Apple's instructions 实施更新 Apple Wallet 通行证的选项。

我能够推送更新,并且它们在不同的设备上成功接收,但是我只能在执行“pull-to-update”之后才能看到更新。使用 pull-to-update 后,pass 上的字段会更新,更改消息会显示在通知面板中,但通知不会在屏幕上弹出。

我知道问题不在于设备或设备设置,因为我能够从其他来源的通行证获取自动更新。

我看到了一些相关的问题,例如:1234

但是那里提到的解决方案对我不起作用。

这是最初生成的 pass 示例和我对其进行更新后的 pass:

之前


  "formatVersion": 1,
  "passTypeIdentifier": "pass.com.domain.discountCoupon",
  "serialNumber": "422",
  "teamIdentifier": "ABCDEFGHIJKLMNOP",
  "organizationName": "Company",
  "webServiceURL" : "https://example.com/wallet/webServiceURL.php",
  "authenticationToken" : "ABCDEFGHIJKLMNOP",
  "description": "Card",
  "logoText": "",
  "foregroundColor": "rgb(1, 1, 1)",
  "backgroundColor": "rgb(255, 255, 255)",
  "labelColor": "rgb(1, 1, 1)",
     "locations" : [
      
        "longitude" : 0,
        "latitude" : 0
      
    ],
  "storeCard": 
      "headerFields" : [

     ...

    ],
    "backFields": [
      
        "label": "MOBILE TERMS:",
        "key": "mobileterms",
        "value" : "mobile terms"      
      ,
      
        "changeMessage": "%@",
        "label": " ",
        "value": "I will change this soon",
        "key": "fieldToChange"
      
    ]
  

之后


  "formatVersion": 1,
  "passTypeIdentifier": "pass.com.domain.discountCoupon",
  "serialNumber": "422",
  "teamIdentifier": "ABCDEFGHIJKLMNOP",
  "organizationName": "Company",
  "webServiceURL" : "https://example.com/wallet/webServiceURL.php",
  "authenticationToken" : "ABCDEFGHIJKLMNOP",
  "description": "Card",
  "logoText": "",
  "foregroundColor": "rgb(1, 1, 1)",
  "backgroundColor": "rgb(255, 255, 255)",
  "labelColor": "rgb(1, 1, 1)",
     "locations" : [
      
        "longitude" : 0,
        "latitude" : 0
      
    ],
  "storeCard": 
      "headerFields" : [

      ...

    ],
    "backFields": [
      
        "label": "New Title",
        "key": "fieldToChange",
        "value" : "A New Message",
        "changeMessage": ""
      ,
      
        "label": "MOBILE TERMS:",
        "key": "mobileterms",
        "value" : "mobile terms"      
      
    ]
  

【问题讨论】:

问题是推送消息未触发更新,还是未显示更改消息,或两者兼而有之? @PassKit 推送消息不会触发更新。请参阅下面的完整解决方案。 【参考方案1】:

您的第二次换票消息为空。它还需要包含 %@

【讨论】:

这是通知未显示我的文本而是显示“存储卡已更新”的原因,但不是通知未在屏幕上弹出且卡自动更新的原因。投票解决部分问题。我的答案中的完整解决方案。【参考方案2】:

发现问题:

通过生成时缺少标头 Last-Modified。这是 ios 推送通知的要求。 添加后:header('Last-Modified: '.gmdate('D, d M Y H:i:s T'));

在我的通行证生成代码中,出现了通知。 为了使通知显示changeMessage 文本,我按照@PassKit 的回答并在更新后推送的新通行证中添加了changeMessage(包括%@)。

【讨论】:

我也面临同样的问题。就我而言,当传递标头(点)发生更改时,我会发送推送通知。我已经检查了 json 文件之前和之前的内容及其正确性。奇怪的是,当我拉动刷新时,我的通行证会用新数据刷新,但我从来没有收到任何通知。您能解释一下答案的前两行吗?我正在使用 JAVA 代码生成通行证..

以上是关于Apple Wallet:推送更新后 Pass 不会自动更新的主要内容,如果未能解决你的问题,请参考以下文章

使用 aws api 网关的 Wallet Pass 自动更新 Web 服务

Apple 的 APNS 服务器是不是允许我向我的 Pass 用户发送随机推送通知?

Apple Wallet - 替换证书并仍然将更新推送到旧卡

Apple Wallet 通行证从不访问 Web 服务 url

Apple Wallet 动态更新值

Apple Wallet 中的 Apple Watch 1D 条码不可见