LoginSignup
8
1

More than 5 years have passed since last update.

Android 9 の UserAgent でバージョン表記に小数点以下がない

Last updated at Posted at 2018-12-25

発生した問題

Android 9 端末(PIXELとか)で、公開済みサイトの表示不具合が発生していた。

原因

使用している UserAgent 判定ライブラリが問題だった。
Android 9 の UserAgent は小数点以下が省略されていて、バージョン判定の正規表現が正しくヒットしていなかったことが原因。

参考:AU技術情報

Android 8 の場合、 8.0.0 とかだったのに、 Android 9 の場合、 9 のみ。

問題のコード

    if(info.separator){
      let os = ua.split(info.separator).pop().split(' ').shift().replace(/_/g, '.').replace(/;/g, '');
      os = Number(os.match(/^\d*\.\d*/).shift()); // 小数点以下がある前提
      info.version = os;
    }

修正したコード

- os = Number(os.match(/^\d+\.\d+/).shift()); // 小数点がある前提
+ os = Number(os.match(/(^\d+\.\d+|\d)|^\d+/).shift()); // 小数点がない場合も含む

まとめ

今回使用していた UserAgent 判定ライブラリの正規表現にも問題があるが、バージョン表記のルールを突然変えないでほしい。。。

参照情報

Android 9: Exception on plugin load due to issue with UA parsing #1404

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1