diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index 816c7da..42b409a 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -566,7 +566,7 @@ ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [ // Apple - /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone + /(?:\/|\()(ip(?:hone|od)[\w, ]*)[\/\);]/i // iPod/iPhone ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [ /\b(?:ios|apple\w+)\/.+[\(\/](ipad)/i, // iPad /\b(ipad)[\d,]*[;\] ].+(mac |i(pad)?)os/i @@ -964,7 +964,7 @@ // iOS/macOS /[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS - /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i, + /(?:ios;fbsv|ios(?=.+ip(?:ad|hone))|ip(?:ad|hone)(?: |.+i(?:pad)?)os)[\/ ]([\w\.]+)/i, /cfnetwork\/.+darwin/i ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [ /(mac os x) ?([\w\. ]*)/i, diff --git a/test/data/ua/device/apple.json b/test/data/ua/device/apple.json index aca64ee..0ea909e 100644 --- a/test/data/ua/device/apple.json +++ b/test/data/ua/device/apple.json @@ -161,6 +161,15 @@ "type": "mobile" } }, + { + "desc": "iPhone using Spotify", + "ua": "Spotify/8.7.70 iOS/16.0 (iPhone15,3)", + "expect": { + "vendor": "Apple", + "model": "iPhone15,3", + "type": "mobile" + } + }, { "desc": "iPhone SE", "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone8,4;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBCR/]", diff --git a/test/data/ua/os/ios.json b/test/data/ua/os/ios.json index 86ba8cb..1b0d636 100644 --- a/test/data/ua/os/ios.json +++ b/test/data/ua/os/ios.json @@ -17,6 +17,15 @@ "version" : "5.1.1" } }, + { + "desc" : "iOS with DuckDuckGo", + "ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1 Ddg/26.0", + "expect" : + { + "name" : "iOS", + "version" : "18.7" + } + }, { "desc" : "iOS with Opera Mini", "ua" : "Opera/9.80 (iPhone; Opera Mini/7.1.32694/27.1407; U; en) Presto/2.8.119 Version/11.10", @@ -35,6 +44,33 @@ "version" : "13.6.1" } }, + { + "desc": "iOS with Instagram", + "ua": "Instagram 5.0.2 (iPhone5,1; iPhone OS 7_0_4; en_US; en) AppleWebKit/420+", + "expect": + { + "name" : "iOS", + "version" : "7.0.4" + } + }, + { + "desc": "iOS with MS Word App", + "ua": "Microsoft Office Word/2.44.1211 (iOS/13.7; Tablet; es-MX; AppStore; Apple/iPad11,3)", + "expect": + { + "name" : "iOS", + "version" : "13.7" + } + }, + { + "desc": "iOS with Quora App", + "ua": "Quora 8.4.30 rv:3230 env:prod (iPad11,3; iPadOS 17.7; en_GB) AppleWebKit", + "expect": + { + "name" : "iOS", + "version" : "17.7" + } + }, { "desc": "iOS with Slack App", "ua": "com.tinyspeck.chatlyio/23.04.10 (iPhone; iOS 16.4.1; Scale/3.00)", @@ -44,6 +80,33 @@ "version" : "16.4.1" } }, + { + "desc": "iOS with Snapchat", + "ua": "Snapchat/12.12.1.40 (iPhone15,2; iOS 16.2; gzip)", + "expect": + { + "name" : "iOS", + "version" : "16.2" + } + }, + { + "desc": "iOS with Spotify App", + "ua": "Spotify/8.7.70 iOS/16.0 (iPhone15,3)", + "expect": + { + "name" : "iOS", + "version" : "16.0" + } + }, + { + "desc": "iOS with TuneIn Radio App", + "ua": "TuneIn Radio/27.1.0; iPad6,3; iPadOS/16.6", + "expect": + { + "name" : "iOS", + "version" : "16.6" + } + }, { "desc" : "iOS BE App", "ua" : "APP-BE Test/1.0 (iPad; Apple; CPU iPhone OS 7_0_2 like Mac OS X)",