iOS API

Instana iOS API 是一套函数,用于在 iOS 应用程序中植入自定义代码,以捕获数据并将其发送到 Instana 后台。

Instana iOS 代理 API

您可以通过 Instana 类方法启动 Instana iOS 代理。

设置 Instana iOS 代理

通过调用设置函数,在 didFinishLaunchingWithOptions 早期初始化 Instana iOS 代理。 不要拖延 Instana 的启动时间。 确保在应用程序启动后立即调用设置。 您可以使用 Instana.collectionEnabled 标志启用或禁用 Instana 延迟。

static func setup(key: String, reportingURL: URL)

配置参数

下表概述了配置参数:

表 1. 配置参数
参数 描述
key (String) Instana 监视配置密钥。
reportingURL (URL) URL ,指向要发送监控数据的 Instana 实例。
httpCaptureConfig (HTTPCaptureConfig( ,可选 ) 默认情况下,会自动捕获 HTTP 请求和响应。 要禁用自动监控,请将该参数设置为 manual ,或同时使用这两种模式和 automaticAndManual HTTP 捕获配置。 要关闭 HTTP 会话监控,可以通过 none
collectionEnabled (Bool( ,可选 ) 默认情况下,数据收集与设置一起开启。 要设置 Instana 但忽略任何数据收集,请在设置中将该参数设置为 false 。 该参数适用于在代理收集数据前需要用户同意的情况。 缺省值为 true
enableCrashReporting (Bool( ,可选 ) 默认情况下,崩溃报告在设置中被禁用。 稍后可使用此属性启用崩溃报告,这样应用程序就可以开始收集 Instana 崩溃数据。 在需要用户明确同意后,代理才能收集碰撞数据的情况下,该属性最为有用。 缺省值为 false
slowSendInterval (Double( ,可选 ) 该参数通过提供一个有效的正数(单位为秒)(范围为 2-3600)来启用信标发送失败时的慢速发送模式功能。 默认值为 0.0 ,表示禁用慢速发送模式。
usiRefreshTimeIntervalInHrs (Double( ,可选 ) 该参数设置 usi ( userSessionIdentifier ) 刷新频率。 您需要以小时为单位提供价值。 默认值为 -1.0 ,这意味着永远不会刷新用户会话 ID。 以下参数值表示 usi 的状态:

- 负数:该值表示 usi 保留默认行为,永不刷新。
- 正数:该值表示 usi 按指定时间间隔刷新。
- 零:该值表示 usi 不会发送到 Instana 后台,因此标识符被停用。
autoCaptureScreenNames (Bool( ,可选 ) (公开预览)该参数设置为 true 时,可自动捕捉屏幕名称。
直接或间接将 UIViewController 作为超类的视图控制器都可以自动捕捉。
对于 UIKit,设置了 accessibilityLabelnavigationItem.title 的视图控制器会被自动捕获。 视图名称设置为 ( accessibilityLabel 或 navigationItem.title) @( ViewControllerClassName )。 如果两者都未设置,则视图名称为 @( ViewControllerClassName )。
对于 SwiftUI, ,设置了 navigationTitle 的视图会被自动捕获,否则会被忽略。
默认值为 false
debugAllScreenNames (Bool( ,可选 ) (公开预览)该参数可调试 autoCaptureScreenNames。 当 debugAllScreenNames 设置为 trueautoCaptureScreenNames 也设置为 true 时,会捕获所有视图控制器。
autoCaptureScreenNames 设置为 false 时,会忽略 debugAllScreenNames
在生产环境中, debugAllScreenNames 参数必须设置为 false 。 缺省值为 false
queryTrackedDomainList (regex( ,可选 ) 默认情况下, iOS 代理会收集完整的 URL ,其中包括所有参数。 使用此设置,您可以配置代理只收集与指定正则表达式列表相匹配的 URL 的参数。 根据所提供的正则表达式列表, iOS 代理会对 URL 进行如下跟踪:

- 如果 URL 与列表中的条目匹配,则会收集包括所有参数在内的整个 URL。
- 如果 URL 与列表中的条目不匹配,则不会向 Instana 后台发送查询参数和 URL 的片段。
- 如果提供的列表为空,则应用默认行为,并跟踪完整的 URL 及其参数。
rateLimits (RateLimits( ,可选 ) 该参数允许您自定义特定时间间隔内可发送信标的数量限制。 有三个可用选项:DEFAULT_LIMITS、MID_LIMITS 和 MAX_LIMITS。 默认情况下,选择 DEFAULT_LIMITS。

DEFAULT_LIMITS :
- 每 5 分钟 500 个信标
- 每 10 秒 20 个信标
MID_LIMITS :
- 每 5 分钟 1000 个信标
- 每 10 秒 40 个信标
MAX_LIMITS :
- 每 5 分钟 2500 个信标
- 每 10 秒 100 个信标
dropBeaconReporting (Bool( ,可选 ) 该参数用于报告信标丢失。
当信标数量达到速率限制时,新的信标会被丢弃,而不是发送到 Instana 服务器。 如果该参数设置为 true ,则会在内部跟踪信标丢失情况,当信标计数不再超过速率限制时,信标报告就会发送到 Instana 后台。
默认值为 false
trustDeviceTiming (Boolean( ,可选 ) 启用该选项后,每个信标都会包含一个标志,指示 Instana 后台信任信标创建时间戳。
默认情况下,如果信标在创建超过 30 分钟后才被接收,后端会用服务器的接收时间覆盖创建时间。
此设置的默认值为假。
enableW3CHeaders (Boolean( ,可选 ) 启用此选项后, iOS 代理会在受监控的 API 调用中包含 traceparenttracestate 标头。 即使后端没有使用 Instana 代理,这些标头也能实现后端相关性。 在这种情况下,您需要使用兼容的监控工具(如 OpenTelemetry ) 将后台跟踪详情导出到 Instana 后台。 如果禁用此选项,当 Instana 代理也监控后端时,后端相关性才有可能实现。 默认设置为“假”。
perfConfig (InstanaPerformanceConfig( ,可选 ) 该参数用于配置应用程序性能监控。 有关性能配置参数,请参见表 2

性能配置参数

下表概述了性能配置参数

表 2. 配置参数
参数 描述
enableAppStartTimeReport (Bool( ,可选 ) 通过该参数可以报告应用程序的启动时间,例如冷启动时间和热启动时间。
* 冷启动时间 : iOS app 从零开始启动(而不是从后台启动)所需的时间。 测量从动态库初始化后开始,到应用程序用户界面开始交互时结束。
* 热启动时间 :启动未完全终止并在后台运行的应用程序所需的时间。
启动时间以毫秒为单位。
缺省值为 true
enableAnrReport (Bool( ,可选 ) 此参数可用于报告应用程序无法响应的情况 (application not respond)。
默认值为 false
anrThreshold (Double( ,可选 ) 该参数以秒为单位指定应用程序被视为未响应的时间 (application not respond)。
只有当 enableAnrReport 设置为 true 时才适用。
默认值为 3.0
enableLowMemoryReport (Bool( ,可选 ) 使用该参数可以报告内存不足的通知。
默认值为 false

示例

import InstanaAgent

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    Instana.setup(key: "<Your Instana Key>", reportingURL: URL(string: "<Your Instana URL>")!)
    ....
    return true
}

手动 HTTP 捕捉配置如下例所示。 要更改默认设置,请运行以下命令:

let options = InstanaSetupOptions(httpCaptureConfig: .manual)
Instana.setup(key: <Your Key>, reportingURL: <Your Instana URL>, options: options)

当前配置

Instana 类对象包含以下属性,用于检索当前配置:

表 3. 当前配置
属性 描述
keyString,可选) Instana 监视配置密钥。
reportingURLURL,可选) URL ,指向要发送监控数据的 Instana 实例。

示例

let key = Instana.key
let url = Instana.reportingURL

会话标识

每个 Instana 代理实例都有一个唯一的会话标识符,您可以将其用于应用程序中的其他用途。

表 4. 会话标识
属性 描述
sessionIDString,可选) 当前会话标识。 该会话 ID 在设置过程中创建。

示例

let sessionID = Instana.sessionID

自动 HTTP 监测

默认情况下,会自动捕获 HTTP 会话。 Instana iOS 代理使用基金会的 NSURLProtocol 监控 HTTP 的请求和响应。 要通过 NSURLProtocol 自动观测所有 NSURLSession ,就必须在 NSURLSession 中采用一些方法进行旋转。 要退出 HTTP 会话自动监控,必须手动捕获每个请求和响应。

手动 HTTP 监测

要手动捕捉 HTTP 会话,必须使用 httpCaptureConfig: .manual 设置 Instana 并使用相应功能。 您可以使用 URLRequestURL 手动捕获 HTTP 请求和响应。

自动和手动 HTTP 监测

要自动或手动捕获 HTTP 会话,必须使用 httpCaptureConfig: .automaticAndManual 设置 Instana。 您可以使用自动仪器或手动捕获 HTTP 请求和响应。

开始采集(URLRequest)

开始 HTTP 捕捉 URLRequest 的函数,以及可选的视图名称。 返回 HTTPMarker 对象。 需要使用该对象来设置 HTTP 响应的结果。

static func startCapture(_ request: URLRequest?, viewName: String? = nil) -> HTTPMarker
配置参数

下表概述了配置参数:

表 5. 配置参数
参数 描述
request (URLRequest) 要捕获的 URLRequest
viewNameString,可选) 与该请求相关的可见视图的名称。

返回:HTTP 标记,用于设置 HTTP 响应的结果(HTTP 状态码、大小、错误)。

开始捕捉 ( URL )

此函数启动 HTTP 捕捉 URL、 HTTP 方法和可选的视图名称。 返回 HTTPMarker 对象。 稍后您需要使用该对象来设置 HTTP 响应的结果。

static func startCapture(url: URL, method: String, viewName: String? = nil) -> HTTPMarker
配置参数

下表概述了配置参数:

表 6. 配置参数
参数 描述
url (URL) URL 捕捉
method (String) 请求的 HTTP 方法
viewNameString,可选) 与该请求相关的可见视图的名称

返回:HTTP 标记,用于设置 HTTP 响应的结果(HTTP 状态码、大小、错误)。

设置 HTTP 响应大小

确定响应大小后,在 HTTPMarker 上调用此方法。

func set(responseSize: Instana.Types.HTTPSize)
配置参数

下表概述了配置参数:

表 7. 配置参数
参数 描述
responseSize (HTTPSize) httpSize 对象包含 headerBytesbodyBytesbodyBytesAfterDecoding

确保在调用 finishcancel 之后,不再调用 HTTPMarker 上的任何方法。

HTTP 响应大小

您可以使用以下初始化程序创建 HTTPMarker.Size

init(response: URLResponse, transactionMetrics: [URLSessionTaskTransactionMetrics]?)
配置参数

下表概述了配置参数:

表 8. 配置参数
参数 描述
response (URLResponse) URLResponse 对象
transactionMetrics[URLSessionTaskTransactionMetrics],可选) 具有 URLSessionTaskTransactionMetrics 的可选数组

您也可以直接将大小值作为参数传递,创建 HTTPMarker.Size 对象:

HTTPMarker.Size(header: Instana.Types.Bytes, body: Instana.Types.Bytes, bodyAfterDecoding: Instana.Types.Bytes)

完成捕获(URLResponse)

通过 URLResponse 和一个可选的 Error 完成请求后,在 HTTPMarker 上调用 finish

func finish(response: URLResponse?, error: Error?)

完成捕捉 ( HTTPCaptureResult )

您也可以使用 HTTPCaptureResult 完成捕捉。

let size = HTTPMarker.Size(header: 123, body: 1024, bodyAfterDecoding: 2048)
let result = HTTPCaptureResult(statusCode: statusCode, backendTracingID: "Instana-backend-tracing-id", responseSize: size, error: error)
marker.finish(result: result)

取消捕获

如果请求在完成前取消,则在 HTTPMarker 上调用此方法。 当您调用 cancel 时,状态将设置为 "内部失败",并带有 NSURLErrorCancelled 状态。

func cancel()

完整的手动 HTTP 监控示例 (URLResponse)

let marker = Instana.startCapture(request, viewName: "User: Details")
URLSession.shared.dataTask(with: request) { data, response, error in
    marker.finish(response: response, error: error)
}.resume()

您也可以通过 URLSessionDelegate 手动设置 HTTP 响应大小,如下例所示(在呼叫完成或取消之前):

func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
    guard let response = task.response else { return }
    marker.set(responseSize: HTTPMarker.Size(response: response, transactionMetrics: metrics.transactionMetrics))
}

完整的手动 HTTP 监控示例 ( URL )

let url = URL(string: "https://www.example.com/user/123/details")!
let marker = Instana.startCapture(url: url, method: "GET", viewName: "Home")
YourNetworkManager(url: url, method: "GET") { (statusCode, error) in
    let size = HTTPMarker.Size(header: 123, body: 1024, bodyAfterDecoding: 2048) // optionally
    let backendTracingID = "Instana-backend-tracing-id" // optionally
    let result = HTTPCaptureResult(statusCode: statusCode, backendTracingID: backendTracingID, responseSize: size, error: error)
    marker.finish(result: result)
}.resume()

视图数

Instana 可按逻辑视图细分应用程序指标。 为此,您需要为用户当前查看的视图添加提示。 该视图名称可通过setView(name: String) 设置。 该视图名称会附加到所有受监控的信标上,直到您使用其他名称再次调用 setView 。 不要使用类(即 WebViewController )这样的技术或通用名称来定义视图。 使用可读的视图名称。 例如, product detail pagepayment selection。 这就减少了与现有代码直接相关的页面。 考虑在 viewDidAppear 中设置视图名称。 设置视图名称使 Instana 能够跟踪页面转换以及页面加载

当应用程序改变状态时(例如,从活动状态变为非活动状态或后台),视图名称会自动更新。 当应用程序处于非活动状态(接收短信)时,视图名称为 Inactive 。 应用程序离开前台后,它将被设置为 Background

static func setView(name: String)

配置参数

下表概述了配置参数:

表 9. 配置参数
参数 描述
name (String) 视图的名称

示例

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    Instana.setView(name: "User: Details")
}

要获取当前视图名称,您可以使用类变量 viewName。 视图名称的值可能为 InactiveBackground,具体取决于您的应用程序状态。

表 10. 属性
属性 描述
viewNameString,可选) 当前视图名称通过 setView(name:) 设置。

示例

let viewName = Instana.viewName

标识用户

用户的特定信息可以有选择地与传输到 Instana 的数据一起发送。 然后可以使用此信息解锁更多功能,例如:

  • 计算受错误影响的用户数量
  • 筛选特定用户的数据
  • 查找发起视图更改或 HTTP 请求的用户

缺省情况下,Instana 不会将任何用户可标识信息与信标关联。 在将任何可识别用户身份的信息与信标相关联之前,您必须查阅相关的数据保护法律。 用用户 ID 识别用户。 对于 Instana 来说,这是一个透明的 String ,仅用于计算某些指标。 您还可以使用 userNameuserEmail 访问更多筛选器来显示用户信息。

如果您处理的是匿名用户,因此无法访问用户 ID,您也可以使用会话 ID。 会话 ID 在过滤数据方面不如用户 ID 有用,但却是计算受影响用户或唯一用户指标的好指标。 考虑设置一个用户名,如 Anonymous ,以明确区分已通过身份验证的用户和未通过身份验证的用户。 会话 ID 可能是敏感数据,具体取决于所使用的框架或平台。 考虑对会话 ID 进行散列处理,以避免向 Instana 传输可授予访问权限的数据。

已经传送到Instana的数据不能追溯更新。 在应用程序启动过程中立即调用此应用程序接口。

static func setUser(id: String, email: String?, name: String?)

配置参数

下表概述了配置参数:

表 11. 配置参数
参数 描述
id (String) 用户的标识符
emailString,可选) 用户的电子邮件地址
nameString,可选) 用户的名称

对于您不希望设置的值,可以传递 nil

示例

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
     Instana.setup(key: InstanaKey, reportingURL: InstanaURL)
     Instana.setUser(id: someID, email: "email@example.com", name: "John")
     return true
}

或者,您可以单独设置用户属性。

用户标识

设置用户 ID:

static func setUser(id: String)
配置参数

下表概述了配置参数:

表 12. 配置参数
参数 描述
id (String) 用户的标识符

用户电子邮件地址

设置用户电子邮件地址:

static func setUser(email: String)
配置参数

下表概述了配置参数:

表 13. 配置参数
参数 描述
email (String) 用户的电子邮件地址

用户名

设置用户名:

static func setUser(name: String)

参数

下表概述了这些参数:

表 14. 参数
参数 描述
name (String) 用户的名称

元数据

元数据信息附在传输的数据之后。 考虑使用元数据来跟踪用户界面配置值、设置、功能标志或任何对分析有用的附加上下文。 确保在应用程序启动过程中设置元数据,为所有传输数据分配键或值。

static func setMeta(value: String, key: String)

参数

下表概述了这些参数:

表 15. 参数
参数 描述
value (String) 要添加为元数据的键值对的 value
key (String) 要添加为元数据的键值对的 key

示例

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    Instana.setup(key: InstanaKey, reportingURL: InstanaURL)
    Instana.setMeta(value: "ReactNative", key: "Platform")
    Instana.setMeta(value: "DEBUG", key: "Environment")
    return true
}

将 URLSession 排除在监控之外

您可以将自定义 URLSession 排除在 Instana iOS 代理监控之外。

static func ignore(_ session: URLSession)

配置参数

下表概述了配置参数:

表 16. 配置参数
参数 描述
session (URLSession) 将 URLSession 排除在监控范围之外

示例

let session = URLSession(configuration: .default)
Instana.ignore(session)

将 URL 排除在监控范围之外

您可以排除与正则表达式匹配的 URL,以防止传输到 Instana。 使用该功能的一个很好的例子是排除所有包含密码等敏感数据的 HTTP 请求。

static func setIgnoreURLs(matching regex: [NSRegularExpression])

配置参数

下表概述了配置参数:

表 17. 配置参数
参数 描述
regex ([NSRegularExpression]) 与要忽略的 URL 匹配的 NSRegularExpression 对象数组

示例

let regex = try! NSRegularExpression(pattern: "/.*(&|\?)password=.*/i")
Instana.setIgnoreURLs(matching: [regex])

在示例中,查询中包含密码的所有 URL 都会被忽略。

或者,您也可以忽略完整的 URL,类似于下面的示例:

Instana.setIgnore(urls: [URL(string: "https://www.example.com")!])

报告自定义事件

自定义事件可以向 Instana 报告非标准活动、重要交互和自定义时间。 它对分析未检测到的错误(面包屑)和跟踪更多性能指标特别有帮助。

static func reportEvent(name: String, timestamp: Instana.Types.Milliseconds? = nil, duration: Instana.Types.Milliseconds? = nil, backendTracingID: String? = nil, error: Error? = nil, meta: [String: String]? = nil, viewName: String? = Instana.viewName)

配置参数

下表概述了配置参数:

表 18. 配置参数
参数 描述
name (String) 定义应用程序中发生的哪类事件会导致自定义信标的传输。
timestampInt64,可选) 事件启动时的时间戳记(以毫秒为单位)。 如果没有提供时间戳,则使用当前时间作为时间戳。 如果您没有提供时间戳,但设置了持续时间,那么时间戳将通过从当前时间减去持续时间来计算。 (时间戳 = 当前时间 - 持续时间)
durationInt64,可选) 事件持续的持续时间(以毫秒计)。 缺省值为 0。
backendTracingIDString,可选) 用于为该事件创建后端跟踪的标识。
errorError,可选) 用于提供更多上下文的错误对象。
meta[String: String],可选) 键 - 值数据,可用于向 Instana 发送此单一事件的元数据。
viewNameString,可选) 您可以传递一个字符串以将请求分组到视图。 如果发送 nil, viewName 将被忽略。 或者,您也可以省略 viewName 参数,使用在 setView(name: String) 中设置的当前视图名称。
customMetricDouble,可选) 自定义公制数据,精度可达小数点后 4 位。 默认值为 Double.nan ,表示 customMetric 不是由调用者设置的。 请勿在此指标中包含敏感信息。

示例

Instana.reportEvent(name: "Event-Name")
Instana.reportEvent(name: "Event-Name", viewName: "User: Details")
Instana.reportEvent(name: "Event-Name", timestamp: 1590149955086, duration: 124842, backendTracingID: "some-id", error: NSError(domain: "Some", code: -1, userInfo: nil), meta: ["Key": "Value"], viewName: "User: Details")
Instana.reportEvent(name: "Event-Name", customMetric: 1234.567)

启用或禁用采集

您可以在运行期间随时启用数据收集功能。 它可以延迟开始数据收集(例如,在用户同意后)。

表 19. 属性
属性 描述
collectionEnabled (Bool) 启用或禁用数据收集的标志

示例

Instana.collectionEnabled = true

启用日志记录

Instana iOS 代理具有日志记录功能,用于调试。 在 Xcode 中添加环境变量 INSTANA_DEBUG_LOGLEVEL 。 作为值,您必须传递以下值之一作为日志级别:

  • 0 = 调试信息、警告和错误
  • 1 = 警告和错误
  • 2 => 仅有错误

Redact URL 查询参数

收集到的 URL 中的查询参数可能包含敏感数据。 因此,Instana iOS 代理支持为必须编辑其值的查询参数键指定 regex 模式。 任何编辑值都将用 <redacted> 代替。 在向 Instana 报告之前,会在 Instana 代理内部进行重处理。 因此,秘密无法送达 Instana 进行处理。 秘密无法在用户界面中进行分析,也无法使用 Instana API 进行检索。

缺省情况下,Instana iOS 代理程序配置了包含三个正则表达式模式的列表,用于自动编辑键的查询参数值:“password”、“key”和“secret”。 Redaction 仅适用于自动监控的请求及其相关日志。 不会编辑手动监视的请求。

static func redactHTTPQuery(matching regex: [NSRegularExpression])

配置参数

下表概述了配置参数:

表 20. 配置参数
参数 描述
regex ([NSRegularExpression]) 一个 NSRegularExpression 对象数组,这些对象与要编辑的值对应的键相匹配。

示例

let regex = try! NSRegularExpression(pattern: #"pass(word|wort)"#)
Instana.redactHTTPQuery(matching: [regex])

在本例中, HTTP 参数键 "password "或 "passwort "的值被编辑。 采集的 URL https://example.com/accounts/?password=123&passwort=459 显示为 https://example.com/accounts/?password=<redacted>&passwort=<redacted>

Instana iOS 代理不支持将路径参数 (/account/<account id>/status) 或矩阵参数 (/account;accountId=<account id>/status) 视为机密。

捕捉 HTTP 标头字段

HTTP iOS 代理可捕获请求和响应标头。 您可以使用正则表达式来定义 iOS 代理程序需要捕获的 HTTP 头字段的键。

public static func setCaptureHeaders(matching regex: [NSRegularExpression])

配置参数

下表概述了配置参数:

表 21. 配置参数
参数 描述
regex ([NSRegularExpression]) NSRegularExpression 对象组成的数组,这些对象与要捕获的 HTTP 请求和响应标头的关键字相匹配。

示例

let regex = try! NSRegularExpression(pattern: #"X-Key"#, options: [.caseInsensitive])
Instana.setCaptureHeaders(matching: [regex])

本例显示了 HTTP 标头字段,其关键字为 X-KeyX-KEY

慢速发送模式

可选:您可以打开慢速发送模式功能。

默认情况下,如果信标发送失败,Instana 代理会尝试重新发送信标,直到发送成功。 它与某些蜂窝网络配合不佳。 启用慢速发送模式功能后,信标发送间隔将改为分配给该参数的时间值。 slowSendInterval 参数指定的时间值。 每次发送尝试只包含一个信标,而不是一批信标(一批信标最多 100 个)。 Instana 代理处于慢速发送模式,直到成功发送一个信标。

的有效时间范围是 slowSendInterval 的有效时间范围是 2-3600(秒)。

示例

import InstanaAgent
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    let options = InstanaSetupOptions(slowSendInterval: 60.0)
    if !Instana.setup(key: InstanaKey, reportingURL: InstanaURL, options: options) {
        // Error handling here
    }
    ....
    return true
}

用户会话 ID

默认情况下,会跟踪用户会话。 ID 是随机生成的通用唯一标识符 (UUID)。 该 ID 在安装应用程序时保持不变。 参数配置用户会话 ID 的过期时间。 usiRefreshTimeIntervalInHrs 参数配置用户会话 ID 的过期时间。

以下参数值表示用户会话 ID 的状态:

  • 负数:用户会话 ID 默认设置为永不过期。 该设置的默认值为 -1。
  • 正数:用户会话 ID 会在设定时间后刷新,即生成并使用一个新的 UUID。
  • 零: 禁用用户会话 ID。 该值用 0.0 表示。

示例

import InstanaAgent
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    let options = InstanaSetupOptions(usiRefreshTimeIntervalInHrs: 24.0)
    if !Instana.setup(key: InstanaKey, reportingURL: InstanaURL, options: options) {
        // Error handling here
    }
    ....
    return true
}

隐私清单文件

隐私清单文件自 iOSAgent 1.8.0 版起支持。 如果应用程序符合 Apple 的要求,则无需额外配置即可使用该功能。