2016-08-03 39 views
0

ich einen mobilen iOS-App in Swift 2. Innerhalb der Anwendung geschrieben habe ein Anruf auf unseren Server durchiOS 9+ Testflug Cellular Data funktioniert nicht

ist
Session.dataTaskWithRequest(request, completionHandler: (func)) 

Ich habe 3 iPads mit Cellular Daten. 1 intern, auf die ich Zugriff habe und die ich an einen Debugger anschließen kann. 2 externe, zu denen ich keinen Zugang habe und Fragen stellen muss, um eine Vorstellung davon zu bekommen, was gerade passiert.

Das interne iPad arbeitet mit Build X auf WiFi und Cellular, durch Arbeiten ich meine, dass die Anfrage durchgeht und kontaktiert den Server in Ordnung.

Die externen iPads funktionieren über WiFi, funktionieren aber nicht über Mobilfunk.

Wir haben versucht

  • Daten Mobil Gewährleistung ist auf, & auf für die spezifische Anwendung
  • Makeln Flugzeugmodus
  • Zurücksetzen Netzwerk
  • Neustarten Geräte
  • Vergewissern Sie sich, dass die Geräte tatsächlich hatte eine Verbindung, als die dataTaskWithRequest fehlgeschlagen ist.

Irgendwelche Ideen, was hier vor sich geht? Gibt es eine Einstellung eine verpasst? Eine Einstellung in der info.plist (warum funktioniert 1), die ich verpasst habe?

+0

Ist Ihr Server von dem externen Benutzer Mobilfunknetz erreichbar? Sie könnten versuchen, vom ISP mit einem Webbrowser oder ähnlichem nach einer Sperrung zu suchen. – dgatwood

+0

Der Server ist über den Browser erreichbar, dies scheint nur ein Problem mit Anfragen zu sein, die von der iOS App kommen. In der App, die gefiltert werden kann, werden die umzuleitenden Anforderungen neu geschrieben. Es wurde ein neuer Build erstellt, um die Reaktion des Servers auf die Benutzer zu erfassen, bei denen das Problem aufgetreten ist – Ajwhiteway

Antwort

0

So dgatwood war auf dem richtigen Weg.

Die Anforderungen innerhalb der App wurden in einigen Fällen auf einen externen Server umgeleitet, in anderen Fällen auf einen internen Server. Da diese Anfragen von WKWebView stammten, hatten sie die Standard-HTTPHeaderFields, die von WKWebView kamen. Da diese Anfrage nach innen geschrieben auf einem Mini-Server verweist wurden im Hintergrund der App leben diese drei Header enthalten falsche Informationen für die Anforderung

  • Herkunft
  • Referer
  • Host-

Over ein cooperate-dataplan, bei dem die filterung für die anfragen stattfand. Da der Ursprung, der in den Header-Feldern deklariert wurde, nicht mit dem Ursprung des Anrufs übereinstimmte, löschte das Mobilfunknetz die Anfragen, und sie erreichten den Server nie wirklich.

Das Problem wurde durch

korrigiert
request.setValue(nil, forHTTPHeaderField: "Origin") 
request.setValue(nil, forHTTPHeaderField: "Host") 
request.setValue(nil, forHTTPHeaderField: "Referer") 

Hoffentlich jemand irgendwann diese hilfreich findet