|
@@ -133,6 +133,15 @@ static NSDictionary* customCertificatesForHost;
|
133
|
133
|
}
|
134
|
134
|
|
135
|
135
|
#if !TARGET_OS_OSX
|
|
136
|
+ [[NSNotificationCenter defaultCenter]addObserver:self
|
|
137
|
+ selector:@selector(appDidBecomeActive)
|
|
138
|
+ name:UIApplicationDidBecomeActiveNotification
|
|
139
|
+ object:nil];
|
|
140
|
+
|
|
141
|
+ [[NSNotificationCenter defaultCenter]addObserver:self
|
|
142
|
+ selector:@selector(appWillResignActive)
|
|
143
|
+ name:UIApplicationWillResignActiveNotification
|
|
144
|
+ object:nil];
|
136
|
145
|
if (@available(iOS 12.0, *)) {
|
137
|
146
|
// Workaround for a keyboard dismissal bug present in iOS 12
|
138
|
147
|
// https://openradar.appspot.com/radar?id=5018321736957952
|
|
@@ -156,6 +165,7 @@ static NSDictionary* customCertificatesForHost;
|
156
|
165
|
selector:@selector(hideFullScreenVideoStatusBars)
|
157
|
166
|
name:UIWindowDidBecomeHiddenNotification
|
158
|
167
|
object:nil];
|
|
168
|
+
|
159
|
169
|
}
|
160
|
170
|
#endif // !TARGET_OS_OSX
|
161
|
171
|
return self;
|
|
@@ -1129,6 +1139,33 @@ static NSDictionary* customCertificatesForHost;
|
1129
|
1139
|
}];
|
1130
|
1140
|
}
|
1131
|
1141
|
|
|
1142
|
+-(void)forceIgnoreSilentHardwareSwitch:(BOOL)initialSetup
|
|
1143
|
+{
|
|
1144
|
+ NSString *mp3Str = @"data:audio/mp3;base64,//tAxAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAFAAAESAAzMzMzMzMzMzMzMzMzMzMzMzMzZmZmZmZmZmZmZmZmZmZmZmZmZmaZmZmZmZmZmZmZmZmZmZmZmZmZmczMzMzMzMzMzMzMzMzMzMzMzMzM//////////////////////////8AAAA5TEFNRTMuMTAwAZYAAAAAAAAAABQ4JAMGQgAAOAAABEhNIZS0AAAAAAD/+0DEAAPH3Yz0AAR8CPqyIEABp6AxjG/4x/XiInE4lfQDFwIIRE+uBgZoW4RL0OLMDFn6E5v+/u5ehf76bu7/6bu5+gAiIQGAABQIUJ0QolFghEn/9PhZQpcUTpXMjo0OGzRCZXyKxoIQzB2KhCtGobpT9TRVj/3Pmfp+f8X7Pu1B04sTnc3s0XhOlXoGVCMNo9X//9/r6a10TZEY5DsxqvO7mO5qFvpFCmKIjhpSItGsUYcRO//7QsQRgEiljQIAgLFJAbIhNBCa+JmorCbOi5q9nVd2dKnusTMQg4MFUlD6DQ4OFijwGAijRMfLbHG4nLVTjydyPlJTj8pfPflf9/5GD950A5e+jsrmNZSjSirjs1R7hnkia8vr//l/7Nb+crvr9Ok5ZJOylUKRxf/P9Zn0j2P4pJYXyKkeuy5wUYtdmOu6uobEtFqhIJViLEKIjGxchGev/L3Y0O3bwrIOszTBAZ7Ih28EUaSOZf/7QsQfg8fpjQIADN0JHbGgQBAZ8T//y//t/7d/2+f5m7MdCeo/9tdkMtGLbt1tqnabRroO1Qfvh20yEbei8nfDXP7btW7f9/uO9tbe5IvHQbLlxpf3DkAk0ojYcv///5/u3/7PTfGjPEPUvt5D6f+/3Lea4lz4tc4TnM/mFPrmalWbboeNiNyeyr+vufttZuvrVrt/WYv3T74JFo8qEDiJqJrmDTs///v99xDku2xG02jjunrICP/7QsQtA8kpkQAAgNMA/7FgQAGnobgfghgqA+uXwWQ3XFmGimSbe2X3ksY//KzK1a2k6cnNWOPJnPWUsYbKqkh8RJzrVf///P///////4vyhLKHLrCb5nIrYIUss4cthigL1lQ1wwNAc6C1pf1TIKRSkt+a//z+yLVcwlXKSqeSuCVQFLng2h4AFAFgTkH+Z/8jTX/zr//zsJV/5f//5UX/0ZNCNCCaf5lTCTRkaEdhNP//n/KUjf/7QsQ5AEhdiwAAjN7I6jGddBCO+WGTQ1mXrYatSAgaykxBTUUzLjEwMKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==";
|
|
1145
|
+ NSString *scr;
|
|
1146
|
+ if (initialSetup) {
|
|
1147
|
+ scr = [NSString stringWithFormat:@"var s=new Audio('%@');s.id='wkwebviewAudio';s.controls=false;s.loop=true;s.play();document.body.appendChild(s);true", mp3Str];
|
|
1148
|
+ } else {
|
|
1149
|
+ scr = [NSString stringWithFormat:@"var s=document.getElementById('wkwebviewAudio');s.src=null;s.parentNode.removeChild(s);s=null;s=new Audio('%@');s.id='wkwebviewAudio';s.controls=false;s.loop=true;s.play();document.body.appendChild(s);true", mp3Str];
|
|
1150
|
+ }
|
|
1151
|
+ [self evaluateJS: scr thenCall: nil];
|
|
1152
|
+}
|
|
1153
|
+
|
|
1154
|
+-(void)disableIgnoreSilentSwitch
|
|
1155
|
+{
|
|
1156
|
+ [self evaluateJS: @"document.getElementById('wkwebviewAudio').src=null;true" thenCall: nil];
|
|
1157
|
+}
|
|
1158
|
+
|
|
1159
|
+-(void)appDidBecomeActive
|
|
1160
|
+{
|
|
1161
|
+ [self forceIgnoreSilentHardwareSwitch:false];
|
|
1162
|
+}
|
|
1163
|
+
|
|
1164
|
+-(void)appWillResignActive
|
|
1165
|
+{
|
|
1166
|
+ [self disableIgnoreSilentSwitch];
|
|
1167
|
+}
|
|
1168
|
+
|
1132
|
1169
|
/**
|
1133
|
1170
|
* Called when the navigation is complete.
|
1134
|
1171
|
* @see https://fburl.com/rtys6jlb
|
|
@@ -1136,11 +1173,13 @@ static NSDictionary* customCertificatesForHost;
|
1136
|
1173
|
- (void)webView:(WKWebView *)webView
|
1137
|
1174
|
didFinishNavigation:(WKNavigation *)navigation
|
1138
|
1175
|
{
|
|
1176
|
+ [self forceIgnoreSilentHardwareSwitch:true];
|
|
1177
|
+
|
1139
|
1178
|
if (_injectedJavaScript) {
|
1140
|
1179
|
[self evaluateJS: _injectedJavaScript thenCall: ^(NSString *jsEvaluationValue) {
|
1141
|
1180
|
NSMutableDictionary *event = [self baseEvent];
|
1142
|
1181
|
event[@"jsEvaluationValue"] = jsEvaluationValue;
|
1143
|
|
-
|
|
1182
|
+
|
1144
|
1183
|
if (self.onLoadingFinish) {
|
1145
|
1184
|
self.onLoadingFinish(event);
|
1146
|
1185
|
}
|