Skip to content

Commit e7a1f33

Browse files
committed
Using functions instead of classes for In App Message Lifecycle listener
1 parent dec7cc9 commit e7a1f33

File tree

2 files changed

+69
-45
lines changed

2 files changed

+69
-45
lines changed

example/lib/main.dart

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ class _MyAppState extends State<MyApp>
1515
with
1616
OneSignalPushSubscriptionObserver,
1717
OneSignalPermissionObserver,
18-
OneSignalInAppMessageLifecycleListener,
1918
OneSignalInAppMessageClickListener,
2019
OneSignalNotificationLifecycleListener,
2120
OneSignalNotificationClickListener {
@@ -39,7 +38,7 @@ class _MyAppState extends State<MyApp>
3938
Future<void> initPlatformState() async {
4039
if (!mounted) return;
4140

42-
OneSignal.Debug.setLogLevel(OSLogLevel.none);
41+
OneSignal.Debug.setLogLevel(OSLogLevel.verbose);
4342

4443
OneSignal.Debug.setAlertLevel(OSLogLevel.none);
4544
OneSignal.shared.consentRequired(_requireConsent);
@@ -55,14 +54,21 @@ class _MyAppState extends State<MyApp>
5554

5655
OneSignal.User.pushSubscription.addObserver(this);
5756
OneSignal.Notifications.addPermissionObserver(this);
58-
5957
OneSignal.Notifications.addClickListener(this);
60-
6158
OneSignal.Notifications.addLifecycleListener(this);
62-
6359
OneSignal.InAppMessages.addClickListener(this);
64-
65-
OneSignal.InAppMessages.addLifecycleListener(this);
60+
OneSignal.InAppMessages.addWillDisplayListener((event) {
61+
print("ON WILL DISPLAY IN APP MESSAGE ${event.message.messageId}");
62+
});
63+
OneSignal.InAppMessages.addDidDisplayListener((event) {
64+
print("ON DID DISPLAY IN APP MESSAGE ${event.message.messageId}");
65+
});
66+
OneSignal.InAppMessages.addWillDismissListener((event) {
67+
print("ON WILL DISMISS IN APP MESSAGE ${event.message.messageId}");
68+
});
69+
OneSignal.InAppMessages.addDidDismissListener((event) {
70+
print("ON DID DISMISS IN APP MESSAGE ${event.message.messageId}");
71+
});
6672

6773
// iOS-only method to open launch URLs in Safari when set to false
6874
OneSignal.shared.setLaunchURLsInApp(false);
@@ -76,6 +82,8 @@ class _MyAppState extends State<MyApp>
7682

7783
// Some examples of how to use Outcome Events public methods with OneSignal SDK
7884
oneSignalOutcomeExamples();
85+
86+
OneSignal.InAppMessages.paused(false);
7987
}
8088

8189
void onNotificationPermissionDidChange(bool state) {
@@ -96,22 +104,6 @@ class _MyAppState extends State<MyApp>
96104
});
97105
}
98106

99-
void onWillDisplayInAppMessage(OSInAppMessageWillDisplayEvent event) {
100-
print("ON WILL DISPLAY IN APP MESSAGE ${event.message.messageId}");
101-
}
102-
103-
void onDidDisplayInAppMessage(OSInAppMessageDidDisplayEvent event) {
104-
print("ON DID DISPLAY IN APP MESSAGE ${event.message.messageId}");
105-
}
106-
107-
void onWillDismissInAppMessage(OSInAppMessageWillDismissEvent event) {
108-
print("ON WILL DISMISS IN APP MESSAGE ${event.message.messageId}");
109-
}
110-
111-
void onDidDismissInAppMessage(OSInAppMessageDidDismissEvent event) {
112-
print("ON DID DISMISS IN APP MESSAGE ${event.message.messageId}");
113-
}
114-
115107
void onClickNotification(OSNotificationClickEvent event) {
116108
print('NOTIFICATION CLICK LISTENER CALLED WITH EVENT: $event');
117109
this.setState(() {

lib/src/inappmessages.dart

Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
import 'dart:async';
22
import 'package:flutter/services.dart';
3+
import 'package:onesignal_flutter/onesignal_flutter.dart';
34
import 'package:onesignal_flutter/src/inappmessage.dart';
45

56
class OneSignalInAppMessageClickListener {
67
void onClickInAppMessage(OSInAppMessageClickEvent event) {}
78
}
89

9-
class OneSignalInAppMessageLifecycleListener {
10-
void onWillDisplayInAppMessage(OSInAppMessageWillDisplayEvent event) {}
11-
void onDidDisplayInAppMessage(OSInAppMessageDidDisplayEvent event) {}
12-
void onWillDismissInAppMessage(OSInAppMessageWillDismissEvent event) {}
13-
void onDidDismissInAppMessage(OSInAppMessageDidDismissEvent event) {}
14-
}
10+
typedef void OnWillDisplayInAppMessageListener(
11+
OSInAppMessageWillDisplayEvent event);
12+
typedef void OnDidDisplayInAppMessageListener(
13+
OSInAppMessageDidDisplayEvent event);
14+
typedef void OnWillDismissInAppMessageListener(
15+
OSInAppMessageWillDismissEvent event);
16+
typedef void OnDidDismissInAppMessageListener(
17+
OSInAppMessageDidDismissEvent event);
1518

1619
class OneSignalInAppMessages {
1720
// private channels used to bridge to ObjC/Java
@@ -24,8 +27,14 @@ class OneSignalInAppMessages {
2427

2528
List<OneSignalInAppMessageClickListener> _clickListeners =
2629
<OneSignalInAppMessageClickListener>[];
27-
List<OneSignalInAppMessageLifecycleListener> _lifecycleListeners =
28-
<OneSignalInAppMessageLifecycleListener>[];
30+
List<OnWillDisplayInAppMessageListener> _willDisplayListeners =
31+
<OnWillDisplayInAppMessageListener>[];
32+
List<OnDidDisplayInAppMessageListener> _didDisplayListeners =
33+
<OnDidDisplayInAppMessageListener>[];
34+
List<OnWillDismissInAppMessageListener> _willDismissListeners =
35+
<OnWillDismissInAppMessageListener>[];
36+
List<OnDidDismissInAppMessageListener> _didDismissListeners =
37+
<OnDidDismissInAppMessageListener>[];
2938

3039
/// Adds a single key, value trigger, which will trigger an in app message
3140
/// if one exists matching the specific trigger added
@@ -78,23 +87,23 @@ class OneSignalInAppMessages {
7887
OSInAppMessageClickEvent(call.arguments.cast<String, dynamic>()));
7988
}
8089
} else if (call.method == 'OneSignal#onWillDisplayInAppMessage') {
81-
for (var listener in _lifecycleListeners) {
82-
listener.onWillDisplayInAppMessage(OSInAppMessageWillDisplayEvent(
90+
for (var listener in _willDisplayListeners) {
91+
listener(OSInAppMessageWillDisplayEvent(
8392
call.arguments.cast<String, dynamic>()));
8493
}
8594
} else if (call.method == 'OneSignal#onDidDisplayInAppMessage') {
86-
for (var listener in _lifecycleListeners) {
87-
listener.onDidDisplayInAppMessage(OSInAppMessageDidDisplayEvent(
95+
for (var listener in _didDisplayListeners) {
96+
listener(OSInAppMessageDidDisplayEvent(
8897
call.arguments.cast<String, dynamic>()));
8998
}
9099
} else if (call.method == 'OneSignal#onWillDismissInAppMessage') {
91-
for (var listener in _lifecycleListeners) {
92-
listener.onWillDismissInAppMessage(OSInAppMessageWillDismissEvent(
100+
for (var listener in _willDismissListeners) {
101+
listener(OSInAppMessageWillDismissEvent(
93102
call.arguments.cast<String, dynamic>()));
94103
}
95104
} else if (call.method == 'OneSignal#onDidDismissInAppMessage') {
96-
for (var listener in _lifecycleListeners) {
97-
listener.onDidDismissInAppMessage(OSInAppMessageDidDismissEvent(
105+
for (var listener in _didDismissListeners) {
106+
listener(OSInAppMessageDidDismissEvent(
98107
call.arguments.cast<String, dynamic>()));
99108
}
100109
}
@@ -107,16 +116,39 @@ class OneSignalInAppMessages {
107116
_clickListeners.add(listener);
108117
}
109118

110-
void removeClickListener(OneSignalInAppMessageLifecycleListener listener) {
119+
void removeClickListener(OneSignalInAppMessageClickListener listener) {
111120
_clickListeners.remove(listener);
112121
}
113122

114-
void addLifecycleListener(OneSignalInAppMessageLifecycleListener listener) {
115-
_lifecycleListeners.add(listener);
123+
void addWillDisplayListener(OnWillDisplayInAppMessageListener listener) {
124+
_willDisplayListeners.add(listener);
125+
}
126+
127+
void removeWillDisplayListener(OnWillDisplayInAppMessageListener listener) {
128+
_willDisplayListeners.remove(listener);
129+
}
130+
131+
void addDidDisplayListener(OnDidDisplayInAppMessageListener listener) {
132+
_didDisplayListeners.add(listener);
133+
}
134+
135+
void removeDidDisplayListener(OnDidDisplayInAppMessageListener listener) {
136+
_didDisplayListeners.remove(listener);
137+
}
138+
139+
void addWillDismissListener(OnWillDismissInAppMessageListener listener) {
140+
_willDismissListeners.add(listener);
141+
}
142+
143+
void removeWillDismissListener(OnWillDismissInAppMessageListener listener) {
144+
_willDismissListeners.remove(listener);
145+
}
146+
147+
void addDidDismissListener(OnDidDismissInAppMessageListener listener) {
148+
_didDismissListeners.add(listener);
116149
}
117150

118-
void removeLifecycleListener(
119-
OneSignalInAppMessageLifecycleListener listener) {
120-
_lifecycleListeners.remove(listener);
151+
void removeDidDismissListener(OnDidDismissInAppMessageListener listener) {
152+
_didDismissListeners.remove(listener);
121153
}
122154
}

0 commit comments

Comments
 (0)