keyman icon indicating copy to clipboard operation
keyman copied to clipboard

feat(android): detect Chrome version on Keyman install and prompt for upgrade

Open mcdurdin opened this issue 3 years ago • 10 comments

Is your feature request related to a problem? Please describe.

While Android allows for an evergreen Chrome browser, we are observing that many users still have an older version installed. This breaks Keyman, even for version 14. For version 15, our minimum version will be bumped to 57 to support WASM, and this will increase the scope of this problem.

Describe the solution you'd like

We should be able to detect the version of Chrome that is installed, and prompt the user to update it and block use of the keyboard (or progressively reduce functionality? stretch goal) until that prerequisite is filled.

If possible, we should try and lead the user to the method of running the upgrade, e.g. Play Store, or manual install? Some research may be required here.

If possible, we should backport this to 14.0 and just set the Chrome minver to 37(?) for Keyman 14.


Keyman for iPhone/iPad/Android:

  • Device: older Android devices
  • OS: Android
  • Keyman version: 15.0

mcdurdin avatar May 03 '21 21:05 mcdurdin

Play Store links: https://play.google.com/store/apps/details?id=com.google.android.webview https://play.google.com/store/apps/details?id=com.android.chrome

darcywong00 avatar May 06 '21 06:05 darcywong00

Spec question: Is this check performed every time the app starts? (vs trying to install ldml keyboard)

darcywong00 avatar May 06 '21 06:05 darcywong00

Yes, on app start makes sense.

mcdurdin avatar May 07 '21 05:05 mcdurdin

block use of the keyboard (or progressively reduce functionality? stretch goal) until that prerequisite is filled.

Can you give more clarification on the "degraded" mode if the minimum Chrome version isn't 57? The Keyman app should still function with sil_euro_latin. Maybe just block kmp installation if the keyboard keyman version >= 15.0?

darcywong00 avatar Jul 27 '21 13:07 darcywong00

Can you give more clarification on the "degraded" mode if the minimum Chrome version isn't 57?

  • If chrome version <57, allow installation of keyboards but if the keyboard requires v15 then show a warning at keyboard install time, at a minimum, and then if possible, don't allow the keyboard to be selected.

  • If chrome version <37, then we should block all usage of the touch keyboard entirely.

  • Even better, show a red warning banner at top of Keyman app while Chrome version is lower than desired, which the user can touch to get help on updating.

mcdurdin avatar Jul 28 '21 01:07 mcdurdin

So for the scope of things:

  • Checking the Chrome version would be in the Keyman app
  • keyboard selection / usage of touch keyboard is KMManager (Keyman Engine).

Then the Keyman engine change would impact 3rd party keyboards / FV Android / KAB?

darcywong00 avatar Jul 28 '21 06:07 darcywong00

Then the Keyman engine change would impact 3rd party keyboards / FV Android / KAB?

Yes, potentially. After all, they'll all go wrong in the same way if the Chrome version is too old.

mcdurdin avatar Jul 30 '21 01:07 mcdurdin

Can you give more clarification on the "degraded" mode if the minimum Chrome version isn't 57?

  • If chrome version <57, allow installation of keyboards but if the keyboard requires v15 then show a warning at keyboard install time, at a minimum, and then if possible, don't allow the keyboard to be selected.
  • If chrome version <37, then we should block all usage of the touch keyboard entirely. [e.g.] don't show the osk at all because it just won't function correctly. Show instead an upgrade message

These are the remaining TODOs on this issue

darcywong00 avatar Aug 06 '21 02:08 darcywong00

Is this resolved?

mcdurdin avatar Sep 18 '21 23:09 mcdurdin

Is this resolved?

The remaining TODOs on this issue are for handling LDML keyboards (when that time comes). I'll change milestone to Future for 16.0

darcywong00 avatar Sep 19 '21 00:09 darcywong00

Query: can(should) we bundle our own version of chromium and avoid this issue? Is it possible to bundle only for specific versions of Android?

mcdurdin avatar Sep 16 '23 07:09 mcdurdin