logo hsb.horse
← Zur Blog-Übersicht

Blog

Wählen Sie NEDNSProxyProvider nicht aus, wenn Sie einen Site-Block unter iOS erstellen

Wir haben eine Untersuchung der technischen und politischen Probleme bei der Verwendung von NEDNSProxyProvider in im App Store vertriebenen iOS-Apps zur Selbstkontrolle aufgezeichnet, die zu der Entscheidung führten, auf die Screen Time API zu migrieren.

Veröffentlicht:

Wenn Sie gerade mit der iOS-Entwicklung begonnen haben und eine App erstellen möchten, die Websites blockiert, ist Ihr erster Gedanke möglicherweise DNS. Es erscheint zuverlässiger und einfacher, den Prozess in der Phase der Namensauflösung zu stoppen, als den Prozess zu überwachen.

Wenn Sie suchen, finden Sie eine Klasse namens NEDNSProxyProvider. Der Name bleibt derselbe und der Zweck scheint derselbe zu sein.

Aber nutzen Sie das nicht. Hier kann man leicht Zeit verschwenden, insbesondere wenn man keine Erfahrung mit iOS hat.

Wofür ist der Kurs konzipiert?

NEDNSProxyProvider ist Teil des Network Extension Frameworks und eine Klasse zum Einrichten eines DNS-Proxys auf einem Gerät. Technisch gesehen funktioniert es so.

Das Problem liegt in der Zielumgebung. Wenn Sie Apples TN3134 (Network Extension Provider Deployment) lesen, werden Sie feststellen, dass diese Klasse für MDM-gesteuerte überwachte Geräte gedacht ist – Terminals, die von Unternehmen und Schulen verwaltet werden.

Nicht für Apps gedacht, die über den App Store an einzelne Benutzer verteilt werden. Wenn Sie Erfahrung mit der iOS-Entwicklung haben, werden Sie den Kontext von „für MDM-verwaltete Geräte“ verstehen, aber dieser Teil ist zunächst schwer zu lesen.

Konsistente Nachrichten in Entwicklerforen

Wenn Sie in den Apple-Entwicklerforen nach der Implementierung von Selbstkontroll-Apps fragen, sind die Antworten ziemlich einheitlich. Sie werden zu Family Controls + ManagedSettings weitergeleitet.

Selbst wenn ich meine Notwendigkeit erkläre, DNS selbst zu filtern, erhalte ich die Antwort: „Das ist nicht der beabsichtigte Anwendungsfall.“ Der Versuch, mithilfe von Netzwerkerweiterungen schädliche Websites für einzelne Benutzer zu blockieren, steht im Widerspruch zur Designphilosophie von Apple.

Viele Leute erfahren zum ersten Mal, nachdem sie Foren gelesen haben, dass „iOS eine eigene API hat“.

Was wird eigentlich passieren?

Da es sich um eine Funktion für überwachte Geräte handelt, ist unklar, ob sie die Prüfung als reguläre App Store-App bestehen wird. Die Entwicklung wird fortgesetzt, wobei das Risiko einer Ablehnung der App-Rezension besteht.

Wenn Sie diesen Pfad wählen, können Sie außerdem FamilyActivityPicker oder ManagedSettings nicht verwenden. Am Ende schreiben Sie die gesamte Blocklogik selbst und profitieren von keinem der Mechanismen, die Apple auf Plattformebene verwaltet.

Schaltfazit

Für iOS-Apps zur Selbststeuerung für einzelne Benutzer ist die Kombination von Family Controls + ManagedSettings die Antwort. Wenn Sie keine Erfahrung mit der iOS-Entwicklung haben, werden Sie fortfahren, ohne zu wissen, dass es eine formale API gibt.

Ich verstehe, dass Sie am DNS-System herumbasteln möchten. Aber die Einhaltung der Plattformrichtlinien von Apple reduziert Reibungsverluste bei der App-Überprüfung und verringert die langfristigen Wartungskosten. Sie sollten zuerst die Dokumentation zur Screen Time API lesen, bevor Sie Zeit mit NEDNSProxyProvider verbringen.