Skip to content

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;

Powered by Upshot.ai