Skip to content

Commit fa82ce5

Browse files
authored
Merge pull request #1299 from OneSignal/user_model/web_view_inspectability
[User model] Web view inspectability
2 parents 4984928 + 20e70ba commit fa82ce5

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

iOS_SDK/OneSignalSDK/OneSignalCore/Source/OneSignalLog.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@ typedef NS_ENUM(NSUInteger, ONE_S_LOG_LEVEL) {
4444
@interface OneSignalLog : NSObject<OSDebug>
4545
+ (Class<OSDebug>)Debug;
4646
+ (void)onesignalLog:(ONE_S_LOG_LEVEL)logLevel message:(NSString* _Nonnull)message;
47+
+ (ONE_S_LOG_LEVEL)getLogLevel;
4748
@end

iOS_SDK/OneSignalSDK/OneSignalCore/Source/OneSignalLog.m

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ + (void)onesignalLog:(ONE_S_LOG_LEVEL)logLevel message:(NSString* _Nonnull)messa
5050
onesignal_Log(logLevel, message);
5151
}
5252

53+
+ (ONE_S_LOG_LEVEL)getLogLevel {
54+
return _nsLogLevel;
55+
}
56+
5357
void onesignal_Log(ONE_S_LOG_LEVEL logLevel, NSString* message) {
5458
NSString* levelString;
5559
switch (logLevel) {

iOS_SDK/OneSignalSDK/OneSignalInAppMessages/UI/OSInAppMessageView.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,19 @@ - (void)setupWebviewWithMessageHandler:(id<WKScriptMessageHandler>)handler {
107107
self.webView = [[WKWebView alloc] initWithFrame:mainBounds configuration:configuration];
108108
self.webView.backgroundColor = [UIColor clearColor];
109109
self.webView.opaque = NO;
110+
// https://webkit.org/blog/13936/enabling-the-inspection-of-web-content-in-apps/
111+
if (@available(macOS 13.3, iOS 16.4, *)) {
112+
if ([OneSignalLog getLogLevel] >= ONE_S_LL_DEBUG) {
113+
if ([self.webView respondsToSelector:@selector(setInspectable:)]) {
114+
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self.webView methodSignatureForSelector:@selector(setInspectable:)]];
115+
BOOL value = YES; // Boolean parameters must be captured as a variable before being set as an argument
116+
[invocation setTarget:self.webView];
117+
[invocation setSelector:@selector(setInspectable:)];
118+
[invocation setArgument:&value atIndex:2];
119+
[invocation invoke];
120+
}
121+
}
122+
}
110123
[self addSubview:self.webView];
111124

112125
[self layoutIfNeeded];

iOS_SDK/OneSignalSDK/OneSignalInAppMessages/UI/OneSignalWebView.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,19 @@ - (void)viewDidLoad {
4040

4141
_webView = [WKWebView new];
4242
_webView.navigationDelegate = self;
43+
// https://webkit.org/blog/13936/enabling-the-inspection-of-web-content-in-apps/
44+
if (@available(macOS 13.3, iOS 16.4, *)) {
45+
if ([OneSignalLog getLogLevel] >= ONE_S_LL_DEBUG) {
46+
if ([_webView respondsToSelector:@selector(setInspectable:)]) {
47+
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[_webView methodSignatureForSelector:@selector(setInspectable:)]];
48+
BOOL value = YES; // Boolean parameters must be captured as a variable before being set as an argument
49+
[invocation setTarget:_webView];
50+
[invocation setSelector:@selector(setInspectable:)];
51+
[invocation setArgument:&value atIndex:2];
52+
[invocation invoke];
53+
}
54+
}
55+
}
4356
[self.view addSubview:_webView];
4457

4558
[self pinSubviewToMarginsWithSubview:_webView withSuperview:self.view];

0 commit comments

Comments
 (0)