Game related apps are being submitted in the App Store maintaining all the requirements of “App Store Review Guidelines”. In the guidelines follow up, all the important requirements are given a back check by the project management team beforehand the initial starting of the app development which acts as the best practice. We in Riseup Labs faced a challenge in the App Store in the review section with one of our gaming app named as “Jeeto.Online

Overview of Situation

Our Gaming App was already published in the App Store beforehand and we proceeded with a version update. Here to mention our basic mechanism of the application,

  • Application Mobile Platform Technology stack = Flutter
  • App contains 10+ HTML5 based games
  • Manage HTML5 game files as zipped file in server in folder segmentation
  • Integrate the system is with “Amazon S3 Bucket” micro-service
  • Run scripts in a web view in app importing data from “Amazon S3 Bucket” to load HTML5 game files.

Category & Types of the games files are,

  • Served HTML5 games were Hyper Casual & Skill Based Games
  • Games does not contain any Luck based Game content
  • The games does not fall into RMG category
  • We published the app in App Store under Entertainment > Games category

Store Submission Guidelines and Police Issue

When we submitted a version for update, App Store conflicted the version as per “Guideline 4.7 – Design – HTML5 Games, Bots, etc.” and detail message was per below.

app submission review message
Figure 1: App submission review message

According to “App Store Review” Guideline 4.7 – Design – HTML5 Games, Bots, etc.” it resembles:

“Apps may contain or run code that is not embedded in the binary (e.g. HTML5-based games, bots, etc.), as long as code distribution isn’t the main purpose of the app, the code is not offered in a store or store-like interface, and provided that the software:

(1) is free or purchased using in-app purchase; (2) only uses capabilities available in a standard WebKit view (e.g. it must open and run natively in Safari without modifications or additional software); your app must use WebKit and JavaScript Core to run third-party software and should not attempt to extend or expose native platform APIs to third-party software; (3) is offered by developers that have joined the Apple Developer Program and signed the Apple Developer Program License Agreement; (4) does not provide access to real money gaming, lotteries, or charitable donations; (5) adheres to the terms of these App Review Guidelines (e.g. does not include objectionable content); and (6) does not support digital commerce.

Upon request, you must provide an index of software and metadata available in your app. It must include Apple Developer Program Team IDs for the providers of the software along with a URL which App Review can use to confirm that the software complies with the requirements above.”

Reference: Apple Developer Forums

In simple terms this acts like, having HTML5 based games in the app and loading it in a webview brought from a server made the app look like a store itself inside an app which directs by the review message.

Getting to the solution

As we moved on to the solution part after different analysis, we went to a solution of embedding the HTML5 games in the app in order to pass the review according to Apple guidelines. We did the analysis to find out a viable solution.

Initiating the Solution

1. Add all game files to the project directory:

  • This step involves placing all the necessary game files, which could include HTML, JavaScript, CSS and any other assets required for the game, into the project directory in the Flutter app. We typically perform this task for ease of access and organization.

2. Separate assets folder by device platform (Android & iOS):

  • Create separate subfolders within the Flutter project’s assets directory to organize game assets specifically for Android and iOS. This keeps platform-specific assets separate for easier management.

3. Implement flutter_flavor for separate platform-specific code:

  • Flutter flavors allow you to create variations of your app for different environments (e.g., development, production, Android, iOS). In this step, you might configure different flavors for Android and iOS, enabling you to write platform-specific code for each.

4. Add the flutter_inappwebview package to run JS and HTML scripts:

  • Integrate the flutter_inappwebview package into the Flutter project. This package allows you to embed web views within your app, enabling the execution of JavaScript and rendering HTML content. It is common to use this package for displaying web-based games or interactive content within a Flutter app.

Executing the Solution

5. Create a virtual localhost server on the application at runtime and use a dedicated port number:

  • At runtime, the Flutter app sets up a virtual localhost server. This server serves the game’s web content to the embedded web view. We assign a dedicated port number to this server for communication.

6. Start the localhost server before the game loads:

  • You start the localhost server before attempting to load and display the game content. This ensures that the web view can fetch and display the necessary HTML, JavaScript, and other assets from the local server.

7. Stop the localhost server after the game has finished:

  • Once you successfully display and complete the web content, you should stop the localhost server to free up resources and prevent any potential conflicts. It is a good practice to always clean up resources when it is no longer needed.

By following the steps in the codebase it will come to a stage where it follows as per the App Store Review “Guideline 4.7 – Design – HTML5 Games, Bots, etc.”

Conclusion

By going through the mentioned steps we have submitted an updated version and put it on the “Add to Review” stage. In this stage we had gone through complicated review process

  • We embedded the games according to the guidelines
  • When we submitted the version they still rejected the version even though the version was with embedded files
  • We kept the conversation running with the review team
  • We gave proper explanation with the steps we have taken to ready the app as per guidelines
  • Once we provided proper explanation and requested to do a recheck again for better understanding of our version they have replied with the following message as per the image
embedded submission review message
Figure 2: Embedded Submission Review Message

After this when their additional reviewer had gone through the app they approved the submission automatically. We hope the above guidelines may help you to overcome the issue if it arrives for your app too. If help or query related to such concerns are needed feel free to contact us right away.

If you are curious and want to learn more about our gaming platform then check Jeeto.Online

Read Similar Articles:

This page was last edited on 19 December 2023, at 1:15 pm