Apple Wallet:推送更新后 Pass 不会自动更新
Apple Wallet: Pass won't update automatically after pushing an update
我按照 Apple's instructions 实施了更新 Apple 钱包通行证的选项。
我能够推送更新并且它们在不同的设备上成功接收,但是我只能在执行 "pull-to-update" 之后才能看到更新。使用 pull-to-update 后,通行证上的字段会更新,更改消息会显示在通知面板中,但通知 不会在屏幕上弹出。
我知道问题不在于设备或设备设置,因为我能够从其他来源的通行证获得自动更新。
我看到了一些相关问题,例如:1 2 3
但是那里提到的解决方案对我不起作用。
下面是最初生成的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"
}
]
}
}
您的第二次更改信息为空。它还需要包括 %@
发现问题:
传递生成中缺少 header Last-Modified。这是 iOS 推送通知的要求。
添加后:header('Last-Modified: '.gmdate('D, d M Y H:i:s T'));
我的通行证生成代码显示了通知。
为了使通知显示 changeMessage
文本,我遵循@PassKit 的答案并在更新后推送的新 pass 中添加了 changeMessage
(包括 %@
)。
我按照 Apple's instructions 实施了更新 Apple 钱包通行证的选项。
我能够推送更新并且它们在不同的设备上成功接收,但是我只能在执行 "pull-to-update" 之后才能看到更新。使用 pull-to-update 后,通行证上的字段会更新,更改消息会显示在通知面板中,但通知 不会在屏幕上弹出。
我知道问题不在于设备或设备设置,因为我能够从其他来源的通行证获得自动更新。
我看到了一些相关问题,例如:1 2 3
但是那里提到的解决方案对我不起作用。
下面是最初生成的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"
}
]
}
}
您的第二次更改信息为空。它还需要包括 %@
发现问题:
传递生成中缺少 header Last-Modified。这是 iOS 推送通知的要求。
添加后:header('Last-Modified: '.gmdate('D, d M Y H:i:s T'));
我的通行证生成代码显示了通知。
为了使通知显示 changeMessage
文本,我遵循@PassKit 的答案并在更新后推送的新 pass 中添加了 changeMessage
(包括 %@
)。