iPadOS and installation in mobile mode
In September of 2019, Apple has released a "separate" version of iOS dedicated to the iPad: iPadOS. With it, comes a major change in how Safari handles websites and identifies itself, and which impacts installations on AppsFore.
Since first iOS releases, Safari identified itself as iPhone or iPad and sent a "mobile" user-agent like Mozilla/5.0 (iPad; CPU iPhone OS 12_1_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1
, which clearly indicated what the device is.
At some point, Apple introduced a "Desktop mode" that didn't change much for the display of the website as most are using css, media queries and screen sizes for the display rules, but could help enhanced the experience on maybe some older website still using browser detection. Technically, that mode sends a desktop user-agent like Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Safari/605.1.15, which identifies the iPad as a Safari
on macOS.
Now, with iPadOS, Apple is forcing the "Desktop mode" as the default mode, always identifying itself as Safari on macOS. This breaks the basic internet rule of user-agents being identifiers of the users' browser, and will likely break many visitor statistics mechanisms, couting iPads as Desktops...
On AppsFore, we use the user-agent on the installation page to show an installation button on an iOS device and a download button on a desktop, as well as display some useful information on the compatibility of the app: system version vs minimum required version of the app, device type vs device family of the app, ... This was all broken with this change from Apple.
However, good news, there is a possibility to switch to "Mobile mode" from the "aA" button in the address bar (or even set the website to display as mobile by default in "aA">"Settings"). This make our installation work again as expected. We therefore enforce users to switch back to mobile when visiting the page from an iPad. This adds one step to the installation process, but is necessary now on iPadOS.