Comment on page
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.
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.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.Value | Description |
---|---|
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
.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 | iOS app | iOS app extension | watchOS app extension | watchOS 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.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.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.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 modified 1mo ago