Skip to main content
이 문서는 기존 AppDelegate 기반 앱을 SceneDelegate(UIScene 생명주기)로 전환해야 하는 고객을 위한 트러블슈팅 가이드입니다.

문제 현상

  • Xcode 27에서 빌드한 앱을 실행하면 화면이 흰 화면으로 표시되거나, 앱이 정상적으로 그려지지 않습니다.
  • 스킴 딥링크(Scheme Deeplink) 또는 유니버설 링크(Universal Links)로 앱에 진입해도 Airbridge 딥링크 이벤트가 수집되지 않습니다.
  • 개발자 가이드의 딥링크 설정 > 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로 이전
3. AppDelegate 정리
  • SDK 초기화 코드(Objective-C: [AirBridge getInstance:appName:withLaunchOptions:], Swift: AirBridge.getInstance(_:appName:withLaunchOptions:))는 application:didFinishLaunchingWithOptions:에 그대로 둡니다.
  • 딥링크 수집을 위해 작성했던 application:openURL:options:와 application:continueUserActivity:restorationHandler:는 Scene 생명주기에서 호출되지 않으므로, SceneDelegate로 이전한 뒤 AppDelegate에서는 삭제합니다.
App 에서 Autofill 기능을 사용해 비밀번호를 저장하는 경우 webcredentials:... 설정이 되어 있지 않으면 비밀번호가 applinks:YOUR_APP_NAME.airbridge.io 또는 applinks:YOUR_APP_NAME.abr.ge 의 도메인에 저장됩니다.비밀번호가 저장되는 도메인을 변경하고 싶다면, example.com 을 설정할 도메인 으로 변경해서 아래와 같이 설정해주세요.
  1. https://example.com/.well-known/apple-app-site-association주소에서 아래 내용을 호스팅 합니다.
예) 9JA89QQLNQ.com.apple.wwdc
  1. Xcode > Project 파일 > Signing & Capabilities > Associated Domains 로 이동해주세요.
  2. +버튼을 눌러 webcredentials:example.com을 추가해주세요.
Airbridge iOS SDK 는 1.28.0 버전 부터 Bitcode 를 지원하지 않습니다. (Xcode 14 부터 Bitcode 가 deprecate 되었습니다.) 하지만 App 프로젝트에서 Bitcode 를 사용하는 경우 아래와 같은 컴파일에러가 발생할 수 있습니다.
Text
이 문제를 해결하기 위해서는 Podfile 파일에 아래와 같은 내용을 추가하거나 Xcode 에서 ENABLE_BITCODE 설정을 NO로 설정해주시면 됩니다.
Podfile
Xcode 에서 ENABLE_BITCODE 설정을 NO 로 설정해주시면 됩니다.
Apple Appstore 에서는 Bitcode 를 Deprecate 하여 Bitcode 를 사용하는 .ipa 파일이 제출되어도 자동으로 Bitcode 를 제거합니다.
Airbridge iOS SDK 는 1.28.0 버전 부터 Xcode 13 및 iOS 9, 10 을 지원하지 않습니다. 해당 지원이 필요하신 경우, Airbridge iOS SDK 1.27.0 이하 버전을 사용해주셔야 합니다.
Airbridge iOS SDK 는 여러 iOS 내장 Framework 를 활용합니다. 그 중 AdServices 는 iOS 14.2 이상을 필요로 합니다. 그런데 Swift Package Manager 에는 Link 될 Framework 의 Minimum OS Version 이 Target 의 Minimum OS Version 보다 높으면 자동으로 Optional 로 Link 하는 기능이 있지만, Swift Package Manager 를 사용하지 않고 Metadata 만 가져와서 Swift Package Manager 의 동작을 대신하는 Tuist fetch 에는 무조건 Required 로 Link 해서 이 이슈가 발생합니다. (문제가 되는 Tuist 코드)이 경우, Tuist 에서 제공하는 `Xcode Native Package Manager Support` 방법을 따라 SDK 를 설치하시거나, 아래와 같이 AirBridge.xcframework 직접 다운로드 받아 추가하시면 문제가 해결됩니다.