Learn about the screen API call in the Android (Kotlin) and iOS (Swift) SDKs.
analytics.screen(
screenName = "<name>",
category = "<category>",
properties = buildJsonObject {
put("key", "value")
},
options = RudderOption(),
)
The corresponding Java snippet is shown below:
HashMap<String, Object> properties = new HashMap<>();
properties.put("key", "value");
analytics.screen("<name>", "<category>", properties, new RudderOption());
// Screen event with screen name
analytics.screen(screenName = "Main Screen")
// Screen event with screen name and category
analytics.screen(screenName = "Main Screen", category = "Main")
// Screen event with screen name, category and properties
analytics.screen(
screenName = "Main Screen",
category = "Main",
properties = buildJsonObject {
put("key-1", "value")
}
)
// Screen event with screen name and properties
analytics.screen(
screenName = "Main Screen",
properties = buildJsonObject {
put("key-1", "value")
}
)
// Screen event with screen name, category, and options
analytics.screen(
screenName = "Main Screen",
category = "Main",
options = RudderOption(
customContext = buildJsonObject {
put("key-1", "value")
},
integrations = buildJsonObject {
put("Amplitude", true)
put("INTERCOM", buildJsonObject {
put("field", "value")
})
},
externalIds = listOf(
ExternalId(type = "<id_type>", id = "<value>"),
),
)
)
analytics.screen(
screenName: "<name>",
category: "<category>",
properties: [
"key": "value"
],
options: RudderOption()
)

Make sure to include the import RudderStackAnalytics statement before making the call.
The corresponding Objective-C snippet is shown below:
[analytics screen:@"<name>" category:@"<category>" properties:@{@"key": @"value"} options:[[RSSOptionBuilder new] build]];

RSSOptionBuilder is an Objective-C–only helper class. It uses the builder pattern to create an RSSOption instance and lets you set custom context, configure integrations, and attach external IDs in a structured way.
// Screen event with screen name
analytics.screen(screenName: "Main Screen")
// Screen event with screen name and category
analytics.screen(screenName: "Main Screen", category: "Main")
// Screen event with screen name, category and properties
analytics.screen(
screenName: "Main Screen",
category: "Main",
properties: [
"key-1": "value-1"
]
)
// Screen event with screen name and properties
analytics.screen(
screenName: "Main Screen",
properties: [
"key-1": "value-1"
]
)
// Screen event with screen name, category, and options
analytics.screen(
screenName: "Main Screen",
category: "Main",
properties: [
"key-1": "value-1"
],
options: RudderOption(
integrations: [
"Amplitude": true,
"INTERCOM": [
"lookup": "phone"
]
],
customContext: [
"key-1": "value-1"
],
externalIds: [
ExternalId(type: "brazeExternalId", id: "value1234")
]
)
)
The corresponding Objective-C snippet is shown below:
// Screen event with screen name
[analytics screen:@"Main Screen"];
// Screen event with screen name and category
[analytics screen:@"Main Screen" category:@"Main"];
// Screen event with screen name, category and properties
[analytics screen:@"Main Screen"
category:@"Main"
properties:@{
@"key-1": @"value-1"
}];
// Screen event with screen name and properties
[analytics screen:@"Main Screen"
properties:@{
@"key-1": @"value-1"
}];
// Screen event with screen name, category, and options
RSSOptionBuilder *optionBuilder = [[RSSOptionBuilder alloc] init];
[optionBuilder setCustomContext:@{
@"key-1": @"value-1"
}];
[optionBuilder setIntegrations:@{
@"Amplitude": @YES,
@"INTERCOM": @{
@"lookup": @"phone"
}
}];
[optionBuilder setExternalIds:@[
[[RSSExternalId alloc] initWithType:@"brazeExternalId" id:@"value1234"]
]];
[analytics screen:@"Main Screen"
category:@"Main"
properties:@{
@"key-1": @"value-1"
}
options:[optionBuilder build]];