Je suis intéressé à utiliser les touches SBUsesNetwork
et UIRequiresPersistentWiFi
dans mon application; cependant, je voudrais les activer seulement en utilisant un certain ensemble de contrôleurs de vue. Existe-t-il un moyen de basculer par programme ces valeurs de clé pendant que l'application est en cours d'exécution?Puis-je modifier par programme les valeurs Info.plist lorsque mon application est en cours d'exécution?
Répondre
Vous ne pouvez pas modifier le contenu de votre ensemble en cours d'exécution, vous n'avez pas accès en écriture à ce répertoire. Je ne suis pas sûr qu'il existe un moyen de faire exactement ce que vous voulez.
Je sais que vous pouvez obtenir votre info.plist comme NSDictionary via NSBundle ce qui suit:
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
à partir de là que vous pouvez faire un mutableCopy
du NSDictionary
et définir les valeurs qui y sont. Lorsque vous effectuez des requêtes sur les clés, vous devez vous assurer de demander le NSDictionary
et non votre fichier info.plist, mais il ne devrait pas être difficile d'encapsuler tout cela dans une classe qui gère les deux problèmes pour vous. En ce qui concerne la modification directe du fichier info.plist de votre application, des problèmes peuvent survenir (par exemple, si vous modifiez le fichier, la signature du code échouera et votre application sera considérée comme corrompue), mais je n'en suis pas certain.
Vous ne pouvez pas modifier le fichier Info.plist. Il ne semble pas y avoir une façon sanctionnée par Apple de faire ce que vous recherchez.
Je ne pense pas que cela fonctionnera. [NSBundle mainBundle] a un pointeur vers un infoDictionary spécifique. Même si vous prenez une copie mutable, NSBundle ne sait rien de notre nouveau projet. Quelqu'un a-t-il déjà essayé?
Info.plist n'est rien d'autre qu'un dictionnaire. Par conséquent, il peut être modifié.
La clé 'UIRequiresPersistentWiFi' semble s'accrocher à un plus grand code' UIApplication' Je ne sais pas ou ne sais pas comment accéder, qui présente une boîte de dialogue WiFi lorsqu'une connexion réseau est nécessaire. Par conséquent, faire une copie des préférences de bundle peut ne pas aller loin dans ce cas particulier, bien que cela puisse être applicable pour d'autres clés, si leur comportement peut être outrepassé. –
Vous ne serez pas en mesure de changer votre info.plist ou l'un des fichiers de votre mainbundle. – mahboudz