Semantic Conventions for mobile events

Status: Experimental

This document defines semantic conventions for instrumentations that emit events on mobile platforms. All mobile events MUST set event.domain as device.

Lifecycle instrumentation

This section defines how to apply semantic conventions when instrumenting application lifecycle. This event is meant to be used in conjunction with os.name resource semantic convention to identify the mobile operating system (e.g. Android, iOS).

iOS

The event name MUST be app.lifecycle.

AttributeTypeDescriptionExamplesRequirement Level
ios.statestringThis attribute represents the state the application has transitioned into at the occurrence of the event. [1]activeRequired

[1]: The iOS lifecycle states are defined in the UIApplicationDelegate documentation, and from which the OS terminology column values are derived.

ios.state MUST be one of the following:

ValueDescription
activeThe app has become active. Associated with UIKit notification applicationDidBecomeActive.
inactiveThe app is now inactive. Associated with UIKit notification applicationWillResignActive.
backgroundThe app is now in the background. This value is associated with UIKit notification applicationDidEnterBackground.
foregroundThe app is now in the foreground. This value is associated with UIKit notification applicationWillEnterForeground.
terminateThe app is about to terminate. Associated with UIKit notification applicationWillTerminate.

Android

The event name MUST be app.lifecycle.

AttributeTypeDescriptionExamplesRequirement Level
android.statestringThis attribute represents the state the application has transitioned into at the occurrence of the event. [1]createdRequired

[1]: The Android lifecycle states are defined in Activity lifecycle callbacks, and from which the OS identifiers are derived.

android.state MUST be one of the following:

ValueDescription
createdAny time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.
backgroundAny time after Activity.onPause() or, if the app has no Activity, Context.stopService() has been called when the app was in the foreground state.
foregroundAny time after Activity.onResume() or, if the app has no Activity, Context.startService() has been called when the app was in either the created or background states.