iOS 入门

重要

Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。

详细了解支持时间线和替代方案。

App Center SDK 使用模块化体系结构,因此可以使用任何或所有服务。

可以在 App Center SDK 收集的数据、常规数据保护条例常见问题解答页面中找到有关 App Center 收集的数据的信息。 此外,FAQ 还包含App Store隐私配置所需的答案。

让我们开始在应用中设置 App Center iOS SDK,以使用 App Center Analytics 和 App Center 崩溃。 若要将 App Center 分发添加到应用,请查看 App Center 分发的文档。

1.先决条件

若要使用 App Center SDK,必须满足以下要求:

  • iOS 项目是在 macOS 版本 10.14.4 或更高版本上的 Xcode 13 或更高版本中设置的。
  • 你的目标是在 ios 11.0 或更高版本上运行的设备。
  • 你没有使用任何其他库,这些库 (仅为 App Center 崩溃) 提供崩溃报告功能。
  • 如果使用 CocoaPods 集成 App Center,则需要 CocoaPods 版本 1.10 或更高版本。

App Center SDK 分析和崩溃通过 XCFramework 或 SwiftPM 与 Mac Catalyst 兼容。

2.在 App Center 门户中创建应用以获取应用机密

如果已在 App Center 门户中创建了应用,则可以跳过此步骤。

  1. 前往 appcenter.ms
  2. 注册或登录,点击门户右上角显示 “添加新” 的蓝色按钮,然后从下拉菜单中选择“ 添加新应用 ”。
  3. 输入应用的名称和可选说明。
  4. 选择 “iOS ”作为 OS,选择 “Objective-C/Swift ”作为平台。
  5. 点击右下角显示 “添加新应用”的按钮。

创建应用后,可以在 App Center 门户的“设置”页上获取其应用机密。 在 “设置” 页面右上角,单击 三个垂直点 ,然后选择 Copy app secret 获取应用机密。

3. 添加 App Center SDK 模块

可以通过 CocoapodsCarthageSwift 包管理器或手动将二进制文件添加到项目中,将适用于 iOS 的 App Center SDK 添加到应用。

注意

4.0.0 App Center 版本中引入了中断性变更。 按照 迁移到 App Center SDK 4.0.0 及更高 版本部分从以前的版本迁移 App Center。

3.1 通过 Cocoapods 集成

注意

当从 Apple Silicon Mac 上运行的 Xcode) 不支持通过 CocoaPods 启动 ARM64 模拟器 (,请考虑使用其他集成方法使其正常工作。

  1. 向 添加以下依赖项, podfile 以将 App Center Analytics 和 App Center 崩溃包含在应用中。 此操作将拉取以下框架: AppCenterAppCenterAnalyticsAppCenter 崩溃。 相反,可以在应用中指定所需的服务。 每个服务都有自己的子规格,它们都依赖于 AppCenter。 它将自动拉入。

     # Use the following line to use App Center Analytics and Crashes.x
     pod 'AppCenter'
    
     # Use the following lines if you want to specify which service you want to use.
     pod 'AppCenter/Analytics'
     pod 'AppCenter/Crashes'
     pod 'AppCenter/Distribute'
    
  2. 运行 pod install 以安装新定义的 Pod 并打开项目的 .xcworkspace

注意

如果在运行 pod install时看到类似[!] Unable to find a specification for `AppCenter` 的错误,请运行 pod repo update 以从 Cocoapods 存储库获取最新的 Pod,然后运行 pod install

现在,你已将框架集成到应用程序中,接下来可以启动 SDK 并使用 App Center 服务。

3.2 通过 Carthage 集成

下面是有关如何使用 Carthage 版本 0.30 或更高版本(用于生成依赖项并提供二进制框架的分散式依赖项管理器)将 App Center SDK 集成到 Xcode 项目中的步骤。

注意

Carthage 集成在 Xcode 12 中无法开箱即用。 若要使其正常工作,请参阅 此 Carthage 指令

  1. 向 添加以下依赖项 Cartfile 以包含 App Center。 这些依赖项将拉取到所有框架中。 然后,只能链接要在应用中使用的框架。

    # Use the following line to get the latest version of App Center
    github "microsoft/appcenter-sdk-apple"
    
    # Use the following line to get the specific version of App Center
    github "microsoft/appcenter-sdk-apple" ~> X.X.X
    
  2. 运行 carthage update 以将依赖项提取到 Carthage/Checkouts 文件夹中。 然后生成每个框架。

  3. 打开应用程序目标的“ 常规 设置”选项卡。将 AppCenter.frameworkAppCenterAnalytics.frameworkAppCenterCrashes.framework 文件从 Carthage/Build/iOS 文件夹拖放到 Xcode 的项目导航器中。 启动 SDK 需要 AppCenter.framework 。 如果未将其添加到项目中,其他模块将无法工作,并且应用将无法编译。

  4. 将显示一个对话框,确保已选中应用目标。 然后单击“完成”。

    注意

    如果在生成阶段使用carthage copy-frameworks,则不应添加 App Center SDK,因为它们作为静态框架提供。

现在,你已将框架集成到应用程序中,接下来可以启动 SDK 并使用 App Center 服务。

3.3 通过 Swift 包管理器集成

  1. 在“Xcode”菜单中,单击“ 文件 > Swift 包 > ”“添加包依赖项”。
  2. 在出现的对话框中,输入存储库 URL: https://github.com/microsoft/appcenter-sdk-apple.git
  3. “版本”中,选择“ 下一个主要 版本”并采用默认选项。
  4. 在“ 包产品 ”列中选择所需的模块。

现在,你已将框架集成到应用程序中,接下来可以启动 SDK 并使用 App Center 服务。

注意

如果要通过 SwiftPM 集成 App Center,并且想要在应用的扩展目标中使用它,请确保在配置中提供 DISABLE_DIAMOND_PROBLEM_DIAGNOSTIC=YES 。 这是必要的,以避免 SwiftPM 限制将模块链接到多个目标。

3.4 通过将二进制文件复制到项目中进行集成

下面是有关如何将编译的二进制文件集成到 Xcode 项目中的步骤,以便为 iOS 应用设置 App Center Analytics 和 App Center 崩溃。

注意

App Center SDK 支持使用 XCframework。 如果要将 XCframeworks 集成到项目中,请从发布页面下载 AppCenter-SDK-Apple-XCFramework.zip 并将其解压缩。 生成的文件夹内容不是特定于平台的,而是包含每个模块的 XCframeworks。 可以像往常框架一样集成它们,如下所述。

  1. 下载以 zip 文件的形式提供的 App Center SDK 框架。

  2. 解压缩该文件,你将看到一个名为 AppCenter-SDK-Apple 的文件夹,其中包含每个平台文件夹中每个 App Center 服务的不同框架。 项目中需要名为 AppCenter 的框架,因为它包含在不同模块之间共享的代码。

  3. [可选]为第三方库创建子目录。

    • 最佳做法是,第三方库通常位于一个子目录中,通常称为 Vendor。 如果项目未使用库的子目录进行组织,请立即创建 供应商 子目录。
    • 在 Xcode 项目中创建一个名为 “供应商 ”的组,以模拟磁盘上的文件结构。
  4. 在 Finder 中打开解压缩的 AppCenter-SDK-Apple 文件夹,并将该文件夹复制到项目所需位置的文件夹中。 文件夹包含 App Center SDK 支持的其他平台的子文件夹中的框架,因此可能需要删除不需要的子文件夹。

  5. 在 Xcode 中将 SDK 框架添加到项目中:

    • 确保项目导航器 (⌘+1) 可见。
    • 现在 & 将 AppCenter.frameworkAppCenterAnalytics.frameworkAppCenterCrashes.framework 从 Finder (拖放到上一步) 到 Xcode 的 Project Navigator 中。 启动 SDK 需要 AppCenter.framework 。 如果未将其添加到项目中,则其他模块将不起作用,并且你的应用将无法编译。
    • 将显示一个对话框,确保已选中你的应用目标。 然后单击“完成”。

在应用程序中集成框架后,可以启动 SDK 并使用 App Center 服务。

4.启动 SDK

若要使用 App Center,请选择加入要使用的模块 () 。 默认情况下,不会启动任何模块,必须在启动 SDK 时调用每个模块。

根据所使用的生命周期,下面的说明略有不同。 从 Xcode 12 开始,可以选择两个生命周期之一:“Swift UI 应用” (Xcode 12) 和“UI Kit AppDelegate”中默认选中。 如果要针对某个扩展进行开发,请参阅 扩展入门页

4.1 添加 import 语句

打开项目的 AppDelegate 文件 (for UI Kit AppDelegate 生命周期) 或 <ProjectName>App.swift 文件 (for Swift UI 应用生命周期) 并添加以下 import 语句:

@import AppCenter;
@import AppCenterAnalytics;
@import AppCenterCrashes;
import AppCenter
import AppCenterAnalytics
import AppCenterCrashes

4.2 添加 start:withServices: 方法

UI 工具包 AppDelegate

将初始化代码添加到 didFinishLaunchingWithOptions 委托方法中:

[MSACAppCenter start:@"{Your App Secret}" withServices:@[[MSACAnalytics class], [MSACCrashes class]]];
AppCenter.start(withAppSecret: "{Your App Secret}", services: [Analytics.self, Crashes.self])

Swift UI 应用生命周期

若要确保 App Center SDK 在 Swift UI 中正常工作,请在加载 UI 后对其进行初始化。 实现此目的的最简单方法是使用 UIApplicationDelegate:

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
          AppCenter.start(withAppSecret: "{Your App Secret}", services:[
            Crashes.self, Analytics.self, Distribute.self])
        return true
    }
}

然后在 中使用 UIApplicationDelegateAdaptorstruct

@main
struct YourAppName: App {

  @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

如果有 Catalyst 应用程序,则可以同时为 iOS 和 macOS 传递应用机密:

AppCenter.start(withAppSecret:"ios={Your iOS App Secret};macos={Your macOS App Secret}", services: [Analytics.self, Crashes.self])

警告

不建议在源代码中嵌入应用机密。

如果需要单独启动 App Center 服务,应:

  1. 使用应用机密配置或启动它。
  2. 如果代码可以多次调用,检查是否已配置 App Center。
  3. 在没有应用机密的情况下启动所需的服务 () 。
[MSACAppCenter configureWithAppSecret:@"{Your App Secret}"];
if ([MSACAppCenter isConfigured]) {
   [MSACAppCenter startService:[MSACAnalytics class]];
   [MSACAppCenter startService:[MSACCrashes class]];
}
AppCenter.configure(withAppSecret: "{Your App Secret}")
if AppCenter.isConfigured {
    AppCenter.startService(Analytics.self)
    AppCenter.startService(Crashes.self)
}

4.3 将占位符替换为应用机密

请确保将文本替换为 {Your App Secret} 应用程序的实际值。 可以在 App Center 门户的“入门”页或“设置”页上找到应用机密。

入门页包含上述代码示例,其中包含应用机密,你可以复制粘贴整个示例。

上面的示例演示如何使用 start:withServices (start(withAppSecret:services:) for Swift) 方法,并包括 App Center Analytics 和 App Center 崩溃。

如果不想使用这两个服务之一,请从上面的方法调用中删除相应的参数。

除非在 start 方法中将每个模块显式指定为参数,否则不能使用该 App Center 服务。 此外, start:withServices Swift) API (start(withAppSecret:services:) 只能在应用的生命周期中使用一次 - 所有其他调用都将向控制台记录警告,并且只有第一次调用中包含的模块可用。

例如 - 如果要加入 App Center Analytics,则应修改 start:withServices Swift) API 调用 (start(withAppSecret:services:) ,如下所示:

[MSACAppCenter start:@"{Your App Secret}" withServices:@[[MSACAnalytics class]]];
AppCenter.start(withAppSecret: "{Your App Secret}", services: [Analytics.self])

很好,你已准备好在 SDK 自动收集的门户上可视化分析和崩溃数据。

查看 App Center Analytics 文档App Center 崩溃文档 ,了解如何自定义和使用这两个服务的更高级功能。

若要了解如何开始使用应用内更新,请阅读 App Center Distribute 的文档。