[Xcode 27] SceneDelegate 전환 필수화 및 Airbridge 딥링크 추가 설정 안내
[Xcode 27] SceneDelegate 전환 필수화 및 Airbridge 딥링크 추가 설정 안내
알립니다이 문서는 기존 AppDelegate 기반 앱을 UIScene(SceneDelegate)로 전환해야 하는 고객을 위한 트러블슈팅 가이드입니다.
문제 현상
- Xcode 27에서 빌드한 앱을 실행하면 화면이 흰 화면으로 표시되거나, 앱이 정상적으로 그려지지 않습니다.
- 스킴 딥링크(Scheme Deeplink) 또는 유니버설 링크(Universal Links)로 앱에 진입해도 Airbridge 딥링크 이벤트가 수집되지 않습니다.
- 개발자 가이드의 프로젝트 설정 > iOS와 딥링크 설정 > AppDelegate.m 예제대로
AppDelegate에 코드를 작성했는데도 동작하지 않습니다.
발생 원인
Apple은 앱 생명주기를UIApplicationDelegate(AppDelegate) 단독 방식에서 UIScene 기반(SceneDelegate) 방식으로 전환하고 있으며, 최신 Xcode/iOS에서는 Scene 생명주기 채택이 사실상 필수가 되었습니다.앱이 UIApplicationSceneManifest를 통해 Scene 생명주기를 채택하면, 다음 AppDelegate 딥링크 콜백은 더 이상 호출되지 않습니다.해결 방법
1. Info.plist에 Scene Manifest 추가
Info.plist에 아래 UIApplicationSceneManifest를 추가합니다.UISceneDelegateClassName 값은 사용하는 언어/모듈에 맞게 지정합니다.- Objective-C:
SceneDelegate - Swift:
$(PRODUCT_MODULE_NAME).SceneDelegate
2. SceneDelegate 생성 및 딥링크 수집 코드를 SceneDelegate로 이전
- Swift
- Objective-C
3. AppDelegate 정리
- SDK 초기화 코드(Objective-C:
[AirbridgeRN getInstance:appName:withLaunchOptions:], Swift:AirbridgeRN.getInstance(_:appName:withLaunchOptions:))는application:didFinishLaunchingWithOptions:에 그대로 둡니다. - 딥링크 수집을 위해 작성했던
application:openURL:options:와application:continueUserActivity:restorationHandler:는 Scene 생명주기에서 호출되지 않으므로,SceneDelegate로 이전한 뒤AppDelegate에서는 삭제합니다.
Braze push notification
Braze push notification
Braze SDK 를 사용하여 push notification 을 통해 deeplink 를 open 할 시 airbridge 에서 event 가 DEEPLINK OPEN 이 안잡히고 OPEN 이 발생합니다.Airbridge SDK 는 event 확인을 위해서 activity 의 action 과 intent 의 dataString 으로 전달 되는 값을 통해 DEEPLINK OPEN ,OPEN 등을 판별 하고 있습니다. 그러나 Braze SDK 에 push notification 을 생성시 Braze SDK 에 정의 된 NotificationTrampolineActivity 을 통해서 open 되는데 해당 activity Action 과 intent 에서 dataString 값을 확인 할 수 없어서 발생하게 됩니다.airbridge react-native SDK v2.7.1 에서 추가된 아래 interface 를 통해 해당 내용을 해결 할 수 있습니다.MainApplication
android/app/src/main/java/.../MainApplication 파일의 onCreate 함수에 아래와 같은 코드를 추가해주세요.Bitcode 컴파일 에러
Bitcode 컴파일 에러
react-native SDK 1.5.0 이상의 버전으로 iOS 빌드 시 Bitcode 를 지원하지 않아서 아래와 같이 에러가 발생 할 수 있습니다.react-native SDK 1.5.0 버전 부터 Airbridge iOS SDK 1.28.0 버전 으로 업데이트 되었습니다. Airbridge iOS SDK 는 1.28.0 버전 부터 Bitcode 를 지원하지 않습니다. 해당 에러 발생 시 아래 가이드를 참고 바랍니다.에어브릿지 SDK 백업 규칙 병합 충돌 문제
에어브릿지 SDK 백업 규칙 병합 충돌 문제
에어브릿지 SDK 백업 규칙과 서드파티 SDK 백업 규칙 중복 적용으로 인해 빌드 에러가 발생하는 경우 해결 방법은 아래를 참고해주세요.예) 에어브릿지 SDK 백업 규칙과 Appsflyer SDK 백업 규칙이 중복 적용되는 경우 아래와 같은 빌드 에러가 표시됩니다.이 문제를 해결하기 위해서는 아래와 같이 설정해주세요.
backup_rules.xml 설정
backup_rules.xml 설정
android/app/src/main/res/xml폴더를 생성해주세요.- 생성된 xml 폴더 내부에 (e.g.
custom_backup_rules.xml) 파일을 생성해주세요. - 에어브릿지 SDK에서 정의하는 데이터 백업 규칙을 다음과 같이 추가해 주세요.
AndroidManifest.xml 설정
AndroidManifest.xml 설정