Ich benötige eine gültige Sitzung, um Dateien von meiner Web-App herunterladen.iOS "Zum Startbildschirm hinzufügen" - Datei-Download startet Benutzer
Wenn ich meine Web-App auf meinem iOS-Gerät öffne, mich anmelde und versuche, eine Datei (PDF) von meiner Site herunterzuladen, werde ich rausgeschmissen und der Link stattdessen in Safari geöffnet. Der Benutzer muss sich erneut von Safari aus anmelden, um die Seite herunterzuladen.
Wie kann ich erzwingen, dass die Datei in der Web-App geöffnet wird und stattdessen das Download-Formular auslöst?
Ich verwende Carrierwave und in der Steuerung Ich habe diese einen Download auszulösen:
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: Ich fand Halbarbeitslösung, die die Datei direkt im Browser öffnet:
$(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
Mit diesem Code-Schnipsel erzwingen wir iOS-Benutzer, die im Vollbildmodus (Web-App) ausgeführt werden, alle a
Links in der App zu öffnen. Das Problem ist jedoch, dass wenn ein Benutzer eine Datei öffnet, es keinen "Zurück" -Knopf gibt. Und da iPhone-Nutzern eine physische Zurück-Schaltfläche fehlt, müssen sie gezwungen werden, die gesamte App neu zu starten, um aus der angezeigten Datei herauszukommen.
Bitte überprüfen Sie dies: https://github.com/MrRio/jsPDF/issues/165 und das http://stackoverflow.com/questions/20978473 – dimakura