v3.2.1 to v4.0.0

Runtime compatibility

Appfigurate app version 4.0.0 is backwardly runtime compatible with apps and app extensions linked against earlier versions of Appfigurate Library.

iOS source compatibility

Appfigurate Library version 4.0.0 requires the following source code changes to your app:

  • The allowInvalidSignatures method must be overridden, as it no longer provides default behaviour. You must remove any calls to super, otherwise an AppfigurateLibraryException will be thrown.

  • The reset method must be overridden. You must remove any calls to super, otherwise an AppfigurateLibraryException will be thrown.

  • The publicKey method must be overridden. You must remove any calls to super, otherwise an AppfigurateLibraryException will be thrown.

  • A new CONFIGURATION function has been added to the Swift class - see Output Source Code Snippets.

  • A new CONFIGURATION macro has been added to the Objective-C header - see Output Source Code Snippets.

  • The customIdentifier method has been removed (deprecated in 3.0.0).

  • Default values of NSString/String properties are now an empty string "" instead of null. You should continue to set a default value in the reset method for your properties.

  • Appfigurate no longer supports having an iOS and watchOS app using different public/private key pairs. Instead the watchOS app must be changed to use the iOS public/private key pair (in Appfigurate, remove your existing watchOS app, then duplicate the iOS app as a watchOS app). The ENCRYPTED_STRING_IOS_WATCHOS function/macro has been removed, replace with ENCRYPTED_STRING function/macro instead.

Before migration (abbreviated Swift example shown)

@EncryptedStringPropertyListEdit(regex: "", description: "encrypted String - textfield, customizable list", encrypted: ENCRYPTED(), restart: false, values: [
    "Red":ENCRYPTED_STRING_IOS_WATCHOS("r","3/iZ...3ysB","dHRf...reoB"),
    "Green":ENCRYPTED_STRING_IOS_WATCHOS("g","PkQf...fdgB","B2l4...XOYB"),
    "Blue":ENCRYPTED_STRING_IOS_WATCHOS("b","jaIx...7poB","hksx...R5IB")])
var encrypted_string_Textfield_List: String

override func publicKey() -> String {
#if os(iOS)
    // 41 36 87 71 0D 05
    return "-----BEGIN PUBLIC KEY-----\n" +
        "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4TZnKfGeXttN7Rr3eiAZ\n" +
        ...
        "ywIDAQAB\n" +
        "-----END PUBLIC KEY-----\n"
#elseif os(watchOS)
    // 0C 96 66 39 0C 04
    return "-----BEGIN PUBLIC KEY-----\n" +
        "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArxgy6NU0IsJxLSZqcZzJ\n" +
        ...
        "QQIDAQAB\n" +
        "-----END PUBLIC KEY-----\n"
#endif
}

After migration (abbreviated Swift example shown)

  • Property list keys may no longer contain { and } characters, these characters are now used for specifying environment tags.

  • Cocoapods and Carthage are no longer supported, move to Swift Package Manager instead. The existing Cocoapods repo remains at 3.2.1 and will not be updated.

Android source compatibility

Appfigurate Library version 4.0.0 requires the following source code changes to your app:

  • The allowInvalidSignatures method must be overridden, as it no longer provides default behaviour and is now marked abstract.

  • The reset method must be overridden, and is now marked abstract. You must remove any calls to super.reset() .

  • A new CONFIGURATION function has been added to the Kotlin and Java classes - see Output Source Code Snippets.

  • Default values of String properties are now an empty string "" instead of null. You should continue to set a default value in the reset method for your properties.

  • Property list keys may no longer contain { and } characters, these characters are now used for specifying environment tags.

Last updated