Skip to content

Commit eb1685a

Browse files
committed
IAM Lifecycle Listener - API update
* Rename `OSInAppMessageLifecycleHandler` to `OSInAppMessageLifecycleListener` * The methods will receive specific event types such as `OSInAppMessageDidDisplayEvent` instead of just the `OSInAppMessage` * Add a remove method `removeLifecycleListener` * Due to Obj-C not allowing method overloading, add `InAppMessage` to method names, so it doesn't conflict with Notifications displays, but this doesn't apply to Swift as we can refine the swift name. - onWillDisplayInAppMessage - onDidDisplayInAppMessage - onWillDismissInAppMessage - onDidDismissInAppMessage
1 parent 4e1d615 commit eb1685a

File tree

7 files changed

+97
-27
lines changed

7 files changed

+97
-27
lines changed

iOS_SDK/OneSignalDevApp/OneSignalDevApp/AppDelegate.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#import <UIKit/UIKit.h>
3232
#import <OneSignalFramework/OneSignalFramework.h>
3333

34-
@interface AppDelegate : UIResponder <UIApplicationDelegate, OSNotificationPermissionObserver, OSInAppMessageLifecycleHandler, OSPushSubscriptionObserver>
34+
@interface AppDelegate : UIResponder <UIApplicationDelegate, OSNotificationPermissionObserver, OSInAppMessageLifecycleListener, OSPushSubscriptionObserver>
3535

3636
@property (strong, nonatomic) UIWindow *window;
3737

iOS_SDK/OneSignalDevApp/OneSignalDevApp/AppDelegate.m

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
8484
[OneSignal setLaunchURLsInApp:YES];
8585
[OneSignal setProvidesNotificationSettingsView:NO];
8686

87-
[OneSignal.InAppMessages setLifecycleHandler:self];
87+
[OneSignal.InAppMessages addLifecycleListener:self];
8888
[OneSignal.InAppMessages paused:true];
8989

9090
[OneSignal.Notifications setNotificationWillShowInForegroundHandler:notificationReceiverBlock];
@@ -134,23 +134,23 @@ - (void)handleMessageAction:(OSInAppMessageAction *)action {
134134
return;
135135
}
136136

137-
- (void)onWillDisplayInAppMessage:(OSInAppMessage *)message {
138-
NSLog(@"OSInAppMessageDelegate: onWillDisplay Message: %@",message);
137+
- (void)onWillDisplayInAppMessage:(OSInAppMessageWillDisplayEvent *)event {
138+
NSLog(@"OSInAppMessageDelegate: onWillDisplay Message: %@",event.message);
139139
return;
140140
}
141141

142-
- (void)onDidDisplayInAppMessage:(OSInAppMessage *)message {
143-
NSLog(@"OSInAppMessageDelegate: onDidDisplay Message: %@",message);
142+
- (void)onDidDisplayInAppMessage:(OSInAppMessageDidDisplayEvent *)event {
143+
NSLog(@"OSInAppMessageDelegate: onDidDisplay Message: %@",event.message);
144144
return;
145145
}
146146

147-
- (void)onWillDismissInAppMessage:(OSInAppMessage *)message {
148-
NSLog(@"OSInAppMessageDelegate: onWillDismiss Message: %@",message);
147+
- (void)onWillDismissInAppMessage:(OSInAppMessageWillDismissEvent *)event {
148+
NSLog(@"OSInAppMessageDelegate: onWillDismiss Message: %@",event.message);
149149
return;
150150
}
151151

152-
- (void)onDidDismissInAppMessage:(OSInAppMessage *)message {
153-
NSLog(@"OSInAppMessageDelegate: onDidDismiss Message: %@",message);
152+
- (void)onDidDismissInAppMessage:(OSInAppMessageDidDismissEvent *)event {
153+
NSLog(@"OSInAppMessageDelegate: onDidDismiss Message: %@",event.message);
154154
return;
155155
}
156156

iOS_SDK/OneSignalSDK/Source/OSMessagingController.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ NS_ASSUME_NONNULL_BEGIN
6565
- (id)getTriggerValueForKey:(NSString *)key;
6666

6767
- (void)setInAppMessageClickHandler:(OSInAppMessageClickBlock)actionClickBlock;
68-
- (void)setInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleHandler> *_Nullable)delegate;
68+
- (void)setInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)delegate;
69+
- (void)removeInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)delegate;
6970

7071
@end
7172

iOS_SDK/OneSignalSDK/Source/OSMessagingController.m

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,34 @@ + (void)sendClickActionOutcomes:(NSArray<OSInAppMessageOutcome *> *)outcomes;
4242

4343
@end
4444

45+
@implementation OSInAppMessageWillDisplayEvent
46+
- (OSInAppMessageWillDisplayEvent*)initWithInAppMessage:(OSInAppMessage *)message {
47+
_message = message;
48+
return self;
49+
}
50+
@end
51+
52+
@implementation OSInAppMessageDidDisplayEvent
53+
- (OSInAppMessageDidDisplayEvent*)initWithInAppMessage:(OSInAppMessage *)message {
54+
_message = message;
55+
return self;
56+
}
57+
@end
58+
59+
@implementation OSInAppMessageWillDismissEvent
60+
- (OSInAppMessageWillDismissEvent*)initWithInAppMessage:(OSInAppMessage *)message {
61+
_message = message;
62+
return self;
63+
}
64+
@end
65+
66+
@implementation OSInAppMessageDidDismissEvent
67+
- (OSInAppMessageDidDismissEvent*)initWithInAppMessage:(OSInAppMessage *)message {
68+
_message = message;
69+
return self;
70+
}
71+
@end
72+
4573
@interface OSMessagingController ()
4674

4775
@property (strong, nonatomic, nullable) UIWindow *window;
@@ -68,7 +96,7 @@ @interface OSMessagingController ()
6896
// Click action block to allow overridden behavior when clicking an IAM
6997
@property (strong, nonatomic, nullable) OSInAppMessageClickBlock actionClickBlock;
7098

71-
@property (weak, nonatomic, nullable) NSObject<OSInAppMessageLifecycleHandler> *inAppMessageDelegate;
99+
@property (weak, nonatomic, nullable) NSObject<OSInAppMessageLifecycleListener> *inAppMessageDelegate;
72100

73101
@property (strong, nullable) OSInAppMessageViewController *viewController;
74102

@@ -281,35 +309,43 @@ - (void)setInAppMessageClickHandler:(OSInAppMessageClickBlock)actionClickBlock {
281309
self.actionClickBlock = actionClickBlock;
282310
}
283311

284-
- (void)setInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleHandler> *_Nullable)delegate {
312+
- (void)setInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)delegate {
285313
_inAppMessageDelegate = delegate;
286314
}
287315

316+
- (void)removeInAppMessageDelegate:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)delegate {
317+
_inAppMessageDelegate = nil;
318+
}
319+
288320
- (void)onWillDisplayInAppMessage:(OSInAppMessageInternal *)message {
289321
if (self.inAppMessageDelegate &&
290322
[self.inAppMessageDelegate respondsToSelector:@selector(onWillDisplayInAppMessage:)]) {
291-
[self.inAppMessageDelegate onWillDisplayInAppMessage:message];
323+
OSInAppMessageWillDisplayEvent *event = [[OSInAppMessageWillDisplayEvent alloc] initWithInAppMessage:message];
324+
[self.inAppMessageDelegate onWillDisplayInAppMessage:event];
292325
}
293326
}
294327

295328
- (void)onDidDisplayInAppMessage:(OSInAppMessageInternal *)message {
296329
if (self.inAppMessageDelegate &&
297330
[self.inAppMessageDelegate respondsToSelector:@selector(onDidDisplayInAppMessage:)]) {
298-
[self.inAppMessageDelegate onDidDisplayInAppMessage:message];
331+
OSInAppMessageDidDisplayEvent *event = [[OSInAppMessageDidDisplayEvent alloc] initWithInAppMessage:message];
332+
[self.inAppMessageDelegate onDidDisplayInAppMessage:event];
299333
}
300334
}
301335

302336
- (void)onWillDismissInAppMessage:(OSInAppMessageInternal *)message {
303337
if (self.inAppMessageDelegate &&
304338
[self.inAppMessageDelegate respondsToSelector:@selector(onWillDismissInAppMessage:)]) {
305-
[self.inAppMessageDelegate onWillDismissInAppMessage:message];
339+
OSInAppMessageWillDismissEvent *event = [[OSInAppMessageWillDismissEvent alloc] initWithInAppMessage:message];
340+
[self.inAppMessageDelegate onWillDismissInAppMessage:event];
306341
}
307342
}
308343

309344
- (void)onDidDismissInAppMessage:(OSInAppMessageInternal *)message {
310345
if (self.inAppMessageDelegate &&
311346
[self.inAppMessageDelegate respondsToSelector:@selector(onDidDismissInAppMessage:)]) {
312-
[self.inAppMessageDelegate onDidDismissInAppMessage:message];
347+
OSInAppMessageDidDismissEvent *event = [[OSInAppMessageDidDismissEvent alloc] initWithInAppMessage:message];
348+
[self.inAppMessageDelegate onDidDismissInAppMessage:event];
313349
}
314350
}
315351

iOS_SDK/OneSignalSDK/Source/OneSignalInAppMessaging.h

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,32 @@
8282
- (void)handleMessageAction:(OSInAppMessageAction * _Nonnull)action NS_SWIFT_NAME(handleMessageAction(action:));
8383
@end
8484

85-
@protocol OSInAppMessageLifecycleHandler <NSObject>
85+
@interface OSInAppMessageWillDisplayEvent : NSObject
86+
@property (nonatomic, readonly, nonnull) OSInAppMessage *message;
87+
@end
88+
89+
@interface OSInAppMessageDidDisplayEvent : NSObject
90+
@property (nonatomic, readonly, nonnull) OSInAppMessage *message;
91+
@end
92+
93+
@interface OSInAppMessageWillDismissEvent : NSObject
94+
@property (nonatomic, readonly, nonnull) OSInAppMessage *message;
95+
@end
96+
97+
@interface OSInAppMessageDidDismissEvent : NSObject
98+
@property (nonatomic, readonly, nonnull) OSInAppMessage *message;
99+
@end
100+
101+
@protocol OSInAppMessageLifecycleListener <NSObject>
86102
@optional
87-
- (void)onWillDisplayInAppMessage:(OSInAppMessage *_Nonnull)message;
88-
- (void)onDidDisplayInAppMessage:(OSInAppMessage *_Nonnull)message;
89-
- (void)onWillDismissInAppMessage:(OSInAppMessage *_Nonnull)message;
90-
- (void)onDidDismissInAppMessage:(OSInAppMessage *_Nonnull)message;
103+
- (void)onWillDisplayInAppMessage:(OSInAppMessageWillDisplayEvent *_Nonnull)event
104+
NS_SWIFT_NAME(onWillDisplay(event:));
105+
- (void)onDidDisplayInAppMessage:(OSInAppMessageDidDisplayEvent *_Nonnull)event
106+
NS_SWIFT_NAME(onDidDisplay(event:));
107+
- (void)onWillDismissInAppMessage:(OSInAppMessageWillDismissEvent *_Nonnull)event
108+
NS_SWIFT_NAME(onWillDismiss(event:));
109+
- (void)onDidDismissInAppMessage:(OSInAppMessageDidDismissEvent *_Nonnull)event
110+
NS_SWIFT_NAME(onDidDismiss(event:));
91111
@end
92112

93113
/**
@@ -106,8 +126,8 @@
106126

107127
typedef void (^OSInAppMessageClickBlock)(OSInAppMessageAction * _Nonnull action);
108128
+ (void)setClickHandler:(OSInAppMessageClickBlock _Nullable)block;
109-
+ (void)setLifecycleHandler:(NSObject<OSInAppMessageLifecycleHandler> *_Nullable)delegate;
110-
129+
+ (void)addLifecycleListener:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)listener NS_REFINED_FOR_SWIFT;
130+
+ (void)removeLifecycleListener:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)listener NS_REFINED_FOR_SWIFT;
111131
@end
112132

113133
@interface OneSignalInAppMessaging : NSObject <OSInAppMessages>

iOS_SDK/OneSignalSDK/Source/OneSignalInAppMessaging.m

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,14 @@ + (void)setClickHandler:(OSInAppMessageClickBlock)block {
4444
[OSMessagingController.sharedInstance setInAppMessageClickHandler:block];
4545
}
4646

47-
+ (void)setLifecycleHandler:(NSObject<OSInAppMessageLifecycleHandler> *_Nullable)delegate; {
48-
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:@"In app message delegate set successfully"];
49-
[OSMessagingController.sharedInstance setInAppMessageDelegate:delegate];
47+
+ (void)addLifecycleListener:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)listener {
48+
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:@"In app message lifecycle listener added successfully"];
49+
[OSMessagingController.sharedInstance setInAppMessageDelegate:listener];
50+
}
51+
52+
+ (void)removeLifecycleListener:(NSObject<OSInAppMessageLifecycleListener> *_Nullable)listener {
53+
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:@"In app message lifecycle listener removed successfully"];
54+
[OSMessagingController.sharedInstance removeInAppMessageDelegate:listener];
5055
}
5156

5257
+ (void)addTrigger:(NSString * _Nonnull)key withValue:(NSString * _Nonnull)value {

iOS_SDK/OneSignalSDK/Source/OneSignalSwiftInterface.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@ public extension OSInAppMessages {
7676
__paused(newValue)
7777
}
7878
}
79+
80+
static func addLifecycleListener(_ listener: OSInAppMessageLifecycleListener) {
81+
__add(listener)
82+
}
83+
84+
static func removeLifecycleListener(_ listener: OSInAppMessageLifecycleListener) {
85+
__remove(listener)
86+
}
7987
}
8088

8189
public extension OSSession {

0 commit comments

Comments
 (0)