When running an app built with the Airbridge iOS SDK in a Swift 6 environment, the app crashes when the closures passed to functions such as handleDeeplink and handleDeferredDeeplink are invoked.
Affected functions
Airbridge.handleDeeplink
Airbridge.handleDeferredDeeplink
Airbridge.createTrackingLink
Airbridge.click
Airbridge.impression
AirbridgeOptionBuilder.setOnAttributionReceived
In Swift 5.x and earlier, the compiler only issued warnings even when there was a risk of a data race caused by multiple threads accessing the same memory at the same time. In Swift 6, any data or closure that may move to and run on another thread or actor-isolated context must be proven safe to transfer across threads. Otherwise, the compiler may raise a compile-time error, or a runtime crash may occur when building with backward compatibility.
When using Airbridge SDK functions that receive closures as parameters, explicitly add the @Sendable annotation before the closure parameter variable to tell the compiler that the data can be safely transferred across threads.
To trigger a Deep Link Install or Deep Link Open, the trackDeeplink method must be called before the didBecomeActive state in the iOS Lifecycle. If trackDeeplink is called after didBecomeActive, it will be recorded as an Organic Install or Open.
The Deep Link Install or Deep Link Open events are not generated; instead, standard Install or Open events occur.
Please ensure that trackDeeplink is called before didBecomeActive.
By setting the setLogLevel to Debug in the AirbridgeOptionBuilder, you can verify the following logs in sequential order:
Following app state detected: state=didDeeplinkFollowing app state detected: state=didBecomeActiveDuring the deployment of version 4.7.1, an issue occurred where version 4.7.0 was accidentally removed. The 4.7.0 version has since been redistributed to CocoaPods.
If CocoaPods is unable to find the version, or if you encounter a checksum error with the installed Pods, please follow the steps below.
pod cache clean --allpod repo remove trunkpod setup pod install --repo-updateUsers may see the domain of passwords stored with the Password AutoFill feature as airbridge.io or abr.ge.
After setting up deep links for the Airbridge SDK, if you utilize the Password AutoFill feature, the domain is saved as the applinks domain of the Airbridge deep link, which is airbridge.io or abr.ge.
The problem can be solved by setting up the webcredentials domain used in the Password AutoFill.
1. Prepare the domain that will store the password.
2. Host the JSON below at https://YOUR_DOMAIN/.well-known/apple-app-site-association with Content-Type: application/json. Your prepared domain should be entered instead of YOUR_DOMAIN.
You can find the App ID Prefix and Bundle ID in the [Identifiers]>[YOUR_APP] menu of the Apple Developer Portal.
{ "webcredentials": { "apps": ["YOUR_APP_ID_PREFIX.YOUR_BUNDLE_ID"] }}3. Navigate to [YOUR_PROJECT]>[Signing & Capabilities] in Xcode.
4. Click + Capability to add Associated Domains. Enter webcredentials:YOUR_DOMAIN in Associated Domains.
Was this helpful?