getBrowserAndOSInfoScript function

String getBrowserAndOSInfoScript(
  1. String channelName
)

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;
  ''';
}