2012-03-29 7 views
6

Offenbar hat Apple damit begonnen, Apps abzulehnen, die [UIDevice uniqueIdentifier] verwenden. Ich habe Berichte über Apps gehört, die in der vergangenen Woche abgelehnt und genehmigt wurden und die es verwenden (einige kommen durch, manche nicht). Allerdings hat keines der großen Werbenetzwerke (die Einnahmen für meine App generieren) noch eine API herausgebracht, die keine UDID verwendet. Alle ihre APIs, die in meiner App enthalten sind, verwenden sie. Sie alle sagen, dass sie an einer neuen API arbeiten und es wird bald raus sein, aber es könnte ein paar Monate dauern.Wie erkennt Apple den UDID-Zugriff während der App-Überprüfung?

Es scheint mir sehr seltsam, dass Apple diese Richtlinie durch den App-Review-Prozess erzwingen würde, anstatt durch eine neue Version des Betriebssystems, die es einfach nicht erlaubt (und Leute haben Zeit, während der Beta zu programmieren) .

Alles was gesagt wird, meine Frage ist, wie genau Apple erkennt, wenn Sie während der App-Überprüfung auf die UDID zugreifen? Scannen sie das Paket irgendwie, um zu sehen, ob der Anruf da ist, oder überwachen sie die Systemaufrufe, die tatsächlich ausgeführt werden, während sie die App testen? Ich dachte daran, vielleicht nicht auf die Werbe-APIs zuzugreifen, wenn der Benutzer zahlen möchte, oder ihnen die Wahl zu geben, auf Werbung zu setzen und daher ihre UDID bereitzustellen. Aber ich muss verstehen, ob Apple auf der Basis von [UIDevice uniqueIdentifier] ablehnt, einfach in Ihren Code kompiliert wird, oder wenn Sie erkennen, dass Sie während des App-Überprüfungstests [UIDevice uniqueIdentifier] aufrufen.

Bitte beantworten Sie diese Frage nicht mit den Gründen, warum Sie [UIDevice uniqueIdentifier] nicht verwenden sollten oder wie Sie Ihre eigenen UDIDs usw. erstellen. Mein Problem sind Bibliotheken von Drittanbietern, die ich noch nicht habe alternative Lösung. Die Frage ist: Wie erkennt Apple den UDID-Zugriff während der App-Überprüfung?

+1

"anstatt durch eine neue Version des Betriebssystems, die es einfach nicht erlaubt", aber dann konnte Apple es nicht verwenden. ;) – Joel

+0

Durch das Entfernen der API, ohne dass Entwickler gezwungen waren, Apps zuerst zu aktualisieren, würden bestehende genehmigte und gekaufte Apps, die derzeit auf den Geräten des Kunden ausgeführt werden, unterbrochen, wodurch Kunden sehr unzufrieden mit der Betriebssystemaktualisierung werden. – hotpaw2

Antwort

7

Sie haben bekannt, statische Analyse zu verwenden, die Ihre kompilierte Binärdatei für kompilierte Versionen von Aufrufen nach bestimmten Methoden grundlegend durchsucht. Sie verwenden dies auch zum Erkennen von Aufrufen privater APIs. Es kann möglich sein, die statische Analyse zu manipulieren, indem Selektoren aus Strings auf kreative Weise erstellt werden. Obwohl das in keiner Weise ehrlich oder empfohlen ist.

Aber die robustere Methode ist höchstwahrscheinlich über einen HTTP-Proxy, durch die Verwendung Ihrer App können sie HTTP-Verkehr für alle UDIDs beobachten, die gesendet werden. Welche möglicherweise durch Hashing oder 2-Wege-Verschlüsselung erhalten werden kann. Dies wäre auch nicht ehrlich oder empfehlenswert.

Und wenn iOS6 in diesem Sommer herauskommt, wird die Methode wahrscheinlich vollständig entfernt werden, was jegliche Verschleierung seiner Verwendung komplett erschweren wird.

+0

Die Ad-Netzwerk-APIs von Drittanbietern sind vorkompiliert, so dass es keine Möglichkeit gibt, den Aufruf von [UIDevice uniqueIdentifier] innerhalb ihres Quellcodes "zu verschleiern". Ich denke einfach daran, dem Benutzer die Option zu geben, anstatt sich beim Start automatisch mit der API zu verbinden. Aber gute Antwort. Vielen Dank. – user1301928

2

Es wurde berichtet, dass Apple statische Scans für alle in einer App verwendeten Methodensignaturen verwendet (bis hin zur gelegentlichen Ablehnung einer App für die Verwendung der gleichen Nachrichtensignatur für die eigene benutzerdefinierte Klasse eines Entwicklers wie für einen nicht öffentlichen Applique) APIs.)

Darüber hinaus haben sie zuvor auch berichtet, dass sie Apps auf speziellen Hardware- und/oder nicht freigegebenen Betriebssystemversionen laufen lassen, die Instrumente irgendeiner Art enthalten können oder auch nicht, zum Beispiel im Netzwerkverkehr.

Verwandte Themen