Skip to content

Commit f7da811

Browse files
authored
Merge pull request #907 from iAugux/master
Fix Dialog Issue
2 parents 5a6204f + 7d8643b commit f7da811

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
@@ -374,7 +374,6 @@
374374
CA1A6E7020DC2E73001C41B9 /* OneSignalDialogRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E6E20DC2E73001C41B9 /* OneSignalDialogRequest.m */; };
375375
CA1A6E7120DC2E73001C41B9 /* OneSignalDialogRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E6E20DC2E73001C41B9 /* OneSignalDialogRequest.m */; };
376376
CA1A6E7220DC2E73001C41B9 /* OneSignalDialogRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E6E20DC2E73001C41B9 /* OneSignalDialogRequest.m */; };
377-
CA1A6E7520DC2F04001C41B9 /* OneSignalDialogControllerOverrider.h in Headers */ = {isa = PBXBuildFile; fileRef = CA1A6E7320DC2F04001C41B9 /* OneSignalDialogControllerOverrider.h */; };
378377
CA1A6E7820DC2F04001C41B9 /* OneSignalDialogControllerOverrider.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1A6E7420DC2F04001C41B9 /* OneSignalDialogControllerOverrider.m */; };
379378
CA36A42C208FDEFB003EFA9A /* NSURL+OneSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = CA36A42A208FDEFB003EFA9A /* NSURL+OneSignal.h */; };
380379
CA36A42D208FDEFB003EFA9A /* NSURL+OneSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = CA36A42B208FDEFB003EFA9A /* NSURL+OneSignal.m */; };
@@ -1538,7 +1537,6 @@
15381537
CACBAAA0218A6243000ACAA5 /* OSInAppMessage.h in Headers */,
15391538
91C7725E1E7CCE1000D612D0 /* OneSignalInternal.h in Headers */,
15401539
CAB269DF21B2038B00F8A43C /* OSInAppMessageBridgeEvent.h in Headers */,
1541-
CA1A6E7520DC2F04001C41B9 /* OneSignalDialogControllerOverrider.h in Headers */,
15421540
9129C6BD1E89E7AB009CB6A0 /* OSSubscription.h in Headers */,
15431541
CA7FC89F21927229002C4FD9 /* OSDynamicTriggerController.h in Headers */,
15441542
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)