PassKit - получение последней версии Pass - Response
Читая документацию Apple PassKit здесь или здесь, в разделе "Получение последней версии пропуска" или "Устройства запрашивают последнюю версию пропусков", два документа, приведенные выше, просто предлагают...
ответить с 200 и полезной нагрузки передачи данных
или же
Ваш сервер возвращает данные прохода или статус 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);
проход показывает сообщение "обновлено вчера"
Но я хочу обновить пропуск! И не ясно, что я должен отправить, как вы можете видеть из вышеизложенных комментариев, я перепробовал несколько вещей.
Любые идеи или указатели приветствуются!
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 действительно обновлен