Ich bin interessiert an der Verwendung der SBUsesNetwork
und UIRequiresPersistentWiFi
Schlüssel in meiner Anwendung; Ich möchte sie jedoch nur aktivieren, wenn ein bestimmter Satz von View-Controllern verwendet wird. Gibt es eine Möglichkeit, diese Schlüsselwerte programmgesteuert umzukehren, während die Anwendung ausgeführt wird?Kann ich Info.plist-Werte programmgesteuert spiegeln, während meine Anwendung ausgeführt wird?
Antwort
Sie können den Inhalt des Bundles nicht ändern, während Sie ausgeführt werden. Sie haben keinen Schreibzugriff auf dieses Verzeichnis. Ich bin mir nicht sicher, ob es einen Weg gibt, genau das zu tun, was du willst.
Ich weiß, dass Sie Ihre info.plist als NSDictionary über NSBundle mit folgendem erhalten können:
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
von dort eine mutableCopy
der NSDictionary
machen könnte und die Werte darin eingestellt. Wenn Sie Fragen zu den Schlüsseln stellen, müssen Sie sicherstellen, dass Sie die Datei NSDictionary
und nicht Ihre Datei info.plist abfragen, aber es sollte nicht schwierig sein, all dies in eine Klasse zu kapseln, die beide Probleme für Sie löst.
Wenn Sie die Datei info.plist Ihrer App direkt ändern, kann es Probleme geben (wenn Sie beispielsweise die Datei ändern, schlägt die Code-Signatur fehl und Ihre App wird als beschädigt betrachtet), obwohl ich mir diesbezüglich nicht sicher bin.
Sie können die Info.plist nicht ändern. Es scheint keinen von Apple sanktionierten Weg zu geben, wonach Sie suchen.
Ich glaube nicht, dass dies funktioniert. [NSBundle mainBundle] hat einen Zeiger auf ein bestimmtes infoDictionary. Auch wenn Sie eine veränderliche Kopie nehmen, würde NSBundle nichts über unsere neue Plattform wissen. Hat jemand schon versucht?
Info.plist ist nichts anderes als ein Wörterbuch. Daher kann es bearbeitet werden.
Der 'UIRequiresPersistentWiFi' Schlüssel scheint sich in einen größeren' UIApplication' Code einzuklinken Ich kann oder kann nicht wissen, wie der Zugang aussieht, der ein WiFi Dialogfeld anzeigt, wenn eine Netzwerkverbindung benötigt wird. Wenn Sie also eine Kopie der Bundle-Einstellungen vornehmen, kann dies in diesem speziellen Fall nicht weit gehen, obwohl dies möglicherweise für andere Schlüssel gelten kann, wenn deren Verhalten überschrieben werden kann. –
Sie können Ihre info.plist oder eine der Dateien in Ihrem Mainbundle nicht ändern. – mahboudz