다음을 통해 공유


iOS SDK 문제 해결

중요

Visual Studio App Center는 2025년 3월 31일에 사용 중지될 예정입니다. Visual Studio App Center가 완전히 사용 중지될 때까지 계속 사용할 수 있지만 마이그레이션을 고려할 수 있는 몇 가지 권장 대안이 있습니다.

지원 타임라인 및 대안에 대해 자세히 알아보세요.

설치 중 문제

  1. 콘솔에서 "App Center SDK가 성공적으로 구성됨"이라는 메시지가 포함된 Assert 로그를 찾습니다. 메시지는 SDK가 성공적으로 구성되었음을 의미합니다.
  2. Cocoapods를 사용하여 iOS 앱에 App Center를 통합하고 메시지CocoaPods - Unable to find a specification for AppCenter와 함께 오류가 발생하면 를 실행 pod repo update 하여 로컬 Cocoapods 리포지토리를 업데이트한 다음 다시 실행 pod install 합니다.
  3. CocoaPods를 사용하여 iOS 앱에서 App Center를 통합하는 경우 프로젝트 컴파일 동안 메시지 framework not found AppCenter.xcframework 와 함께 오류가 발생합니다. 를 실행[sudo] gem install cocoapods하여 Cocoapods를 최신 버전으로 업데이트(다시 설치)해야 합니다.
  4. SDK 이진 파일을 수동으로 통합하는 경우 프로젝트에 대해 모듈을 사용하도록 설정했는지 확인합니다.

분석 데이터가 포털에 표시되지 않음

  1. SDK 모듈을 올바르게 통합했는지 확인합니다.

  2. 올바른 앱 비밀이 메서드 호출과 함께 start:withServices: 포함되어 있는지 확인합니다. 포털에서 앱을 열고 시작 페이지로 이동하여 정확한 start:withServices:코드를 복사할 수 있습니다.

  3. 백 엔드로 전송되는 로그를 보려면 애플리케이션에서 로그 수준을 자세한 정보 표시로 변경합니다. 그러면 SDK가 콘솔에 로그를 인쇄합니다. SDK가 시작되기 전에 다음 호출을 삽입합니다.

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    로그(INFO 로그 수준)에 "App Center SDK가 성공적으로 구성됨"이 표시되는지 확인한 다음, HTTPS 요청 로그가 표시되는 경우 검사.

  4. 디바이스가 온라인 상태인지 확인합니다.

  5. 경우에 따라 로그가 포털에 표시되는 데 몇 분 정도 걸릴 수 있습니다. 그런 경우 잠시 기다립니다.

  6. App Center 백 엔드가 데이터를 수신했는지 검사 분석 서비스의로그 흐름 섹션으로 이동합니다. 이벤트가 전송되면 표시됩니다.

포털에 크래시가 표시되지 않음

  1. SDK 모듈을 올바르게 통합했는지 확인합니다.

  2. 올바른 앱 비밀이 메서드 호출과 함께 start:withServices: 포함되어 있는지 확인합니다. 포털에서 앱을 열고 시작 페이지로 이동하여 정확한 start:withServices: 코드를 복사할 수 있습니다.

  3. App Center 충돌은 앱이 다시 시작된 후에만 크래시 로그를 전달합니다. 또한 디버거에 연결된 경우 SDK는 크래시 로그를 전달하지 않습니다. 앱을 크래시할 때 디버거가 연결되지 않았는지 확인합니다.

  4. 백 엔드로 전송되는 로그를 보려면 애플리케이션에서 로그 수준을 자세한 정보 표시로 변경합니다. 그러면 SDK가 콘솔에 로그를 인쇄합니다. SDK가 시작되기 전에 다음 호출을 삽입합니다.

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    로그(INFO 로그 수준)에 "App Center SDK가 성공적으로 구성됨"이 표시되는지 확인한 다음, HTTPS 요청 로그가 표시되는 경우 검사.

  5. 크래시 보고 기능을 제공하는 다른 라이브러리는 사용하지 마세요. 앱에 하나의 크래시 보고 SDK만 통합할 수 있습니다.

  6. 디바이스가 온라인 상태인지 확인합니다.

  7. 경우에 따라 로그가 포털에 표시되는 데 몇 분 정도 걸릴 수 있습니다. 그런 경우 잠시 기다립니다.

  8. SDK가 다음 앱 시작 시 크래시가 감지되었는지 확인합니다. API를 호출하여 앱이 마지막 세션에서 충돌하고 경고를 표시하는지 여부를 검사 수 있습니다. 또는 크래시 didSucceedSendingErrorReport 콜백을 확장하여 서버에 성공적으로 전송되었는지 확인할 수 있습니다.

  9. App Center 백 엔드에서 크래시가 수신되었는지 검사 분석 서비스의 로그 흐름 섹션으로 이동합니다. 전송되면 충돌이 표시됩니다.

사용자에게 업데이트를 요청하는 경고에는 문자열이 아니라 해당 항목의 키만 포함됩니다.

즉, 가 AppCenterDistributeResources.bundle 프로젝트에 추가되지 않았습니다. 파일을 Xcode 프로젝트에 삭제했고 앱 대상의 Copy Bundle Resources 빌드 단계에 표시되는지 확인합니다. 끌어서 놓기를 통해 파일을 추가한 경우 이 파일이 표시됩니다. Xcode에서 자동으로 파일을 추가합니다. 빌드 단계에서 파일이 누락된 경우 추가하면 앱의 번들로 컴파일됩니다.

Cocoapods를 사용하는 경우 리소스를 자동으로 처리합니다. Pod를 다시 설치해 보세요.

콘솔에 데이터베이스를 열 수 없음을 나타내는 메시지가 표시됩니다.

iOS SDK 버전 0.11.0부터 App Center는 SQLite를 사용하여 로그를 백 엔드로 보내기 전에 유지합니다. OS에서 제공하는 라이브러리를 사용하는 대신 사용자 고유의 SQLite 라이브러리를 사용하여 애플리케이션을 묶는 경우 콘솔 [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database 에서 이와 같은 오류가 표시될 수 있으며 백 엔드에 분석 또는 충돌 정보가 표시되지 않을 수 있습니다. SDK를 버전 0.13.0 이상으로 업데이트합니다.

배포 및 앱 내 업데이트가 자동화된 UI 테스트를 차단하고 있습니다.

앱 내 업데이트를 사용하도록 설정하면 자동화된 UI 테스트가 차단됩니다. 업데이트 프로세스는 App Center 백 엔드에 대해 인증을 시도합니다. UI 테스트 대상에 대해 App Center 배포를 사용하도록 설정하지 않는 것이 좋습니다.

SDK가 "정적 라이브러리"로 배포되는 이유

App Center SDK의 기본 디자인 목표는 App Center를 사용하여 앱에 미치는 영향을 최소화하고 모듈식 SDK를 사용하는 것입니다. 이로 인해 SDK가 여러 동적 연결된 공유 라이브러리로 배포됩니다.

지금까지 iOS는 동적 연결된 공유 라이브러리를 지원하지 않았지만 Landon Fuller의 이 블로그 게시물에 설명된 대로 iOS 8에 추가되었습니다.

그러나 App Center는 "fat" 가짜 프레임워크에 래핑된 정적으로 연결된 공유 라이브러리로 배포됩니다. 즉, SDK는 더 나은 성능을 위해 시작 시간이 아니라 컴파일 시간에 연결됩니다. 여러 동적 연결된 공유 라이브러리를 로드하는 데 시간이 걸립니다.

Apple은 WWDC 세션에서 400ms를 넘지 않도록 앱 시작을 최적화하는 것이 좋습니다. 특히 이 목표를 달성하기 위해 동적 공유 라이브러리보다 정적 공유 라이브러리를 권장합니다. iOS용 App Center SDK를 정적으로 연결된 공유 라이브러리로 배포하는 것은 SDK를 포함하는 앱에 최상의 성능과 최소한의 영향을 제공하기 위한 Apple의 권장 사항을 따릅니다.

정적으로 연결된 공유 라이브러리와 동적 연결된 공유 라이브러리에 대해 자세히 알아보려면 이 항목에 대한 Apple의 일반 설명서를 사용하는 것이 좋습니다.

SDK 이진 파일이 너무 큰 이유는 무엇인가요? 내 앱의 크기가 걱정됩니다.

AppCenter 이진 파일은 모든 iPhone 아키텍처 및 iPhone 시뮬레이터에 대한 조각을 포함하는 "fat" 프레임워크로 배포됩니다. 예를 들어 AppCenter.framework 가 다운로드할 10.5MB인 이유입니다.

SDK 이진 파일의 컴파일된 크기는 Xcode에서 앱에 .framework 추가하는 크기보다 훨씬 작습니다. 또한 릴리스 빌드도 디버그 빌드보다 작습니다.

이를 설명하기 위해 Xcode 9.2를 사용하여 빈 Objective-C 애플리케이션을 만들고, 앱에 App Center 이진 파일을 추가하고, iOS 11.3을 실행하는 iPhone 7에 배포 릴리스 빌드를 추가했습니다.

Bitcode를 사용하도록 설정 하지 않고 테스트를 실행했으며 앱 씬닝을 사용하지 않았습니다. 이러한 기술을 사용하여 앱의 이진 크기를 훨씬 더 줄일 수 있습니다.

아래 숫자는 다를 수 있으며 빌드 설정에 따라 달라질 수 있으므로 대략적인 가이드를 고려해 보세요. 즉, 앱에 App Center SDK를 추가하면 애플리케이션 이진 파일의 크기에 미치는 영향이 최소화됩니다.

사용되는 App Center 모듈 내보낸 IPA 크기 설치 크기
없음(빈 앱) 24KB 132KB
App Center 분석 120KB 377KB
App Center 충돌 239KB 705KB
App Center 배포 163KB 528KB
모든 App Center 모듈 314KB 930KB

App Center 비밀 값 보호

app_secret 앱의 식별자이며 트래픽이 적용되는 앱을 알아야 하며 기존 데이터를 검색하거나 편집하는 데 사용할 수 없습니다. app_secret 노출되는 경우 가장 큰 위험은 잘못된 데이터를 앱에 보내는 것이지만 데이터의 보안에는 영향을 미치지 않습니다.

중요한 데이터를 검색하려면 클라이언트 쪽에서 생성되는 앱/사용자 토큰을 제공해야 합니다. 클라이언트 쪽의 데이터를 완전히 안전하게 만들 수 있는 방법은 없습니다.

환경 변수를 사용하여 앱 비밀을 코드에 삽입하여 앱의 보안을 향상시킬 수 있습니다. 이렇게 하면 코드에 비밀이 표시되지 않습니다.