getBrowserAndOSInfoScript function
Script injected into WebView to detect OS/browser and post back via channel.
Implementation
String getBrowserAndOSInfoScript(String channelName) {
return '''
(function getOSAndBrowser() {
var ua = navigator.userAgent;
var os = 'unknown';
if (ua.indexOf('Win') !== -1) os = 'Windows';
else if (ua.indexOf('Mac') !== -1) os = 'MacOS';
else if (ua.indexOf('Linux') !== -1) os = 'Linux';
else if (ua.indexOf('Android') !== -1) os = 'Android';
else if (ua.indexOf('like Mac') !== -1) os = 'iOS';
var browser = 'unknown', browserVersion = null;
if (ua.indexOf('Chrome') !== -1) {
browser = 'Chrome';
var m = ua.match(/Chrome\\/([0-9.]+)/);
browserVersion = m ? m[1] : null;
} else if (ua.indexOf('Safari') !== -1) {
browser = 'Safari';
var m = ua.match(/Version\\/([0-9.]+)/);
browserVersion = m ? m[1] : null;
}
var browserLanguage = navigator.language || (navigator.languages && navigator.languages[0]) || null;
window.$channelName.postMessage(JSON.stringify({
type: 'SYSTEM_INFO',
data: { os: os, browser: browser, browser_version: browserVersion, browser_language: browserLanguage }
}));
})();
true;
''';
}