Raygun4Apple

Raygun 为 iOS、tvOS 和 macOS 提供的提供程序,支持崩溃报告和真实用户监控。

官方支持

注意:raygun4apple 可能会与更早版本的操作系统一起使用,但我们建议更新到我们构建和测试的版本,以避免遇到任何意外问题。

安装

使用 Swift Package Manager

从 Xcode

  1. 选择 File > Add Package Dependencies…
  2. 在右上角的搜索字段中,输入 raygun4apple 的 Github URL:https://github.com/MindscapeHQ/raygun4apple.git
  3. 点击“Add Package”,然后在“Add to Target”部分下选择你的项目。再次点击“Add Package”。

A screenshot showing the installation of Raygun inside Xcode

现在你可以 配置客户端 了。

或者:手动

如果你没有使用 Xcode 来管理你的软件包,你可以更新你的 Package.swift 文件以包含 raygun4apple 作为依赖项。

这是一个使用 raygun4apple 作为依赖项的 macOS CLI 应用程序的示例

import PackageDescription

let package = Package(
    name: "macos-cli",
    dependencies: [
        //Note - the version must be atleast 2.0.0 as this is earliest release of this package through SPM.
        .package(url: "https://github.com/MindscapeHQ/raygun4apple.git", from: "2.0.0"),
    ],
    targets: [
        .executableTarget(
            name: "macos-cli",
            dependencies: ["raygun4apple"])
    ]
)

使用 CocoaPods

要使用 CocoaPods 集成 Raygun,请更新你的 Podfile 以包含

pod 'raygun4apple'

更新后,你可以从终端运行 pod install

使用 GitHub releases

可以在此处找到最新版本。框架作为压缩文件附加到每个版本。 可以下载、解压缩并包含在您的项目目录中。

包含后,转到应用程序目标的“General”设置,并将 raygun4apple 框架添加到“Frameworks, Libraries, and Embedded Content”部分。 确保将框架设置为“Embed & Sign”。

使用 Raygun

Swift

要使用 Raygun,请在你的 Swift 文件中导入该软件包。 这是一个导入 raygun4apple、初始化提供程序并发送测试异常的示例。 请务必将 YOUR_API_KEY_HERE 替换为你 Raygun 应用程序设置屏幕中的 API 密钥。

import raygun4apple

let raygunClient = RaygunClient.sharedInstance(apiKey: "YOUR_API_KEY_HERE")
raygunClient.enableCrashReporting()
raygunClient.send(exception: NSException.init(name: .genericException, reason: "This is an exception from Raygun4Apple!"))

注意:如果您收到 A server with the specified hostname could not be found 错误,您可能需要为您的应用程序启用出站连接。在左侧导航器中选择你的项目目标,然后选择“Signing & Capabilities”选项卡,并选中“App Sandbox”部分中的 Outgoing Connections (Client)

Swift UI

你可能想查看我们的Swift UI 示例应用程序

你可能需要在你的 AppDelegate 中启动 Raygun。 默认情况下,较新的 Swift UI 应用程序不附带 AppDelegate,因此你可以按照这些说明将一个添加到你的项目中(对于 macOS,你需要使用 NSApplication 代替)

完成后,你的 AppDelegate.swift 应该如下所示

import Foundation
import UIKit
import raygun4apple


class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {

      let raygunClient = RaygunClient.sharedInstance(apiKey: "YOUR_API_KEY_HERE")
      raygunClient.enableCrashReporting()

      return true
    }
}

你现在正在跟踪应用程序中的崩溃,并且可以使用 RaygunClient.sharedInstance() 手动报告,例如

RaygunClient.sharedInstance().send(exception: NSException.init(name: .genericException, reason: "This is an exception from Raygun4Apple!"))

识别客户

默认情况下,每个用户将被识别为匿名用户/客户。 但是,你可以使用以下代码段设置更详细的客户信息。

RaygunClient.sharedInstance().userInformation = RaygunUserInformation.init(
    identifier: "123",
    email:      "ronald@raygun.com",
    fullName:   "Ronald Raygun",
    firstName:  "Ronald",
    anonymous:  false,
    uuid:       UUID().uuidString
)

(如果您想省略此信息的某些部分,则在 RaygunUserInformation 上提供了更多初始化程序)

现在,你的崩溃将被跟踪为在 Raygun 崩溃报告中影响此用户

Screenshot showing affected users in the Raygun Crash Reporting Dashboard

Objective-C

在你的 AppDelegate 类文件中,导入目标平台的头文件。

#import <raygun4apple/raygun4apple_iOS.h>

通过将以下代码段添加到你的 AppDelegate application:didFinishLaunchingWithOptions 方法来初始化 Raygun 客户端

[RaygunClient sharedInstanceWithApiKey:@"_INSERT_API_KEY_"];
[RaygunClient.sharedInstance enableCrashReporting];
[RaygunClient.sharedInstance enableRealUserMonitoring];
[RaygunClient.sharedInstance enableNetworkPerformanceMonitoring]; // Optional

发送测试错误事件

为确保 Raygun 客户端配置正确,请尝试使用以下代码段发送测试崩溃报告。

[RaygunClient.sharedInstance sendException:@"Raygun has been successfully integrated!"
                                withReason:@"A test crash report from Raygun"
                                  withTags:@[@"Test"]
                            withCustomData:@{@"TestMessage":@"Hello World!"}];

设置客户

默认情况下,每个用户将被识别为匿名用户/客户。 但是,你可以使用以下代码段设置更详细的客户信息。

RaygunUserInformation *userInfo = nil;
userInfo = [[RaygunUserInformation alloc] initWithIdentifier:@"ronald@raygun.com"
                                                   withEmail:@"ronald@raygun.com"
                                                withFullName:@"Ronald Raygun"
                                               withFirstName:@"Ronald"];
RaygunClient.sharedInstance.userInformation = userInfo;

文档

有关更多信息,请访问我们的公共文档此处