Troubleshooting

Common troubleshooting scenarios and resolutions for the Kustomer Chat iOS SDK.

This page includes common troubleshooting scenarios and resolutions for the Kustomer Chat iOS SDK. For additional support, contact [email protected].

Archived app validation fails with Swift Package Manager

The Apple Xcode 12.4 release notes includes a known issue for Swift Packages that causes validation of the archived app to fail when embedding extensions in an app with a Swift package with binary dependencies.

The Kustomer Chat iOS SDK uses Swift Binary Targets to support Swift Package Manager and to allow companies to close source their code.

We've included the relevant section of the Xcode 12.4 release notes below with the known issue and suggested workaround from Apple.

Known issue and workaround

If you use a Swift package with binary dependencies in an app with extensions, the build system incorrectly embeds the binary dependencies alongside the extension in the PlugIns directory, causing validation of the archived app to fail. (69834549) (FB8761306)

Workaround: Add a scheme post-build action which removes the embedded binaries from the PlugIns directory after the build:
rm -rf "${TARGET_BUILD_DIR}/${TARGET_NAME}.app"/PlugIns/*.framework.

To learn more, visit the Xcode 12.4 release notes from Apple.

Unexpected UI appearance and/or colors

The Kustomer UI uses standard navigation objects, such as UINavigationBar, UIBarButtonItem, and so on. This means any global overrides can alter the UI appearance.

If you use UIAppearance in your app to customize UINavigationBar, UIBarButtonItem, or other classes in your app globally, these global overrides may cause your UI to display with an unexpected appearance or colors.

Step 1: Check all UIAppearance calls

First, confirm that UIAppearance is causing the UI appearance issues in your code. To test this, remove all UIAppearance calls from your code. If this fixes your issue, then these global overrides are the root cause.

Step 2: Turn off your global customizations

After you've confirmed 'UIAppearance' calls as the root cause, go back to your original code and use Kustomer.options.onViewWillAppear({...}) and Kustomer.onViewWillDisappear({...}) to turn off your UI customizations for 1) when the Kustomer UI will open, and 2) when the Kustomer UI will close.

options = KustomerOptions()

//When the Kustomer UI will show, remove customer appearance calls
    options.onViewWillAppear = {
      if #available(iOS 13.0, *) {
        let navBarAppearance = UINavigationBarAppearance()
        navBarAppearance.backgroundColor = nil
        UINavigationBar.appearance().standardAppearance = navBarAppearance
      }
    }

//When the Kustomer UI will be removed, set your custom appearance back
    options.onViewWillDisappear = {
      if #available(iOS 13.0, *) {
        let navBarAppearance = UINavigationBarAppearance()
        navBarAppearance.backgroundColor = .systemRed
        UINavigationBar.appearance().standardAppearance = navBarAppearance
      }
    }