or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

core-sdk.mdin-app-messages.mdindex.mdlive-activities.mdlocation.mdnotifications.mdpush-subscription.mdsession.mduser-management.md

in-app-messages.mddocs/

0

# In-App Messages

1

2

Trigger-based in-app messaging system with lifecycle event handling and display control.

3

4

## Capabilities

5

6

### In-App Message Event Handling

7

8

Handle in-app message clicks and lifecycle events including display and dismiss events.

9

10

```typescript { .api }

11

/**

12

* Add listeners for In-App Message click and/or lifecycle events.

13

* @param event - The event type to listen for

14

* @param listener - Callback function for the event

15

*/

16

function addEventListener<K extends InAppMessageEventName>(

17

event: K,

18

listener: (event: InAppMessageEventTypeMap[K]) => void

19

): void;

20

21

/**

22

* Remove listeners for In-App Message click and/or lifecycle events.

23

* @param event - The event type to stop listening for

24

* @param listener - The callback function to remove

25

*/

26

function removeEventListener<K extends InAppMessageEventName>(

27

event: K,

28

listener: (obj: InAppMessageEventTypeMap[K]) => void

29

): void;

30

```

31

32

**Usage Examples:**

33

34

```typescript

35

import { OneSignal } from "react-native-onesignal";

36

37

// Handle in-app message clicks

38

OneSignal.InAppMessages.addEventListener('click', (event) => {

39

console.log('In-app message clicked:', {

40

messageId: event.message.messageId,

41

actionId: event.result.actionId,

42

url: event.result.url,

43

closingMessage: event.result.closingMessage

44

});

45

46

// Handle click actions

47

if (event.result.url) {

48

// Open URL or navigate

49

}

50

});

51

52

// Handle message lifecycle events

53

OneSignal.InAppMessages.addEventListener('willDisplay', (event) => {

54

console.log('In-app message will display:', event.message.messageId);

55

});

56

57

OneSignal.InAppMessages.addEventListener('didDisplay', (event) => {

58

console.log('In-app message displayed:', event.message.messageId);

59

});

60

61

OneSignal.InAppMessages.addEventListener('willDismiss', (event) => {

62

console.log('In-app message will dismiss:', event.message.messageId);

63

});

64

65

OneSignal.InAppMessages.addEventListener('didDismiss', (event) => {

66

console.log('In-app message dismissed:', event.message.messageId);

67

});

68

```

69

70

### Trigger Management

71

72

Manage triggers that determine when in-app messages should be displayed to users.

73

74

```typescript { .api }

75

/**

76

* Add a trigger for the current user. Triggers are currently explicitly used to determine

77

* whether a specific IAM should be displayed to the user.

78

* @param key - Trigger key

79

* @param value - Trigger value

80

*/

81

function addTrigger(key: string, value: string): void;

82

83

/**

84

* Add multiple triggers for the current user. Triggers are currently explicitly used to

85

* determine whether a specific IAM should be displayed to the user.

86

* @param triggers - Object containing key-value trigger pairs

87

*/

88

function addTriggers(triggers: { [key: string]: string }): void;

89

90

/**

91

* Remove the trigger with the provided key from the current user.

92

* @param key - Trigger key to remove

93

*/

94

function removeTrigger(key: string): void;

95

96

/**

97

* Remove multiple triggers from the current user.

98

* @param keys - Array of trigger keys to remove

99

*/

100

function removeTriggers(keys: string[]): void;

101

102

/**

103

* Clear all triggers from the current user.

104

*/

105

function clearTriggers(): void;

106

```

107

108

**Usage Examples:**

109

110

```typescript

111

// Add single trigger to show welcome message

112

OneSignal.InAppMessages.addTrigger("page", "home");

113

114

// Add multiple triggers for targeting

115

OneSignal.InAppMessages.addTriggers({

116

"level": "5",

117

"stage": "tutorial_complete",

118

"subscription": "premium",

119

"session_count": "3"

120

});

121

122

// Remove specific trigger

123

OneSignal.InAppMessages.removeTrigger("level");

124

125

// Remove multiple triggers

126

OneSignal.InAppMessages.removeTriggers(["stage", "session_count"]);

127

128

// Clear all triggers (useful for logout)

129

OneSignal.InAppMessages.clearTriggers();

130

```

131

132

### Message Display Control

133

134

Control whether in-app messages are displayed to the user.

135

136

```typescript { .api }

137

/**

138

* Set whether in-app messaging is currently paused.

139

* When set to true no IAM will be presented to the user regardless of whether they qualify for them.

140

* When set to false any IAMs the user qualifies for will be presented to the user at the appropriate time.

141

* @param pause - Whether to pause in-app messages

142

*/

143

function setPaused(pause: boolean): void;

144

145

/**

146

* Whether in-app messaging is currently paused.

147

* @returns Promise resolving to paused status

148

*/

149

function getPaused(): Promise<boolean>;

150

```

151

152

**Usage Examples:**

153

154

```typescript

155

// Pause in-app messages during onboarding

156

OneSignal.InAppMessages.setPaused(true);

157

158

// Resume in-app messages after onboarding

159

OneSignal.InAppMessages.setPaused(false);

160

161

// Check current paused status

162

const isPaused = await OneSignal.InAppMessages.getPaused();

163

console.log('In-app messages paused:', isPaused);

164

165

// Conditionally pause based on app state

166

if (isInCriticalFlow) {

167

OneSignal.InAppMessages.setPaused(true);

168

}

169

```

170

171

## Common Use Cases

172

173

### Welcome Flow Triggers

174

175

```typescript

176

// Set triggers to show welcome messages based on user progress

177

OneSignal.InAppMessages.addTriggers({

178

"welcome_step": "1",

179

"first_session": "true"

180

});

181

182

// Update trigger as user progresses

183

OneSignal.InAppMessages.addTrigger("welcome_step", "2");

184

185

// Clear welcome triggers when complete

186

OneSignal.InAppMessages.removeTriggers(["welcome_step", "first_session"]);

187

```

188

189

### Feature Announcement Targeting

190

191

```typescript

192

// Target users who haven't seen new feature

193

OneSignal.InAppMessages.addTriggers({

194

"app_version": "2.1.0",

195

"feature_announcement_seen": "false",

196

"user_level": "advanced"

197

});

198

199

// Mark as seen after display

200

OneSignal.InAppMessages.addEventListener('didDisplay', (event) => {

201

if (event.message.messageId === 'feature-announcement-id') {

202

OneSignal.InAppMessages.addTrigger("feature_announcement_seen", "true");

203

}

204

});

205

```

206

207

### Contextual Messaging

208

209

```typescript

210

// Set triggers based on current screen/context

211

OneSignal.InAppMessages.addTriggers({

212

"current_screen": "checkout",

213

"cart_value": "high",

214

"first_time_buyer": "true"

215

});

216

217

// Update context as user navigates

218

function onScreenChange(screenName) {

219

OneSignal.InAppMessages.addTrigger("current_screen", screenName);

220

}

221

```

222

223

## Types

224

225

```typescript { .api }

226

type InAppMessageEventName = 'click' | 'willDisplay' | 'didDisplay' | 'willDismiss' | 'didDismiss';

227

228

type InAppMessageEventTypeMap = {

229

click: InAppMessageClickEvent;

230

willDisplay: InAppMessageWillDisplayEvent;

231

didDisplay: InAppMessageDidDisplayEvent;

232

willDismiss: InAppMessageWillDismissEvent;

233

didDismiss: InAppMessageDidDismissEvent;

234

};

235

236

interface InAppMessage {

237

messageId: string;

238

}

239

240

interface InAppMessageClickEvent {

241

message: InAppMessage;

242

result: InAppMessageClickResult;

243

}

244

245

interface InAppMessageClickResult {

246

closingMessage: boolean;

247

actionId?: string;

248

url?: string;

249

urlTarget?: string;

250

}

251

252

interface InAppMessageWillDisplayEvent {

253

message: InAppMessage;

254

}

255

256

interface InAppMessageDidDisplayEvent {

257

message: InAppMessage;

258

}

259

260

interface InAppMessageWillDismissEvent {

261

message: InAppMessage;

262

}

263

264

interface InAppMessageDidDismissEvent {

265

message: InAppMessage;

266

}

267

```