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
  • Prerequisites
  • Add AppfigurateLibrary.xcframework to the iOS app extension target
  • Share the iOS app APLConfiguration subclass with the iOS app extension
  • Setup Keychain Sharing in the iOS app extension
  • Setup Keychain Sharing in the iOS app
  • Edit Info.plist in the iOS app
  • Test your iOS app extension
  1. Getting Started
  2. iOS native app integration

iOS app extension integration

Integrating Appfigurate Library into iOS app extensions

PreviousiOS native app integrationNextwatchOS app integration

Last updated 4 months ago

iOS app extensions can be developed in both Swift and Objective-C.

Appfigurate Library works in most types of iOS app extensions.

Prerequisites

You must perform the following before starting iOS app extension integration:

  • of Appfigurate Library.

Add AppfigurateLibrary.xcframework to the iOS app extension target

In Xcode, tap on your iOS app extension target.

Tap the General tab. Tap the + button under the Frameworks, Libraries section.

Select AppfigurateLibrary package.

Share the iOS app APLConfiguration subclass with the iOS app extension

Share the iOS app's subclass with the iOS app extension.

Open your subclass (e.g. Configuration.swift/m file) into the Xcode editor.

In the Target Membership inspection pane tick on your iOS app extension target.

Setup Keychain Sharing in the iOS app extension

Tap on your iOS app extension target.

Tap the Signing & Capabilities tabs. Add a Keychain Sharing capability with a Keychain Groups value that will be common across the iOS app and iOS app extension.

We recommend you have a .shared suffix on your Keychain Groups value.

Setup Keychain Sharing in the iOS app

Tap on your iOS app target.

Tap Signing & Capabilities tabs.

Add a Keychain Sharing capability with the same Keychain Groups value you entered for the iOS app extension above.

Edit Info.plist in the iOS app

In your iOS app's Info.plist file (right click, Open As ‣ Source Code) include the APLKeychainAccessGroup key replacing the value nz.co.electricbolt.appfigurateexample.shared with your Keychain Sharing's 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.

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

Test your iOS app extension

To test that you've successfully updated your iOS app extension to use Appfigurate:

  • Compile and run your app to the Simulator instance.

  • Launch the Appfigurate Simulator app.

  • Tap your applications row. The app will be run and made visible, it's configuration read, and then swap back to Appfigurate.

  • Invoke your app extension. It should be using the shared configuration applied to the app.

Appfigurate's screen will now be displayed. You can now change the debugLogging and serverURL properties. Tap Apply⌄ to apply the configuration to your app.

iOS native app integration
APLConfiguration
APLConfiguration
Configure app