How to make your HTML5 game look nice on the iPhone X once you ported it with Cordova

One of the most interesting things you can do once you have built your HTML5 game is to port it on mobile devices as native apps using automatic cloud services like Cocoon.io or using the official developer SDK once you wrapped it with Cordova.

Everything worked easy and fine… until iPHone X come to the market. If you create a Xcode project with Cordova, and run in on an actual iPhone X or in the simulator like in next picture with Stack the Crates running on it – download it for your Android devices! – you will see something like this:

What are those two white – or any other color, according to your <body> background – areas? It’s some kind of “safe area” to make websites show appropriately in the strange iPhone X display, and can be fixed adding an attribute to viewport meta.

The attribute is viewport-fit=cover.

viewport-fit has three possible values:

contain: The viewport should fully contain the web content. This means position fixed elements will be contained within the safe area on iOS 11.

cover: The web content should fully cover the viewport. This means position fixed elements will be fixed to the viewport, even if that means they will be obscured. This restores the behaviour we had on iOS 10.

auto: The default value, in this case it behaves the same as contain.

The latest Cordova distribution does not add viewport-fit configuration, so you should add it by yourself in your index.html file.

Let’s have a look at the game now:

Let’s have a look at the game now:

Much better, but it still shows two little black areas. How can you make the game fill the entire screen? The answer is in next picture: Cordova did not add the launch images for iPhone X.

Without launch images, the game is not able to know the actual iPhone size and won’t cover the entire screen.

We have to create two images, the portrait image is called Default-2436h.png and its size is 1125×2436, while the landscape image is called Default-Landscape-2436h.png and its size is 2436×1125.

Both images must be saved in platform/ios/YOURGAMENAME/Images.xcassets/LaunchImage.launchimage folder.

And finally here we go:

Now, you only have to design your UI keeping in mind you have two black spots, but only on iPhone X. If you don’t want to bother with iPhone X strange screen, just do not upload any launch image for iPhone X, your game will look nice anyway.

And we managed to bring a HTML5 game even on the iPhone X, covering the entire screen.

  • Patrick

    Any idea what could cause a Construct 3 Cordova project to do this https://i.imgur.com/izFlZRT.png on iPhone X? Does this with viewport-fit=cover and either launchimages or storyboards set correctly. It does this on blank projects with no code.

    • Emanuele Feronato

      it’s very strange, are you sure you set launchimage path correctly?

      • Patrick

        Yeah it’s correct, whether I use launchimage or storyboards the viewport of the game is shifted off the left of the screen like this, it’s weird when the launchimage launches it takes up the whole screen perfectly centered then game still shows up like this. It’s only with C3 projects though, I have can run Unity projects using the exact same launchimages/storyboard is it displays correctly on iPhone X. Not sure if it’s a C3 or Cordova issue.

        • Emanuele Feronato

          I’ll investigate, setting up a C3 “hello world”