Skip to content

Commit c50e656

Browse files
authored
Merge pull request #1 from iAugux/fix/dialog-issue
[Fix] Dialog Issue
2 parents e6d47c0 + dee8b40 commit c50e656

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,6 @@
361361
CA1A6E7020DC2E73001C41B9 /* OneSignalDialogRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E6E20DC2E73001C41B9 /* OneSignalDialogRequest.m */; };
362362
CA1A6E7120DC2E73001C41B9 /* OneSignalDialogRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E6E20DC2E73001C41B9 /* OneSignalDialogRequest.m */; };
363363
CA1A6E7220DC2E73001C41B9 /* OneSignalDialogRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E6E20DC2E73001C41B9 /* OneSignalDialogRequest.m */; };
364-
CA1A6E7520DC2F04001C41B9 /* OneSignalDialogControllerOverrider.h in Headers */ = {isa = PBXBuildFile; fileRef = CA1A6E7320DC2F04001C41B9 /* OneSignalDialogControllerOverrider.h */; };
365364
CA1A6E7820DC2F04001C41B9 /* OneSignalDialogControllerOverrider.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E7420DC2F04001C41B9 /* OneSignalDialogControllerOverrider.m */; };
366365
CA36A42C208FDEFB003EFA9A /* NSURL+OneSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = CA36A42A208FDEFB003EFA9A /* NSURL+OneSignal.h */; };
367366
CA36A42D208FDEFB003EFA9A /* NSURL+OneSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = CA36A42B208FDEFB003EFA9A /* NSURL+OneSignal.m */; };
@@ -1508,7 +1507,6 @@
15081507
CACBAAA0218A6243000ACAA5 /* OSInAppMessage.h in Headers */,
15091508
91C7725E1E7CCE1000D612D0 /* OneSignalInternal.h in Headers */,
15101509
CAB269DF21B2038B00F8A43C /* OSInAppMessageBridgeEvent.h in Headers */,
1511-
CA1A6E7520DC2F04001C41B9 /* OneSignalDialogControllerOverrider.h in Headers */,
15121510
9129C6BD1E89E7AB009CB6A0 /* OSSubscription.h in Headers */,
15131511
CA7FC89F21927229002C4FD9 /* OSDynamicTriggerController.h in Headers */,
15141512
DE98773C2591656A00DE07D5 /* NSDateFormatter+OneSignal.h in Headers */,

iOS_SDK/OneSignalSDK/Source/OneSignalDialogController.m

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ - (void)presentDialogWithTitle:(NSString * _Nonnull)title withMessage:(NSString
9090
}
9191

9292
- (void)displayDialog:(OSDialogRequest * _Nonnull)request {
93-
let rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
94-
93+
let visibleViewController = [OneSignalDialogController visibleViewController];
94+
9595
let controller = [UIAlertController alertControllerWithTitle:request.title message:request.message preferredStyle:UIAlertControllerStyleAlert];
9696

9797
[controller addAction:[UIAlertAction actionWithTitle:request.cancelTitle style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
@@ -106,8 +106,8 @@ - (void)displayDialog:(OSDialogRequest * _Nonnull)request {
106106
}]];
107107
}
108108
}
109-
110-
[rootViewController presentViewController:controller animated:true completion:nil];
109+
110+
[visibleViewController presentViewController:controller animated:true completion:nil];
111111
}
112112
#pragma clang diagnostic push
113113
#pragma clang diagnostic ignored "-Wdeprecated"
@@ -139,4 +139,23 @@ - (void)clearQueue {
139139
self.queue = [NSMutableArray new];
140140
}
141141

142+
+ (UIViewController *)visibleViewController {
143+
let rootViewController = [[[UIApplication sharedApplication] keyWindow] rootViewController];
144+
return [OneSignalDialogController getVisibleViewControllerFrom:rootViewController];
145+
}
146+
147+
+ (UIViewController *) getVisibleViewControllerFrom:(UIViewController *) vc {
148+
if ([vc isKindOfClass:[UINavigationController class]]) {
149+
return [OneSignalDialogController getVisibleViewControllerFrom:[((UINavigationController *) vc) visibleViewController]];
150+
} else if ([vc isKindOfClass:[UITabBarController class]]) {
151+
return [OneSignalDialogController getVisibleViewControllerFrom:[((UITabBarController *) vc) selectedViewController]];
152+
} else {
153+
if (vc.presentedViewController) {
154+
return [OneSignalDialogController getVisibleViewControllerFrom:vc.presentedViewController];
155+
} else {
156+
return vc;
157+
}
158+
}
159+
}
160+
142161
@end

0 commit comments

Comments
 (0)