Posso programaticamente inverter valores Info.plist enquanto meu aplicativo está sendo executado?

StackOverflow https://stackoverflow.com/questions/1429886

  •  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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top