モチベーション
iOS、Line内のブラウザとデフォルトブラウザのSafariで挙動が違う処理があるので、その判別をする必要があった。
実験方法
navigator.userAgent.toLowerCase()
の出力結果の比較
(今の所の)結論
TwitterブラウザとSafariの区別がつかない
結果
Safari
mozilla/5.0 (iphone; cpu iphone os 12_0 like mac os x) applewebkit/605.1.15 (khtml, like gecko) version/12.0 mobile/15e148 safari/604.1
Line
mozilla/5.0 (iphone; cpu iphone os 12_0 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/16a366 safari line/8.14.5
Mozilla/5.0 (iphone; cpu iphone os 12_0 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/16a366 [fban/fbios;fbav/192.0.0.61.85;fbbv/126707849;fbdv/iphone10,3;fbmd/iphone;fbsn/ios;fbsv/12.0;fbss/3;fbcr/ド-コ-モ-;fbid/phone;fblc/en_us;fbop/5;fbrv/127817253]
Twitter(Safariと変わらない)
mozilla/5.0 (iphone; cpu iphone os 12_0 like mac os x) applewebkit/605.1.15 (khtml, like gecko) version/12.0 mobile/15e148 safari/604.1
おまけ
アプリ、OS、デバイス環境を判別する正規表現
var ua = navigator.userAgent.toLowerCase();
var isIOS = /ip(hone|od|ad)/.test(ua);
var isAndroid = /android/.test(ua);
var isMobile = isIOS || isAndroid;
var isLine = /line/.test(ua);
var isFacebook = /fb/.test(ua);
var isSafari = /safari/.test(ua);
var isChrome = /chrome/.test(ua);
var isOpera = /opera/.test(ua);