Live Activities on iOS with the Cordova SDK
When using the Cordova SDK, Live Activities can be managed in two different ways:
- JavaScript API (Cordova layer) – Allows you to retrieve active Live Activities, subscribe them to the backend, and listen for push updates directly from JavaScript.
- Native iOS integration – Gives you full access to Live Activities APIs, including push token generation and updates. See the Native iOS Live Activities Integration guide for detailed instructions.
Note: Push token generation (
PushToStart
andPushTokenUpdates
) cannot be triggered from Cordova. This must be implemented in the native iOS layer, which then sends tokens to your backend for targeting Live Activities.
JavaScript API Reference
All methods return results asynchronously through callbacks. Let's do this example code and reference with the attribute name: TimerWidgetAttributes.
Get List of Active Live Activities
Retrieves all active Live Activities currently associated with the device.
window.plugins.indigitallLA.getListLiveActivities((liveActivities) => {
console.log("Active Live Activities:", liveActivities);
}, (error) => {
console.error("Error fetching live activities:", error);
});
Subscribe to Live Activities
Sends a list of Live Activities the device is subscribed to, so the backend can target them with push updates
const activities = [
{ liveActivityExternalId: "order_123", iosAttributesType: "TimerWidgetAttributes" }
];
window.plugins.indigitallLA.subscribeToLiveActivities(activities, (result) => {
console.log("Successfully registered live activities:", result);
}, (error) => {
console.error("Error subscribing to live activities:", error);
});
Set PushToStart Token Updates
Native-only limitation: The actual token retrieval must be done in iOS native code, then passed to this method.
const tokenParams = {
token: "hexadecimal_push_to_start_token",
iosAttributesType: "TimerWidgetAttributes"
};
window.plugins.indigitallLA.setPushToStartTokenUpdates(tokenParams, (response) => {
console.log("PushToStart token sent successfully:", response);
}, (error) => {
console.error("Error sending PushToStart token:", error);
});
Set Push Token Updates (Advanced)
Updates the push token for an already running Live Activity.
const tokenUpdateParams = {
token: "hexadecimal_push_token",
liveActivityExternalId: "order_123"
};
window.plugins.indigitallLA.setPushTokenUpdates(tokenUpdateParams, (response) => {
console.log("Push token update sent successfully:", response);
}, (error) => {
console.error("Error updating push token:", error);
});
Push Reception Callback
Registers a callback to handle incoming push notifications, including Live Activity events.
window.plugins.indigitall.onMessageReceived((pushData) => {
console.log("Push received:", pushData);
// Handle START, UPDATE, END for Live Activities
}, (error) => {
console.error("Push reception error:", error);
});
Example: Full Live Activities Workflow in Cordova (iOS)
// 1. Get current active Live Activities
window.plugins.indigitallLA.getListLiveActivities((liveActivities) => {
console.log("Active Live Activities:", liveActivities);
// 2. Subscribe them to the backend
window.plugins.indigitallLA.subscribeToLiveActivities(liveActivities, (result) => {
console.log("Live activities subscribed successfully:", result);
}, (error) => {
console.error("Subscription error:", error);
});
}, (error) => {
console.error("Error fetching live activities:", error);
});
// 3. Set PushToStart token (token must come from native iOS code)
const pushToStartParams = {
token: "hexadecimal_push_to_start_token",
iosAttributesType: "TimerWidgetAttributes"
};
window.plugins.indigitallLA.setPushToStartTokenUpdates(pushToStartParams, (response) => {
console.log("PushToStart token sent:", response);
}, (error) => {
console.error("Error sending PushToStart token:", error);
});
// 4. Set Push token updates (token must come from native iOS code)
const pushTokenParams = {
token: "hexadecimal_push_token",
liveActivityExternalId: "order_123"
};
window.plugins.indigitallLA.setPushTokenUpdates(pushTokenParams, (response) => {
console.log("Push token update sent:", response);
}, (error) => {
console.error("Error updating push token:", error);
});
// 5. Listen for push events
window.plugins.indigitall.onMessageReceived((pushData) => {
console.log("Push received:", pushData);
if (pushData.pushType === "LIVE_ACTIVITY") {
if (pushData.liveActivityEventType === "START") {
console.log("Live Activity started:", pushData);
} else if (pushData.liveActivityEventType === "UPDATE") {
console.log("Live Activity updated:", pushData);
} else if (pushData.liveActivityEventType === "END") {
console.log("Live Activity ended:", pushData);
}
}
}, (error) => {
console.error("Push reception error:", error);
});