2017-09-01 2 views
0

Ich stehe vor einem Problem mit einer Funktion meiner Anwendung, die es einem Benutzer ermöglicht, Links mit anderen Benutzern zu teilen. Sobald der Link freigegeben wurde, erscheint er als eine anklickbare Ansicht, die einige Informationen über die entsprechende Webseite (aus dem Open Graph-Protokoll im HTML-Code) enthält, wie den Titel, das "Hauptbild" usw. Das funktioniert einwandfrei wenn die Website HTTPS verwendet.Swift - Ich kann keine Informationen von http-Links abrufen

Wenn es jedoch nur HTTP verwendet, erhalte ich folgende Fehlermeldung:

NSLocalizedDescription=The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

Dank meiner Recherchen habe ich festgestellt, dass die Lösung, indem die folgenden Zeilen deaktivieren App Transport Security ist info.plist:

<key>NSAppTransportSecurity</key> 
    <dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
    </dict> 

jedoch in der offiziellen Dokumentation, es angegeben ist, dass Apple wahrscheinlich jede App mit diesem Tag ablehnen würde. Die beste Lösung wäre, Ausnahmen für bestimmte Domains hinzuzufügen, aber ich kann nicht wirklich erraten, welche Links geteilt werden ...

Hättest du irgendeine Lösung für mich?

+0

Ich habe diese Plist-Einstellungen kombiniert mit der Domain-Spezifikation in meiner App, die erst gestern genehmigt wurde. Also, obwohl Apple wahrscheinlich nicht glücklich damit ist ** ** kann ** Apps hochladen und veröffentlichen mit dem – Eric

Antwort

1

Sie können dies für Entwickler kein Problem verwenden. Ich habe gesehen, wie Leute auf SO erwähnen, dass sie Apps auch über diesen App Store veröffentlicht haben.

Die Lösung für die Produktion besteht darin, Ihre spezifischen Hosts, auf die Sie zugreifen müssen, anstelle von AllowsArbitraryLoads hinzuzufügen.

Natürlich ist die tatsächliche Antwort zu diesem Zweck, https zu verwenden und ATS überhaupt nicht zu umgehen.

+0

Ich weiß das, aber das Problem ist, dass ich nicht derjenige bin, der die Links wählen wird. Es ist der Benutzer, der den Link auswählt, den er teilen möchte. Wenn der Benutzer also einen Link zu einer Website freigibt, die HTTPS nicht verwendet, ist dies nicht möglich. – Lantian

Verwandte Themen