阅读Apple PassKit文档here或here
在标题为“获取通行证的最新版本”或“设备要求通行证的最新版本”的部分中,上述两个文档只是建议...
响应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/