1

标题为“获取最新版本的通行证” 或 “设备要求最新版本的通行证”的部分中阅读 Apple PassKit 文档,上面的两个文档只是建议......

以 200 和数据传递的有效负载响应

或者

如果 pass 没有更改,您的服务器将返回 pass 数据或 HTTP 状态 304 Not Modified。在此端点上支持 If-Modified-Since 缓存机制。

我假设这是要求我发送 .pkpass 文件?有任何标题吗?我觉得我需要发送一些标题,但文档不清楚哪些标题?

在这种情况下,我不想发送 304,因为有更新。该域具有有效的 SSL 证书。

我正在使用快递发送回复,我尝试了一些回复,例如..

app.get('/passUpdate/v1/passes/*', function(req, res){
    console.log('Getting the Latest Version of a Pass');
    var path  = req.path;
    var parts = path.split("/");
    var deviceLibraryIdentifier = parts[4];
    var passTypeIdentifier = parts[5];
    var authorization = req.headers.authorization;
    var file = __dirname + '/public/pass/mytest.pkpass';
    res.setHeader('Content-type', 'application/vnd.apple.pkpass');
    res.setHeader('Last-Modified', 'Mon, 03 Apr 2016 19:01:35 GMT');
        //res.download(file);
        //res.attachment(file);
    res.sendFile(file);
        // res.attachment(https://www.mywebsite.com/pass/mytest.pkpass);
        // res.sendfile(https://www.mywebsite.com/pass/mytest.pkpass);
        // res.download(https://www.mywebsite.com/pass/mytest.pkpass);
    res.sendStatus(200);
    console.log(res.headersSent);
}); 

但是通行证不断向网络服务发出此请求,并且在通行证顶部的手机上报告“无法更新通行证”。

如果我确实用 304 回应,请附带说明

res.sendStatus(304);

然后通行证显示消息“昨天更新”

但我确实想更新通行证!并且不清楚我应该发送什么,正如您从上面的评论部分中看到的那样,我已经尝试了不止几件事。

任何想法或指示都非常受欢迎!

4

1 回答 1

1

在搞砸了太久之后,我只是评论了

 res.sendStatus(200);

离开

app.get('/passUpdate/v1/passes/*', function(req, res){
    console.log('Getting the Latest Version of a Pass');
    var path  = req.path;
    var parts = path.split("/");
    var deviceLibraryIdentifier = parts[4];
    var passTypeIdentifier = parts[5];
    var authorization = req.headers.authorization;
    var file = __dirname + '/public/pass/mytest.pkpass';
    res.setHeader('Content-type', 'application/vnd.apple.pkpass');
    res.setHeader('Last-Modified', 'Mon, 03 Apr 2016 19:01:35 GMT');
    res.sendFile(file);
});

然后只需确保 .pkpass 文件确实已更新

于 2016-04-04T19:15:24.257 回答