Skip to content

Commit 31057fb

Browse files
authored
[SDK-41] register for push (#396)
* Refactor push templates * Refactor register for push action * RegisterForPush to use same view logic as PushAskToAsk * Use LPLog
1 parent c442728 commit 31057fb

File tree

6 files changed

+90
-44
lines changed

6 files changed

+90
-44
lines changed

Leanplum-SDK/Classes/MessageTemplates/LPPushAskToAskMessageTemplate.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77
//
88

99
#import "LPMessageTemplateProtocol.h"
10+
#import "LPPushMessageTemplate.h"
1011

1112
NS_ASSUME_NONNULL_BEGIN
1213

13-
@interface LPPushAskToAskMessageTemplate : NSObject <LPMessageTemplateProtocol>
14-
15-
- (void)enableSystemPush;
14+
@interface LPPushAskToAskMessageTemplate : LPPushMessageTemplate <LPMessageTemplateProtocol>
1615

1716
@end
1817

Leanplum-SDK/Classes/MessageTemplates/LPPushAskToAskMessageTemplate.m

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//
88

99
#import "LPPushAskToAskMessageTemplate.h"
10-
#import "LPActionManager.h"
10+
#import "LPPushMessageTemplate.h"
1111

1212
@implementation LPPushAskToAskMessageTemplate
1313

@@ -56,20 +56,11 @@ +(void)defineAction
5656
@try {
5757
LPPushAskToAskMessageTemplate *template = [[LPPushAskToAskMessageTemplate alloc] init];
5858
template.context = context;
59-
60-
if ([Leanplum isPreLeanplumInstall]) {
61-
LPLog(LPDebug, @"'Ask to ask' conservatively falls back to just 'ask' for pre-Leanplum installs");
62-
[template showPushMessage];
63-
return NO;
64-
} else if ([template isPushEnabled]) {
65-
LPLog(LPDebug, @"Pushes already enabled");
66-
return NO;
67-
} else if ([template hasDisabledAskToAsk]) {
68-
LPLog(LPDebug, @" Already asked to push");
69-
return NO;
70-
} else {
59+
if ([template shouldShowPushMessage]) {
7160
[template showPrePushMessage];
7261
return YES;
62+
} else {
63+
return NO;
7364
}
7465
} @catch (NSException *exception) {
7566
LPLog(LPError, @"PushAskToAsk: %@\n%@", exception, [exception callStackSymbols]);
@@ -86,36 +77,16 @@ - (LPPopupViewController *)viewControllerWithContext:(LPActionContext *)context
8677
__strong __typeof__(self) strongSelf = self;
8778
viewController.pushAskToAskCompletionBlock = ^{
8879
__typeof__(self) weakSelf = strongSelf;
89-
[weakSelf enableSystemPush];
80+
[weakSelf showNativePushPrompt];
9081
};
9182
return viewController;
9283
}
9384

94-
-(void)showPushMessage
95-
{
96-
[self enableSystemPush];
97-
}
98-
9985
-(void)showPrePushMessage
10086
{
10187
UIViewController *viewController = [self viewControllerWithContext:self.context];
10288

10389
[LPMessageTemplateUtilities presentOverVisible:viewController];
10490
}
10591

106-
- (BOOL)isPushEnabled
107-
{
108-
return [[LPPushNotificationsManager sharedManager] isPushEnabled];
109-
}
110-
111-
- (void)enableSystemPush
112-
{
113-
[[LPPushNotificationsManager sharedManager] enableSystemPush];
114-
}
115-
116-
- (BOOL)hasDisabledAskToAsk
117-
{
118-
return [[LPPushNotificationsManager sharedManager] hasDisabledAskToAsk];
119-
}
120-
12192
@end
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// LPPushMessageTemplate.h
3+
// Leanplum-iOS-SDK
4+
//
5+
// Created by Nikola Zagorchev on 19.08.20.
6+
//
7+
8+
#import <Foundation/Foundation.h>
9+
10+
NS_ASSUME_NONNULL_BEGIN
11+
12+
@interface LPPushMessageTemplate : NSObject
13+
14+
- (BOOL)shouldShowPushMessage;
15+
16+
- (void)showNativePushPrompt;
17+
18+
- (BOOL)isPushEnabled;
19+
20+
- (BOOL)hasDisabledAskToAsk;
21+
22+
@end
23+
24+
NS_ASSUME_NONNULL_END
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//
2+
// LPPushMessageTemplate.m
3+
// Leanplum-iOS-SDK
4+
//
5+
// Created by Nikola Zagorchev on 19.08.20.
6+
//
7+
8+
#import "LPPushMessageTemplate.h"
9+
#import "LPActionManager.h"
10+
#import "LPLogManager.h"
11+
12+
@implementation LPPushMessageTemplate
13+
14+
-(BOOL)shouldShowPushMessage
15+
{
16+
if ([Leanplum isPreLeanplumInstall]) {
17+
LPLog(LPDebug, @"'Ask to ask' conservatively falls back to just 'ask' for pre-Leanplum installs");
18+
[self showNativePushPrompt];
19+
return NO;
20+
} else if ([self isPushEnabled]) {
21+
LPLog(LPDebug, @"Pushes already enabled");
22+
return NO;
23+
} else if ([self hasDisabledAskToAsk]) {
24+
LPLog(LPDebug, @" Already asked to push");
25+
return NO;
26+
} else {
27+
return YES;
28+
}
29+
}
30+
31+
-(void)showNativePushPrompt
32+
{
33+
[[LPPushNotificationsManager sharedManager] enableSystemPush];
34+
}
35+
36+
- (BOOL)isPushEnabled
37+
{
38+
return [[LPPushNotificationsManager sharedManager] isPushEnabled];
39+
}
40+
41+
- (BOOL)hasDisabledAskToAsk
42+
{
43+
return [[LPPushNotificationsManager sharedManager] hasDisabledAskToAsk];
44+
}
45+
46+
@end

Leanplum-SDK/Classes/MessageTemplates/LPRegisterForPushMessageTemplate.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
//
88

99
#import "LPMessageTemplateProtocol.h"
10+
#import "LPPushMessageTemplate.h"
1011

1112
NS_ASSUME_NONNULL_BEGIN
1213

13-
@interface LPRegisterForPushMessageTemplate : NSObject <LPMessageTemplateProtocol>
14+
@interface LPRegisterForPushMessageTemplate : LPPushMessageTemplate <LPMessageTemplateProtocol>
1415

1516
@end
1617

Leanplum-SDK/Classes/MessageTemplates/LPRegisterForPushMessageTemplate.m

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//
88

99
#import "LPRegisterForPushMessageTemplate.h"
10-
#import "LPPushAskToAskMessageTemplate.h"
10+
#import "LPPushMessageTemplate.h"
1111

1212
@implementation LPRegisterForPushMessageTemplate
1313

@@ -18,11 +18,16 @@ +(void)defineAction
1818
withArguments:@[]
1919
withResponder:^BOOL(LPActionContext *context) {
2020

21-
// TODO: when push check is moved away from templates, refactor to call it.
22-
LPPushAskToAskMessageTemplate* template = [[LPPushAskToAskMessageTemplate alloc] init];
23-
template.context = context;
24-
25-
[template enableSystemPush];
21+
LPRegisterForPushMessageTemplate *template = [[LPRegisterForPushMessageTemplate alloc] init];
22+
23+
if ([template shouldShowPushMessage]) {
24+
[template showNativePushPrompt];
25+
// Will count View event
26+
return YES;
27+
} else {
28+
return NO;
29+
}
30+
2631
return YES;
2732
}];
2833
}

0 commit comments

Comments
 (0)