Appearance
Activity Delegates
When an activity is requested by your app, various events are invoked on the app during the "activity life-cycle". These delegate methods and event listeners allow you to handle different stages of activity presentation and user interactions.
Overview
Activity delegates provide callbacks for:
- Activity Presentation: When an activity is displayed to the user
- Activity Skip: When users interact with Skip
- Activity Completion: When an activity is completed or dismissed
- Deep Link Handling: When activities contain deep link data
- Error Handling: When errors occur during activity lifecycle
Activity Event Listeners
Add the following event listeners to your JavaScript code to get the state and deep link data of an Activity. The main event listeners are: UpshotActivityDidAppear, UpshotActivityDidDismiss, UpshotActivitySkip, UpshotActivityError, and UpshotDeepLink.
javascript
import { Upshot, UpshotActivityType } from "react-native-upshotsdk";
// Activity Did Appear Event Listener
Upshot.addListener("UpshotActivityDidAppear", handleActivityDidAppear);
const handleActivityDidAppear = (response) => {
// JSON response is like {"activityType": 0}
console.log("Activity appeared:", response);
// Handle activity appearance
if (response.activityType === UpshotActivityType.Survey) {
console.log("Survey activity appeared");
} else if (response.activityType === UpshotActivityType.Rating) {
console.log("Rating activity appeared");
}
};
// Activity Did Dismiss Event Listener
Upshot.addListener("UpshotActivityDidDismiss", handleActivityDidDismiss);
const handleActivityDidDismiss = (response) => {
// JSON response is like {"activityType": 0}
console.log("Activity dismissed:", response);
// Handle activity dismissal
handleActivityCompletion(response);
};
// Activity Skip Event Listener
Upshot.addListener("UpshotActivitySkip", handleActivitySkip);
const handleActivitySkip = (response) => {
// JSON response is like {"activityType": 0}
console.log("Activity skipped:", response);
// Handle activity skip
trackActivitySkip(response);
};
// Deep Link Event Listener
Upshot.addListener("UpshotDeepLink", handleDeeplink);
const handleDeeplink = (response) => {
// JSON response is like {"deepLink": "deeplink data"}
console.log("Deep link received:", response);
// Handle deep link navigation
if (response.deepLink) {
navigateToDeepLink(response.deepLink);
}
};typescript
import { Upshot, UpshotActivityType } from "react-native-upshotsdk";
interface ActivityResponse {
activityType: number;
activityId?: string;
userData?: any;
}
interface DeepLinkResponse {
deepLink: string;
activityId?: string;
}
// Activity Did Appear Event Listener
Upshot.addListener("UpshotActivityDidAppear", handleActivityDidAppear);
const handleActivityDidAppear = (response: ActivityResponse): void => {
// JSON response is like {"activityType": 0}
console.log("Activity appeared:", response);
// Handle activity appearance
if (response.activityType === UpshotActivityType.Survey) {
console.log("Survey activity appeared");
} else if (response.activityType === UpshotActivityType.Rating) {
console.log("Rating activity appeared");
}
};
// Activity Did Dismiss Event Listener
Upshot.addListener("UpshotActivityDidDismiss", handleActivityDidDismiss);
const handleActivityDidDismiss = (response: ActivityResponse): void => {
// JSON response is like {"activityType": 0}
console.log("Activity dismissed:", response);
// Handle activity dismissal
handleActivityCompletion(response);
};
// Activity Skip Event Listener
Upshot.addListener("UpshotActivitySkip", handleActivitySkip);
const handleActivitySkip = (response: ActivityResponse): void => {
// JSON response is like {"activityType": 0}
console.log("Activity skipped:", response);
// Handle activity skip
trackActivitySkip(response);
};
// Deep Link Event Listener
Upshot.addListener("UpshotDeepLink", handleDeeplink);
const handleDeeplink = (response: DeepLinkResponse): void => {
// JSON response is like {"deepLink": "deeplink data"}
console.log("Deep link received:", response);
// Handle deep link navigation
if (response.deepLink) {
navigateToDeepLink(response.deepLink);
}
};Activity Event Remove Listeners
Remember to remove event listeners when they're no longer needed to prevent memory leaks:
javascript
// Remove event listeners
Upshot.removeEventListener("UpshotActivityDidAppear");
Upshot.removeEventListener("UpshotActivityDidDismiss");
Upshot.removeEventListener("UpshotActivitySkip");
Upshot.removeEventListener("UpshotDeepLink");typescript
// Remove event listeners
Upshot.removeEventListener("UpshotActivityDidAppear");
Upshot.removeEventListener("UpshotActivityDidDismiss");
Upshot.removeEventListener("UpshotActivitySkip");
Upshot.removeEventListener("UpshotDeepLink");Activity Types Reference
When using UpshotActivityType, you can reference these activity types:
javascript
// Activity Type Constants
UpshotActivityType.Any = -1;
UpshotActivityType.Survey = 0;
UpshotActivityType.Rating = 1;
UpshotActivityType.OpinionPoll = 5;
UpshotActivityType.Tutorials = 7;
UpshotActivityType.InAppMessage = 8;
UpshotActivityType.Badges = 9;
UpshotActivityType.ScreenTips = 10;
UpshotActivityType.Trivia = 11;
UpshotActivityType.CustomAction = 12;
UpshotActivityType.MiniGames = 13;
