Mobile RUM - iOS SDK
The Mobile RUM SDK provides a customizable suite of tools to analyze and optimize the performance of iOS applications. Isolate ANR and network changes, quickly detect application crashes, identify slow or frozen frames and more.
To see an example of how to deploy the Mobile RUM iOS SDK, navigate to our GitHub repository here.
Prerequisites
iOS version 13
, macOS version 10_15
, and tvOS version 13
or above. Check your iOS SDK version with the following command:
xcodebuild -showsdks
Install & Instrument Your iOS Application
Step 1: Install Swift Package
Add the following line in Package.swift
in dependencies
.package(url: "https://github.com/middleware-labs/middleware-ios", from: "1.0.0"),
Step 2: Initialize Middleware iOS SDK
import SwiftUI import MiddlewareRum @main struct YourApp: App { init() { do { try MiddlewareRumBuilder() .globalAttributes(["app.version" : "1.0.0"]) .target("<target>")
Custom Configurations
Logs
Create Custom logs using the Middleware API
MiddlewareRum.info("Some information") MiddlewareRum.debug("Some information") MiddlewareRum.trace("Some information") MiddlewareRum.warning("Some information") MiddlewareRum.error("Some information") MiddlewareRum.critical("Some information")
Errors to Traces
Create Custom logs using the Middleware API
MiddlewareRum.addError("Error, unable to process")
Exceptions
Create Custom exceptions using the Middleware API
MiddlewareRum.addException(e: NSException(name: NSExceptionName(rawValue: "RuntimeException"), reason: "I am a custom exception"))
Set Your Screen Name
MiddlewareRum.setScreenName("WebView")
Set Global Attributes
MiddlewareRum.setGlobalAttributes(["some": "value"])
WebView Instrumentation
Use WebView to run native iOS apps
MiddlewareRum.integrateWebViewWithBrowserRum(view: webView)
Session Recording
The maximum session recording duration is four hours. If users are inactive for more than 15 minutes at a time, session recordings will be stopped. If users exceed more than four hours in a single session or become active again after the 15-minute inactivity timeout, a new session will be automatically created.
Session recording is enabled by default. Disable this feature by passing .disableRecording()
in the following function:
MiddlewareRumBuilder() .globalAttributes(["customerId" : "123456"]) .target("<target>") .serviceName("Mobile-SDK-iOS") .projectName("Mobile-SDK-iOS") .rumAccessToken("<MW_API_KEY>") .deploymentEnvironment("PROD") .disableRecording() .build()
Privacy
Blur sensitive information in session recordings by embedding the following method:
User passwords are automatically masked by default. Other sensitive information like credit card data and API keys must be masked manually.
// SwiftUI Text("Very important sensitive text").sensitive() // UIKit MiddlewareRum.addIgnoredView(view)
Instrumentation Attributes
The following methods can be used for instrumenting & configuring your application.
Method | Description |
.rumAccessToken(String) | Sets RUM account access token to authorize client to send telemetry to Middleware |
.target(String) | Sets target URL to the location you will send telemetry data to(e.g. Middleware) |
.serviceName(String) | Sets service name for your application |
.deploymentEnvironment(String) | Sets environment attribute on spans generated by instrumentation(e.g. PROD & DEV ) |
.disableCrashReportingInstrumentation() | Disable crash reporting (which is enabled by default) |
.disableNetworkMonitoring() | Disable HTTP Instrumentation (which is enabled by default) |
.disableSlowRenderingDetection() | Disable slow/frozen frame renders (which is enabled by default) |
.slowFrameDetectionThresholdMs(Double) | Sets default polling for slow render detection. Default value is 16.7 milliseconds |
.frozenFrameDetectionThresholdMs(Double) | Sets default polling for frozen render detection. Default value is 700 milliseconds |
Need assistance or want to learn more about Middleware? Contact our support team in Slack.