iOS
The domain of saved passwords appears as airbridge.io or abr.ge
The domain of saved passwords appears as airbridge.io or abr.ge
Problem
Users may see the domain of passwords stored with the Password AutoFill feature as airbridge.io or abr.ge.Cause
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.Solution
The problem can be solved by setting up the webcredentials domain used in the Password AutoFill.- Prepare the domain that will store the password.
-
Host the JSON below at
https://YOUR_DOMAIN/.well-known/apple-app-site-associationwithContent-Type: application/json. Your prepared domain should be entered instead ofYOUR_DOMAIN.
- Navigate to [YOUR_PROJECT]>[Signing & Capabilities] in Xcode.
-
Click + Capability to add Associated Domains. Enter
webcredentials:YOUR_DOMAINin Associated Domains.
Upload Symbol Failed on Xcode
Upload Symbol Failed on Xcode
[Xcode 27] SceneDelegate Migration Required — Additional Setup Needed for Airbridge Deep Links
[Xcode 27] SceneDelegate Migration Required — Additional Setup Needed for Airbridge Deep Links
AttentionThis troubleshooting guide is for customers who need to migrate an existing AppDelegate-based app to UIScene(SceneDelegate) lifecycle.
Problem
- When you run an app built with Xcode 27, an EXC_BAD_ACCESS (code=1, address=0x0) crash occurs near GeneratedPluginRegistrant.register(with:) and the app terminates immediately.
- Airbridge deep link events are not collected even when the app is opened through a scheme deep link or Universal Link.
- The app does not work even though the code was added to
AppDelegateas shown in the Initialize SDK and Collect deep link events in your app developer guide examples.
Cause
Apple is moving the app lifecycle from theUIApplicationDelegate-only AppDelegate model to the UIScene-based SceneDelegate model, and adopting the Scene lifecycle has effectively become required in the latest Xcode and iOS environments.When an app adopts the Scene lifecycle through UIApplicationSceneManifest, the following AppDelegate callbacks are no longer called.Solution
- Airbridge Flutter SDK 4.10.0 or later
- Airbridge Flutter SDK earlier than 4.10.0
1. Add Scene Manifest to Info.plist
Add the following UIApplicationSceneManifest to Info.plist. Set UISceneDelegateClassName to match the module you use, and be sure to set UISceneStoryboardFile to Main. (Without this value, FlutterViewController is not created as the scene’s rootViewController, so plugin registration fails.)2. Create SceneDelegate and move the deep link collection code to SceneDelegate
- Swift SDK 4.10.0 or later
- Objective-C SDK 4.10.0 or later
- Swift SDK earlier than 4.10.0
- Objective-C SDK eariler than 4.10.0
3. Clean up AppDelegate
- Leave the SDK initialization code (
initializeSDK) inapplication:didFinishLaunchingWithOptions:as is. - The
application:openURL:options:andapplication:continueUserActivity:restorationHandler:methods you wrote to collect deep links are not called in the Scene lifecycle, so after moving them toSceneDelegate, delete them fromAppDelegate. GeneratedPluginRegistrant.register(with: self)relies onFlutterAppDelegatebuilding the plugin registrar throughself.window.rootViewController(FlutterViewController). In the Scene lifecycle thewindowis owned by theSceneDelegate, soAppDelegate’sself.windowbecomesnil. As a result the registrar is returned asnil, and a plugin that dereferences thisniltriggers anEXC_BAD_ACCESS (address=0x0)crash. Therefore plugin registration (GeneratedPluginRegistrant.register) must be moved to theSceneDelegate, whereFlutterViewControllerexists.
Android
A coroutine dependency error occurs during the build process
A coroutine dependency error occurs during the build process
Issue
A coroutine dependency error occurs during the build process with the following message.Text
Cause
If the kotlinx-coroutines-core library version is 1.3.5 or later, the kotlin-stdlib library version must be at a certain level or later.Solution
Check whether the kotlin-stdlib library version is v.1.3.70 or later with thegradlew dependencies command. If the version is earlier than v.1.3.70, you need to update it.Deeplink Opens generated by push notifications using the Braze SDK are not collected
Deeplink Opens generated by push notifications using the Braze SDK are not collected
Issue
Deep link execution (Deeplink Open) events are not collected when using the Braze SDK for push notifications. Instead, the open event is collected.Cause
The Airbridge Android SDK distinguishes the deep link execution event and the open event based on the dataString found in the activity’s action and intent. When the app is launched through a push notification using the Braze SDK,NotificationTrampolineActivityis used. When an app is launched through a push notification using the Braze SDK, dataString cannot be verified from the action and intent of the NotificationTrampolineActivity. As a result, it is impossible to distinguish between the deep link execution event and the open event.Solution
The "Manifest merger failed" error occurs during the build process
The "Manifest merger failed" error occurs during the build process
Issue
The “Manifest merger failed” error occurs during the build process.Cause
The Airbridge SDK’sAndroidManifest.xml includes rules to opt out of backing up the Shared Preferences data. The purpose of this rule is to avoid retaining the same Airbridge settings during the reinstallation of the app so that new installs or reinstalls can be detected accurately.Merging Airbridge SDK backup rules with your app backup rules can cause conflicts.Solution
Below are the opt-out rules defined in the Airbridge SDK.Fix conflict with fullBackupContent=“string”
Addingandroid:fullBackupContent="string" to the AndroidManifest.xml file may cause an error like the following.Build Output
- add
xmlns:tools="http://schemas.android.com/tools"to the<manifest>tag - add
tools:replace="android:fullBackupContent"to the<application>tag
AndroidManifest.xml file.Fix conflict with dataExtractionRules=“string resource”
Addingandroid:dataExtractionRules="string resource" to the AndroidManifest.xml file may cause an error like the following.Build Output
- add
xmlns:tools="http://schemas.android.com/tools"to the<manifest>tag - add
tools:replace="android:dataExtractionRules"to the<application>tag
AndroidManifest.xml file.Fix conflict with allowBackup=“false”
Addingandroid:allowBackup="false" to the AndroidManifest.xml file may cause an error like the following.Build Output
- add
xmlns:tools="http://schemas.android.com/tools"to the<manifest>tag - add
tools:replace="android:allowBackup"to the<application>tag
AndroidManifest.xml file.If compileSdkVersion is lower than 31
Theandroid:dataExtractionRules has been added in API Level 31. Therefore, if the compileSdkVersion is lower than 31, an error like the following may occur.Build Output
- add
xmlns:tools="http://schemas.android.com/tools"to the<manifest>tag - add
tools:remove="android:dataExtractionRules"to the<application>tag
AndroidManifest.xml file.For more guidance, refer to the articles below.Resolve Airbridge SDK backup rules merge conflict issue
Resolve Airbridge SDK backup rules merge conflict issue
Issue
If an Airbridge SDK backup rule and a backup rule for a different third-party SDK (e.g., AppsFlyer SDK) overlap, you will see the build error below.Cause
Overlapping of the Airbridge SDK backup rules and third-party SDK backup rules can cause build errors.Solution
backup_rules.xml setup
- Create a
android/app/src/main/res/xmlfolder. - Within the new xml folder, create a file (e.g.
custom_backup_rules.xml). - Add the data backup rules defined in the Airbridge SDK as follows.
data_extraction_rules.xml setup
NoteThe data_extraction_rules.xml setting is required for Airbridge Flutter SDK v4.1.5 and above.
- Within the new xml folder, create a file (e.g.
custom_data_extraction_rules.xml). - Add the data backup rules defined in the Airbridge SDK as follows.
AndroidManifest.xml setup
Airbridge Flutter SDK v4.1.5 or above
Airbridge Flutter SDK version earlier than v4.1.5
GAID is collected as 00000000-0000-0000-0000-000000000000
GAID is collected as 00000000-0000-0000-0000-000000000000