Semantic conventions for mobile events

Status: Development

This document defines semantic conventions for instrumentations that emit events on mobile platforms. All mobile events MUST use a namespace of device in the EventName LogRecord property.

Lifecycle instrumentation

This section defines how to apply semantic conventions when instrumenting application lifecycle.

Device app lifecycle event

Status: Development

The event name MUST be device.app.lifecycle.

This event represents an occurrence of a lifecycle transition on Android or iOS platform.

The event body fields MUST be used to describe the state of the application at the time of the event. 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). The android.app.state and ios.app.state fields are mutually exclusive and MUST NOT be used together, each field MUST be used with its corresponding os.name value.

AttributeTypeDescriptionExamplesRequirement LevelStability
android.app.statestringThis attribute represents the state of the application. [1]createdConditionally Required if and only if os.name is androidDevelopment
ios.app.statestringThis attribute represents the state of the application. [2]active; inactive; backgroundConditionally Required if and only if os.name is iosDevelopment

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

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


android.app.state has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

ValueDescriptionStability
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.Development
createdAny time before Activity.onResume() or, if the app has no Activity, Context.startService() has been called in the app for the first time.Development
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.Development

ios.app.state has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.

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