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 действительно обновлен

Другие вопросы по тегам