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 门户中创建了应用,则可以跳过此步骤。
- 前往 appcenter.ms。
- 注册或登录,点击门户右上角显示 “添加新” 的蓝色按钮,然后从下拉菜单中选择“ 添加新应用 ”。
- 输入应用的名称和可选说明。
- 选择 “iOS ”作为 OS,选择 “Objective-C/Swift ”作为平台。
- 点击右下角显示 “添加新应用”的按钮。
创建应用后,可以在 App Center 门户的“设置”页上获取其应用机密。 在 “设置” 页面右上角,单击 三个垂直点 ,然后选择 Copy app secret
获取应用机密。
3. 添加 App Center SDK 模块
可以通过 Cocoapods、 Carthage、 Swift 包管理器或手动将二进制文件添加到项目中,将适用于 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 模拟器 (,请考虑使用其他集成方法使其正常工作。
向 添加以下依赖项,
podfile
以将 App Center Analytics 和 App Center 崩溃包含在应用中。 此操作将拉取以下框架: AppCenter、 AppCenterAnalytics 和 AppCenter 崩溃。 相反,可以在应用中指定所需的服务。 每个服务都有自己的子规格,它们都依赖于 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'
运行
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 指令
向 添加以下依赖项
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
运行
carthage update
以将依赖项提取到 Carthage/Checkouts 文件夹中。 然后生成每个框架。打开应用程序目标的“ 常规 设置”选项卡。将 AppCenter.framework、 AppCenterAnalytics.framework 和 AppCenterCrashes.framework 文件从 Carthage/Build/iOS 文件夹拖放到 Xcode 的项目导航器中。 启动 SDK 需要 AppCenter.framework 。 如果未将其添加到项目中,其他模块将无法工作,并且应用将无法编译。
将显示一个对话框,确保已选中应用目标。 然后单击“完成”。
注意
如果在生成阶段使用
carthage copy-frameworks
,则不应添加 App Center SDK,因为它们作为静态框架提供。
现在,你已将框架集成到应用程序中,接下来可以启动 SDK 并使用 App Center 服务。
3.3 通过 Swift 包管理器集成
- 在“Xcode”菜单中,单击“ 文件 > Swift 包 > ”“添加包依赖项”。
- 在出现的对话框中,输入存储库 URL: https://github.com/microsoft/appcenter-sdk-apple.git。
- 在 “版本”中,选择“ 下一个主要 版本”并采用默认选项。
- 在“ 包产品 ”列中选择所需的模块。
现在,你已将框架集成到应用程序中,接下来可以启动 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。 可以像往常框架一样集成它们,如下所述。
下载以 zip 文件的形式提供的 App Center SDK 框架。
解压缩该文件,你将看到一个名为 AppCenter-SDK-Apple 的文件夹,其中包含每个平台文件夹中每个 App Center 服务的不同框架。 项目中需要名为
AppCenter
的框架,因为它包含在不同模块之间共享的代码。[可选]为第三方库创建子目录。
- 最佳做法是,第三方库通常位于一个子目录中,通常称为 Vendor。 如果项目未使用库的子目录进行组织,请立即创建 供应商 子目录。
- 在 Xcode 项目中创建一个名为 “供应商 ”的组,以模拟磁盘上的文件结构。
在 Finder 中打开解压缩的 AppCenter-SDK-Apple 文件夹,并将该文件夹复制到项目所需位置的文件夹中。 文件夹包含 App Center SDK 支持的其他平台的子文件夹中的框架,因此可能需要删除不需要的子文件夹。
在 Xcode 中将 SDK 框架添加到项目中:
- 确保项目导航器 (⌘+1) 可见。
- 现在 & 将 AppCenter.framework、 AppCenterAnalytics.framework 和 AppCenterCrashes.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
}
}
然后在 中使用 UIApplicationDelegateAdaptor
struct
:
@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 服务,应:
- 使用应用机密配置或启动它。
- 如果代码可以多次调用,检查是否已配置 App Center。
- 在没有应用机密的情况下启动所需的服务 () 。
[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 的文档。