Posso programaticamente inverter valores Info.plist enquanto meu aplicativo está sendo executado?
-
07-07-2019 - |
Pergunta
Estou interessado em usar as chaves SBUsesNetwork
e UIRequiresPersistentWiFi
em minha aplicação; no entanto, eu gostaria de permitir-lhes apenas quando utilizar um determinado conjunto de controladores de vista. Existe uma maneira para programaticamente inverter esses valores-chave, enquanto o aplicativo está sendo executado?
Solução
Você não pode modificar o conteúdo de seu pacote durante a execução, você não tem acesso de gravação para esse diretório. Eu não tenho certeza que há uma maneira de fazer exatamente o que você quer.
Outras dicas
Eu sei que você pode obter o seu info.plist como um NSDictionary via NSBundle com o seguinte:
NSDictionary* infoDictionary = [[NSBundle mainBundle] infoDictionary];
De lá você poderia fazer uma mutableCopy
do NSDictionary
e definir os valores nele. Ao fazer consultas para as chaves você terá que certifique-se de consultar o NSDictionary
e não o arquivo info.plist, mas não deve ser difícil para encapsular tudo isso em uma classe que lida com ambos os problemas para você.
Como para modificar o arquivo info.plist do seu aplicativo diretamente poderia haver problemas lá (por exemplo, se você modificar o arquivo de assinatura de código irá falhar e sua aplicação será considerado corrupto), embora eu não estou certo sobre isso.
Você não pode modificar o Info.plist. Não parece ser uma maneira sancionada a Apple de fazer o que você está depois.
Eu não acho que isso vai funcionar. [NSBundle mainBundle] tem um ponteiro para uma infoDictionary específico. Mesmo que você levar uma cópia mutável, NSBundle não saberia nada sobre o nosso novo plist. Alguém tentou ainda?
Info.plist é nada além de um dicionário. Por isso, pode ser editado.