Wymagam ważnej sesji, aby pobrać pliki z mojej aplikacji internetowej.iOS "Dodaj do ekranu głównego" - pobieranie pliku wykopuje użytkownika na zewnątrz
Po uruchomieniu aplikacji internetowej na urządzeniu z systemem iOS, zaloguj się i spróbuj pobrać plik (PDF) z mojej witryny, zostanie wyrzucony, a łącze zostanie otwarte w przeglądarce Safari. Użytkownik musi zalogować się ponownie z Safari, aby pobrać stronę.
Jak mogę wymusić otwarcie pliku w aplikacji internetowej i zamiast tego uruchomić formularz pobierania?
Używam Carrierwave iw sterowniku mam to wywołać pobrania:
class DocumentsController < ApplicationController
# .. code omitted
def download
if @document.name.file.exists?
send_file @document.name.path, x_sendfile: true
else
redirect_to documents_url, notice: t(:file_not_found)
end
end
end
UPDATE: znalazłem rozwiązanie w połowie pracy, które otwiera plik bezpośrednio w przeglądarce:
$(document).ready ->
if 'standalone' of window.navigator and window.navigator.standalone
# For iOS Apps
$('a').on 'click', (e) ->
e.preventDefault()
new_location = $(this).attr('href')
if new_location != undefined and new_location.substr(0, 1) != '#' and $(this).attr('data-method') == undefined
window.location = new_location
return
return
Korzystając z tego fragmentu kodu, zmuszamy użytkowników iOS do pracy w trybie pełnoekranowym (aplikacja internetowa) do otwierania wszystkich łączy a
w aplikacji. Problem polega jednak na tym, że jeśli użytkownik otworzy plik, nie będzie żadnego przycisku "wstecz". A ponieważ użytkownicy iPhone'a nie mają fizycznego przycisku wstecz, będą zmuszeni ponownie uruchomić całą aplikację, aby wydostać się z pokazanego pliku.
Proszę sprawdzić to: https://github.com/MrRio/jsPDF/issues/165 i to http://stackoverflow.com/questions/20978473 – dimakura