共用方式為


iOS SDK 疑難解答

重要

Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到它完全淘汰為止,但有數個建議您考慮移轉至的建議替代方案。

深入瞭解支持時程表和替代方案。

安裝期間的問題

  1. 在控制台中,尋找訊息為「App Center SDK 已成功設定」的判斷提示記錄。 訊息表示 SDK 已成功設定。
  2. 如果您使用 Cocoapods 將 App Center 整合到 iOS 應用程式中,並出現錯誤訊息 - 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
    

    請確定 [App Center SDK 設定成功] 會出現在 資訊 記錄層級 () 的記錄檔中,然後檢查您是否看到 HTTPS 要求記錄。

  4. 請確定您的裝置已上線。

  5. 有時候,記錄可能需要幾分鐘的時間才會出現在入口網站中。 如果是這種情況,請稍候一段時間。

  6. 若要檢查 App Center 後端是否已收到您的數據,請移至 Analytics 服務中的 [記錄流程] 區段。 一旦傳送事件,您的事件應該會出現。

當機不會顯示在入口網站中

  1. 請確定您已正確整合 SDK 模組。

  2. 請確定隨附正確的應用程式密碼以及 start:withServices: 方法呼叫。 您可以在入口網站中開啟應用程式並流覽至 使用者入門 頁面,以複製確切start:withServices:的程式代碼。

  3. App Center 當機 只會在應用程式重新啟動之後轉送損毀記錄檔。 此外,如果您附加至調試程式,SDK 將不會轉送任何損毀記錄。 當您損毀應用程式時,請確定調試程式未附加。

  4. 如果您想要查看傳送至後端的記錄,請將記錄層級變更為應用程式中 的詳細資訊 。 SDK 接著會在 主控台中列印記錄。 在 SDK 啟動之前插入下列呼叫:

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

    請確定 [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 保存記錄,再將其傳送至後端。 如果您要將應用程式與自己的 SQLite 連結庫結合,而不是使用 OS 所提供的連結庫,您可能會在控制台 [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 不支援動態連結的共享連結庫,但已在iOS 8中新增,如 Landon Fuller 此部落格文章所述。

不過,App Center 會以靜態連結的共享連結庫的形式散發,此連結庫會包裝在「fat」假架構中。 這表示 SDK 會在 編譯時期 連結,而不是在啟動時連結,以提升效能。 載入多個動態連結的共享連結庫需要時間。

Apple 建議將應用程式啟動優化,以 在WWDC工作階段中花費不超過400毫秒。 它們特別建議靜態共享連結庫,而非動態共享連結庫,以達成此目標。 將 App Center SDK for iOS 散發為靜態連結的共用連結庫,遵循 Apple 的建議,為包含 SDK 的應用程式提供最佳效能和最小影響。

若要深入瞭解靜態連結的共享連結庫與動態連結共享連結庫,我們建議Apple 的一般文件主題

為什麼 SDK 二進位檔太大? 我擔心應用程式的大小

AppCenter 二進位檔會散發為「fat」架構,其中包含所有iPhone架構和iPhone模擬器配量。 這就是為什麼 AppCenter.framework 是 10.5 MB 下載的原因。

SDK 二進位檔的編譯大小會比 .framework 您在 Xcode 中新增至應用程式的 小很多。 也請記住,發行組建也會小於偵錯組建。

為了說明這點,我們已使用 Xcode 9.2 建立空的 Objective-C 應用程式、將 App Center 二進位檔新增至應用程式,並將分散式版本組建新增至執行 iOS 11.3 的 iPhone 7。

我們已執行未啟用 Bitcode 的測試,且未使用 應用程式精簡。 您可以使用這些技術來壓縮應用程式的二進位大小。

下列數位可能會有所不同,並取決於您的組建設定,因此請將其視為粗略指南。 也就是說,將 App Center SDK 新增至您的應用程式對應用程式二進位檔大小的影響最小。

使用的 App Center 模組 導出的 IPA 大小 安裝大小
無 (空白應用程式) 24 KB 132 KB
合作夥伴中心分析 120 KB 377 KB
App Center 損毀 239 KB 705 KB
App Center 散發 163 KB 528 KB
所有 App Center 模組 314 KB 930 KB

保護App Center秘密值

app_secret是應用程式的標識碼,必須知道流量要套用到哪個應用程式,而且無法用來擷取或編輯現有的數據。 如果公開, app_secret 最大的風險是將不正確的數據傳送至您的應用程式,但不會影響數據的安全性。

若要擷取任何敏感數據,您必須提供在用戶端產生的應用程式/使用者 令牌。 沒有任何方法可讓用戶端上的數據完全安全。

您可以使用環境變數將應用程式秘密插入程式碼,以改善應用程式的安全性。 如此一來,程序代碼中看不到秘密。