Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

発生した問題

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

原因

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

参考:AU技術情報

https://www.au.com/developer/android/kishu/ua/

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

yuusuke510
色々勉強中です。
d2cdot
テクノロジーの力で『伝えたいコトを伝わるカタチに』
https://www.d2cdot.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away