Appfigurate™️
HomeDocumentation
  • Introducing Appfigurate™️ 3
  • Getting Started
    • Getting Started
    • Examples
    • Upgrade guide
      • v1.4.0 to v2.2.0
      • v2.1.1 to v2.2.0
      • v2.2.1 to v3.0.0
      • v3.2.1 to v4.0.0
    • iOS native app integration
      • iOS app extension integration
    • watchOS app integration
      • watchOS app extension integration
    • Android native app integration
    • Mobile Flutter integration
      • Flutter iOS
      • Flutter Android
    • React Native integration
      • iOS native module integration
      • Android native module integration
      • JavaScript integration
    • Third party remote configuration providers
      • Firebase Remote Config
      • Launch Darkly
      • Other third party remote configuration providers
  • Configuration subclasses
    • Supported property types
      • Boolean
      • Integer
      • Float
      • Double
      • Plain String
      • Encrypted String
    • Custom executable actions
    • Slider icon types
  • Additional reading
    • Info.plist options
    • AndroidManifest.xml options
    • Displaying overridden configuration
    • Security
      • Best practice
      • Encryption
      • Export compliance
      • App Store compliance
      • PrivacyInfo.xcprivacy
      • Rotating your private key
  • Automation testing
    • iOS native app automation testing
    • Android native automation testing
  • API
    • iOS and watchOS API
    • Android API
    • Mobile Flutter API
    • React Native API
  • Appfigurate User Guide
    • Introduction
    • Main menu
    • Select app
    • Add app
    • Import app
    • Install example apps
    • Settings
      • Passcode Lock
      • Restore
      • Backup
      • Delete all apps and Settings
      • Analytics
    • Edit app
    • Configure app
    • Permissions
  • Appfigurate SE user guide
    • Introduction
    • Manual encryption
      • ENCRYPTED_STRING macro/function
      • ENCRYPTED_STRING_IOS_WATCHOS macro/function
    • Setup iOS Simulator app
    • Setup Android Emulator app
    • Xcode source editor extension
      • Troubleshooting
    • Real device cloud testing services
      • BrowserStack
  • LEGAL
    • License Agreement
    • Privacy Policy
    • Release History
    • Third party notices
Powered by GitBook
On this page
  • APLLogging
  • Keychain accessibility
  • Info.plist key availability by platform
  • Standard Info.plist behaviour
  • App name
  • App version
  • App icon
  1. Additional reading

Info.plist options

PreviousSlider icon typesNextAndroidManifest.xml options

Last updated 4 months ago

If you have an iOS app (including Mobile Flutter or React Native) or a watchOS 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. 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 function to achieve the same result in code.

Keychain accessibility

Appfigurate Library stores any configuration payload and digital signature (that may have been applied by Appfigurate) securely in your app's Keychain.

The APLKeychainAccessibility key affects the access level of that configuration payload and digital signature. Best practice is to use the most restrictive option that is compatible with your app (and app extensions). 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.

Deprecated for general apps, use an accessibility level that provides some user protection, such as WhenUnlocked. Acceptable for VoIP apps that can be launched before the user unlocks the device.

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.

Deprecated for general apps, use an accessibility level that provides some user protection, such as WhenUnlockedThisDeviceOnly.

Acceptable for VoIP apps which can be launched before the user unlocks 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.

Info.plist key availability by platform

Key
iOS app
iOS app extension
watchOS app
watchOS app 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 app extensions automatically use the Info.plist file from the containing watch app. You do not need to modify the watchOS app extension's Info.plist file.

Standard Info.plist behaviour

App name

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.

App version

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.

App icon

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

APLSetLogging