Info.plist options

If you have an iOS or watchOS app (including iOS Mobile Flutter app), then the following additional Info.plist options are available.

APLLogging

To enable debug logging in the Appfigurate library early on, add the APLLogging key to the Info.plist file(s). The APLLogging key is optional.

Info.plist example

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
     <key>APLLogging</key>
     <true/>
     ...

The default value of APLLogging is false. You should not need to enable this to true unless you are having trouble integrating the library. It is best practice not to ship an app with this key set to true.

You can also call APLSetLogging function to achieve the same result in code.

APLKeychainAccessibility

The APLKeychainAccessibility key affects the access level of any configuration data stored in the keychain. Best practice is to use the most restrictive option that is compatible with your app and extension. The APLKeychainAccessibility key is optional.

ValueDescription

WhenUnlocked

Configuration can only be accessed while the device is unlocked. Will migrate to a new device when restored from an encrypted backup.

AfterFirstUnlock

Configuration can only be accessed once the device has been unlocked after a restart. Will migrate to a new device when restored from an encrypted backup.

Always

Configuration can always be accessed regardless of the lock state of the device. Will migrate to a new device when restored from an encrypted backup.

WhenPasscodeSetThisDeviceOnly

Configuration can only be accessed while the device is unlocked.

WhenUnlockedThisDeviceOnly

Configuration can only be accessed while the device is unlocked.

AfterFirstUnlockThisDeviceOnly

Configuration can only be accessed once the device has been unlocked after a restart.

AlwaysThisDeviceOnly

Configuration can always be accessed regardless of the lock state of the device.

Info.plist example

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
     <key>APLKeychainAccessibility</key>
     <string>AfterFirstUnlock</string>
     ...

The default value of APLKeychainAccessibility is Always.

APLKeychainAccessGroup

The APLKeychainAccessGroup key is optional.

iOS: In order to share configuration between an iOS app and an iOS app extension, Keychain Sharing must be enabled in both the app and app extension's Capabilities tabs.

watchOS: In order to share configuration between a watchOS app extension and a watchOS intent extension, Keychain Sharing must be enabled in both the app extension and intent extension's Capabilities tabs.

The APLKeychainAccessGroup key must contain the same value as the Keychain Groups value.

Info.plist example

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
     <key>APLKeychainAccessGroup</key>
     <string>nz.co.electricbolt.appfigurateexample.shared</string>
     ...

If the APLKeychainAccessGroup key is not defined, then keychain access group functionality is not used. Do not specify an empty or otherwise invalid APLKeychainAccessGroup value.

Key availability by platform

KeyiOS appiOS app extensionwatchOS app extensionwatchOS intent extension

APLLogging

1

2

APLKeychainAccessibility

1

2

APLKeychainAccessGroup

1

2

1=iOS app extensions automatically use the Info.plist file from the containing app - you do not need to modify the iOS app extension's Info.plist file.

2=watchOS intent extensions automatically use the Info.plist file from the containing watch app extension - you do not need to modify the watchOS intent extension's Info.plist file.

Standard Info.plist behaviour

CFBundleDisplayName

The standard key CFBundleDisplayName (if specified) will be used to populate the name of the app in Appfigurate. If not specified, then the CFBundleName value is used.

CFBundleShortVersionString

The standard key CFBundleShortVersionString (if specified) will be used to populate the version of the app in Appfigurate. If not specified, then the CFBundleVersion value is used.

CFBundleIcons

To populate the icon of the app in Appfigurate, the following search order is used: CFBundleIcons,CFBundleIconFiles,CFBundleIconFile.

For iOS, the search order of app icon sizes is: 60x60@2x, 60x60@3x, 76x76@2x, 83.5x83.5@2x, 60x60@1x, 76x76@1x

For watchOS, the search order of app icon sizes is: 40x40@2x

Last updated