Ich habe mehrere Hardware-Geräte, die Mini-Webserver enthalten, die, weil sie DHCP verwenden, jede IP-Adresse in der lokalen Domäne haben können.Wie bekomme ich eine IP-Adresse in iOS 9 mit NSURLSession Klasse
Ich benutze NSURLSession, um durch den Bereich der IP-Adressen .2 bis .253 zu versuchen, eine index.html, die diese Geräte hosten.
Das funktioniert gut, solange ich App Transport Security ausgeschaltet habe, natürlich, sobald ich es einschalte, scheitern die Anrufe, weil es IP-Adressenverbindungen nicht erlaubt.
Gibt es überhaupt etwas zu tun, kurz ATS zu verlassen und beten Apple erlaubt mir durch, wenn ich die Notwendigkeit erkläre?
Ein bisschen Pseudo-Code :)
App figures out its own IP address say 192.168.0.10
for i in 2..<254 {
creates a new ip address of 192.168.0.2, .3, .4 etc etc
NSURLSession to https://above IP address/index.html
if (succeeds) {
I found a device
}
}
Schalten Sie ATS und dies wird nicht mehr
Sie müssen ATS deaktivieren und erklären warum. Persönlich denke ich, dass Apple ziemlich nachsichtig sein muss, wenn es darum geht, die ATS-Anforderungen durchzusetzen, da es eine Menge eingebetteter und IoT-Geräte gibt, die TLS niemals mit entsprechenden Zertifikaten unterstützen werden. Sie werden auch mit der Anforderung umgehen müssen, dass Ihre App in reinen IPv6-Netzwerken korrekt funktioniert ... – Paulw11
Sie könnten immer einen Server haben, der den Scan für Sie durchführt und eine Liste mit gültigen IP-Adressen verwaltet. Stellen Sie dann eine Verbindung zu diesem Server über HTTPS her und lassen Sie sich die IP zurückgeben, bei der das Gerät gefunden wurde + die Seite index.html. – Brandon
Die Server-Idee ist eine gute, aber dies ist für ein kleines Unternehmen gedacht, ein iPad und möglicherweise mehrere Pin-Pads zu verwenden, so dass sie nicht diese zusätzlichen Kosten/Ärger haben wollen. –