Android4.4のwebviewがChromiumになったことによる、ただひとつの弊害
もしくは、Android4.4からChromeのUAを正しく判定する方法
「ただひとつの」は盛りすぎたかもしんない(;・∀・)
困ってたこと
アプリが入ってたらアプリを表示して,
入ってなかったらストアに飛ばす実装がしたい
AndroidのChromeでのみ使えるIntentを使う方法↓
https://developer.chrome.com/multidevice/android/intents
を使ったりして、モダンに実装してやったぞ!
えっアプリ内ブラウザで
Google Chrome では intent://hogehuga が見つかりませんでした
って出ちゃうΣ(゚д゚lll)ガーン
結論
UserAgentをみてChromeかどうかを判定するときは、
Chrome
という文字列だけで判定するのでは不十分で、
Version/
という文字列が入っていないことも確認すること。
どうしてこうなった?
Android4.4(KitKat)から、AndroidのWebviewがChromiumベースになった。
(参考:https://developer.chrome.com/multidevice/webview/overview )
それにより、WebViewのUAにChrome
と書かれるようになった。
つまり、従来通りのUA判定では、ChromeアプリとWebViewを区別することができなくなった。
そんなことが、
ここ(https://developer.chrome.com/multidevice/user-agent#webview_user_agent)
の一番下にうすーく太字で書いてあった。
Versionって汎用的すぎてちょっと不安だけど、公式がそうアナウンスしてるんだから仕方ないよね!
追記
AUのUserAgent情報 (http://www.au.kddi.com/developer/android/kishu/ua/ )見たら、
Xperia ZL2 SOL25とか、AQUOS SERIE SHL25とか、標準ブラウザにも
Chrome
の文字列が入ってるので、誤判定してるかもですね。
実機持ってないので確かなことはわからないですが。。。(/ω・\)チラッ