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

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

要么

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

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

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

我正在使用express发送响应,并且已经尝试了一些响应,例如..

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);
});

但是通行证一直向Web服务发出此请求,并且在通行证顶部的电话上报告“无法更新通行证”。

在侧面说明如果我确实回复304
res.sendStatus(304);

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

但是我确实想更新通行证!从上面的注释部分可以看出,我不清楚应该发送什么内容,我已经做了很多尝试。

任何想法或指针都是最欢迎的!

最佳答案

在弄乱了太长时间之后,我只是注释掉了

 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文件确实已更新

关于ios - PassKit-获取最新版本的通行证-响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36408179/

10-09 22:28