iphone - lanzamiento - Configuración de una propiedad booleana en Info.plist desde una configuración definida por el usuario
ios 12 iphone 6 (3)
Es sencillo establecer una propiedad en un archivo Info.plist desde una configuración definida por el usuario, solo usa $ {YOUR_SETTING_NAME} como valor. Sin embargo, ¿es posible hacer esto para una propiedad boleana? La estructura en el archivo plist para un booleano es:
<key>NSAppleScriptEnabled</key>
<false/>
No está claro cómo utilizar una configuración definida por el usuario aquí.
¿Qué quiere decir con "Configuración definida por el usuario" ...
Si el usuario del que está hablando es usted (en otras palabras, el desarrollador de la aplicación), puede poner las claves que desee allí, al igual que cualquier otra frase en su proyecto Xcode.
Si el usuario del que está hablando es el usuario final de su aplicación, no intente guardar su configuración en su lista de información. Es una parte de la aplicación. Aunque a veces es posible que una aplicación cambie su propia lista de información en un mac, a menudo no lo es, dependiendo de cómo se instaló la aplicación. En el iPhone nunca es posible, ya que la aplicación es de solo lectura. En cualquier caso, el cambio de Info.plist invalidaría cualquier firma de aplicación que haya realizado.
Si desea cambiar la configuración del usuario final, use algo NSUserDefaults.
Los archivos plist que contienen booleanos dentro de las etiquetas ya no son válidos.
Esta solución funciona:
Agregue una nueva fase de compilación de script de ejecución a su objetivo. Pon en esto:
if [ ${CONFIGURATION} = "Release" ]; then
/usr/libexec/PlistBuddy -c "Set :UIFileSharingEnabled NO" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
fi
Así que en mi configuración, estoy configurando UIFileSharingEnabled en YES en mi lista de manera predeterminada y cuando estoy compilando para Release, el paso anterior sucede y lo establece en falso.
No estoy seguro de cómo hacer lo que me estás pidiendo, pero estoy bastante seguro de que para esta clave en particular (NSAppleScriptEnabled) también puedes usar cadenas "YES" y "NO" y funcionará.