Skip to content

Commit 5466789

Browse files
committed
added custom user agent handling
1 parent 79cfe2b commit 5466789

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

ios-pwa-wrapper/Constants.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,18 @@
99
//import Foundation
1010
import UIKit
1111

12-
// Basic configuration
12+
// Basic App-/WebView-configuration
13+
let appTitle = "iOS PWA Wrapper"
1314
let webAppUrl = URL(string: "https://www.duckduckgo.com")
1415
let allowedOrigin = "duckduckgo.com"
15-
let appTitle = "iOS PWA Wrapper"
16-
let menuButtonJavascript = "document.querySelector('body').remove();"
16+
let menuButtonJavascript = """
17+
document.querySelector('body').remove();
18+
"""
19+
let useCustomUserAgent = false
20+
let useUserAgentPostfix = true
21+
let customUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A356"
22+
let userAgentPostfix = "iOSApp"
23+
1724

1825
// Settings
1926
let changeAppTitleToPageTitle = false

ios-pwa-wrapper/ViewController.swift

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,34 @@ class ViewController: UIViewController {
5959
webView = WKWebView(frame: CGRect(x: 0, y: 0, width: webViewContainer.frame.width, height: webViewContainer.frame.height))
6060
webView.navigationDelegate = self
6161
webView.uiDelegate = self
62-
webViewContainer.addSubview(webView)
6362
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
63+
webViewContainer.addSubview(webView)
6464

6565
// settings
6666
webView.allowsBackForwardNavigationGestures = true
67+
// user agent
68+
if (useCustomUserAgent) {
69+
webView.customUserAgent = customUserAgent
70+
}
71+
if (useUserAgentPostfix) {
72+
if (useCustomUserAgent) {
73+
webView.customUserAgent = customUserAgent + " " + userAgentPostfix
74+
} else {
75+
webView.evaluateJavaScript("navigator.userAgent", completionHandler: { (result, error) in
76+
if let resultObject = result {
77+
self.webView.customUserAgent = (String(describing: resultObject) + " " + userAgentPostfix)
78+
}
79+
})
80+
}
81+
}
6782

6883
// init observers
6984
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.isLoading), options: NSKeyValueObservingOptions.new, context: nil)
7085
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress), options: NSKeyValueObservingOptions.new, context: nil)
7186
}
7287

7388
// Initialize UI
74-
// Call after WebView has been initialized
89+
// call after WebView has been initialized
7590
func setupUI() {
7691
// UI elements
7792
leftButton.isEnabled = false
@@ -87,7 +102,6 @@ class ViewController: UIViewController {
87102
navigationItem.largeTitleDisplayMode = UINavigationItem.LargeTitleDisplayMode.always
88103
}
89104
if (useLightStatusBarStyle) {
90-
// UIApplication.shared.setStatusBarStyle(.lightContent, animated: true) // iOS < 9
91105
self.navigationController?.navigationBar.barStyle = UIBarStyle.black
92106
}
93107
}

0 commit comments

Comments
 (0)