Skip to content

Commit 83b1986

Browse files
committed
use isFullscreen boolean to decide on safe area usage
1 parent a73dcb1 commit 83b1986

File tree

4 files changed

+78
-37
lines changed

4 files changed

+78
-37
lines changed

iOS_SDK/OneSignalDevApp/OneSignalDevApp/AppDelegate.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
8585
[OneSignal addSubscriptionObserver:self];
8686
[OneSignal addEmailSubscriptionObserver:self];
8787
[OneSignal setInAppMessageLifecycleHandler:self];
88-
[OneSignal pauseInAppMessages:true];
88+
[OneSignal pauseInAppMessages:false];
8989

9090
[OneSignal setNotificationWillShowInForegroundHandler:notificationReceiverBlock];
9191
[OneSignal setNotificationOpenedHandler:openNotificationHandler];
@@ -95,7 +95,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
9595
return YES;
9696
}
9797

98-
#define ONESIGNAL_APP_ID_DEFAULT @"0ba9731b-33bd-43f4-8b59-61172e27447d"
98+
#define ONESIGNAL_APP_ID_DEFAULT @"9ddf83fd-6cf8-403d-98a1-bd5285b23d0e"
9999
#define ONESIGNAL_APP_ID_KEY_FOR_TESTING @"ONESIGNAL_APP_ID_KEY_FOR_TESTING"
100100

101101
+ (NSString*)getOneSignalAppId {

iOS_SDK/OneSignalSDK/Source/OSInAppMessageView.m

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,12 @@ - (NSString *)addTagsToHTML:(NSString *)html {
9090
- (void)loadedHtmlContent:(NSString *)html withBaseURL:(NSURL *)url {
9191
// UI Update must be done on the main thread
9292
NSLog(@"11111 [self.webView loadHTMLString:html baseURL:url];");
93-
dispatch_sync(dispatch_get_main_queue(), ^{
94-
NSLog(@"222222 [self.webView loadHTMLString:html baseURL:url];");
95-
NSString *taggedHTML = [self addTagsToHTML:html];
96-
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"loadedHtmlContent with Tags: \n%@", taggedHTML]];
97-
[self.webView loadHTMLString:taggedHTML baseURL:url];
98-
});
93+
94+
NSLog(@"222222 [self.webView loadHTMLString:html baseURL:url];");
95+
NSString *taggedHTML = [self addTagsToHTML:html];
96+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"loadedHtmlContent with Tags: \n%@", taggedHTML]];
97+
[self.webView loadHTMLString:taggedHTML baseURL:url];
98+
9999
}
100100

101101
- (void)setupWebviewWithMessageHandler:(id<WKScriptMessageHandler>)handler {

iOS_SDK/OneSignalSDK/Source/OSInAppMessageViewController.m

Lines changed: 68 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ @interface OSInAppMessageViewController ()
9797

9898
@property (nonatomic) BOOL useWidthMargin;
9999

100+
@property (nonatomic) BOOL isFullscreen;
101+
100102
@end
101103

102104
@implementation OSInAppMessageViewController
@@ -225,25 +227,27 @@ - (void)maxDisplayTimeTimerFinished {
225227

226228
- (OSResultSuccessBlock)messageContentOnSuccess {
227229
return ^(NSDictionary *data) {
228-
if (!data) {
229-
[self encounteredErrorLoadingMessageContent:nil];
230-
return;
231-
}
232-
233-
let message = [NSString stringWithFormat:@"In App Messaging htmlContent.html: %@", data[@"html"]];
234-
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:message];
235-
236-
if (!self.message.isPreview)
237-
[[OneSignal sessionManager] onInAppMessageReceived:self.message.messageId];
230+
[OneSignalHelper dispatch_async_on_main_queue:^{
231+
if (!data) {
232+
[self encounteredErrorLoadingMessageContent:nil];
233+
return;
234+
}
235+
236+
let message = [NSString stringWithFormat:@"In App Messaging htmlContent.html: %@", data[@"html"]];
237+
[OneSignal onesignal_Log:ONE_S_LL_VERBOSE message:message];
238+
239+
if (!self.message.isPreview)
240+
[[OneSignal sessionManager] onInAppMessageReceived:self.message.messageId];
238241

239-
let baseUrl = [NSURL URLWithString:OS_IAM_WEBVIEW_BASE_URL];
240-
[self parseContentData:data];
241-
if (self.waitForTags) {
242-
return;
243-
}
244-
[self.delegate messageWillDisplay:self.message];
245-
[self.messageView loadedHtmlContent:self.pendingHTMLContent withBaseURL:baseUrl];
246-
self.pendingHTMLContent = nil;
242+
let baseUrl = [NSURL URLWithString:OS_IAM_WEBVIEW_BASE_URL];
243+
[self parseContentData:data];
244+
if (self.waitForTags) {
245+
return;
246+
}
247+
[self.delegate messageWillDisplay:self.message];
248+
[self.messageView loadedHtmlContent:self.pendingHTMLContent withBaseURL:baseUrl];
249+
self.pendingHTMLContent = nil;
250+
}];
247251
};
248252
}
249253

@@ -261,6 +265,34 @@ - (void)parseContentData:(NSDictionary *)data {
261265
self.useWidthMargin = ![styles[@"remove_width_margin"] boolValue];
262266
}
263267
}
268+
self.isFullscreen = !self.useHeightMargin;
269+
if (self.isFullscreen) {
270+
self.pendingHTMLContent = [self setContentInsetsInHTML:self.pendingHTMLContent];
271+
}
272+
}
273+
274+
- (NSString *)setContentInsetsInHTML:(NSString *)html {
275+
NSMutableString *newHTML = [[NSMutableString alloc] initWithString:html];
276+
if (@available(iOS 11, *)) {
277+
UIWindow *keyWindow = UIApplication.sharedApplication.keyWindow;
278+
CGFloat top = keyWindow.safeAreaInsets.top;
279+
CGFloat bottom = keyWindow.safeAreaInsets.bottom;
280+
CGFloat right = keyWindow.safeAreaInsets.right;
281+
CGFloat left = keyWindow.safeAreaInsets.left;
282+
NSString *safeAreaInsetsObjectString = [NSString stringWithFormat:@"{\n\
283+
top: %f,\n\
284+
bottom: %f,\n\
285+
right: %f,\n\
286+
left: %f,\n\
287+
}",top, bottom, right, left];
288+
//Script to set the tags for liquid tag substitution
289+
NSString *insetsString = [NSString stringWithFormat:@"\n\n\
290+
<script> \
291+
setSafeAreaInsets(%@);\
292+
</script>",safeAreaInsetsObjectString];
293+
[newHTML appendString: insetsString];
294+
}
295+
return newHTML;
264296
}
265297

266298
- (void)setWaitForTags:(BOOL)waitForTags {
@@ -318,13 +350,15 @@ - (void)addConstraintsForMessage {
318350
// as a notch or a rounded corner on newer iOS devices like iPhone X
319351
// Note that Safe Area layout guides were only introduced in iOS 11
320352
if (@available(iOS 11, *)) {
321-
let safeArea = self.view.safeAreaLayoutGuide;
322-
top = safeArea.topAnchor;
323-
bottom = safeArea.bottomAnchor;
324-
leading = safeArea.leadingAnchor;
325-
trailing = safeArea.trailingAnchor;
326-
center = safeArea.centerXAnchor;
327-
height = safeArea.heightAnchor;
353+
if (!self.isFullscreen) {
354+
let safeArea = self.view.safeAreaLayoutGuide;
355+
top = safeArea.topAnchor;
356+
bottom = safeArea.bottomAnchor;
357+
leading = safeArea.leadingAnchor;
358+
trailing = safeArea.trailingAnchor;
359+
center = safeArea.centerXAnchor;
360+
height = safeArea.heightAnchor;
361+
}
328362
}
329363

330364
CGRect mainBounds = [OneSignalViewHelper getScreenBounds];
@@ -400,8 +434,10 @@ - (void)addConstraintsForMessage {
400434
self.view.window.frame = mainBounds;
401435
NSLayoutAnchor *centerYanchor = self.view.centerYAnchor;
402436
if (@available(iOS 11, *)) {
403-
let safeArea = self.view.safeAreaLayoutGuide;
404-
centerYanchor = safeArea.centerYAnchor;
437+
if (!self.isFullscreen) {
438+
let safeArea = self.view.safeAreaLayoutGuide;
439+
centerYanchor = safeArea.centerYAnchor;
440+
}
405441
}
406442

407443
self.initialYConstraint = [self.messageView.centerYAnchor constraintEqualToAnchor:centerYanchor constant:0.0f];
@@ -670,6 +706,10 @@ - (BOOL)shouldDismissMessageWithPanGestureOffset:(double)offset withVelocity:(do
670706
}
671707
}
672708

709+
- (void)updateSafeAreaInsets {
710+
711+
}
712+
673713
/*
674714
This delegate function gets called when in-app html is load or action button is tapped
675715
*/
@@ -701,6 +741,7 @@ - (void)jsEventOccurredWithBody:(NSData *)body {
701741
case OSInAppMessageBridgeEventTypePageResize: {
702742
// Unused resize event for IAM during actions like orientation changes and displaying an IAM
703743
// self.message.height = event.resize.height;
744+
[self updateSafeAreaInsets];
704745
break;
705746
}
706747
case OSInAppMessageBridgeEventTypeActionTaken: {

iOS_SDK/OneSignalSDK/Source/OneSignalCommonDefines.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
// Networking
3434
#define OS_API_VERSION @"1"
3535
#define OS_API_ACCEPT_HEADER @"application/vnd.onesignal.v" OS_API_VERSION @"+json"
36-
#define OS_API_SERVER_URL @"https://api.onesignal.com/"
37-
#define OS_IAM_WEBVIEW_BASE_URL @"https://onesignal.com/"
36+
#define OS_API_SERVER_URL @"https://api.staging-01.onesignal.com/"
37+
#define OS_IAM_WEBVIEW_BASE_URL @"https://staging.onesignal.com/"
3838

3939
// OneSignalUserDefault keys
4040
// String values start with "OSUD_" to maintain a level of uniqueness from other libs and app code

0 commit comments

Comments
 (0)