Manifest Configuration for AR Game Publishing on Google Play and App Store

Our video game development company runs independent projects, jointly creates games with the client and provides additional operational services. Expertise of our team allows us to cover all gaming platforms and develop an amazing product that matches the customer’s vision and players preferences.
Showing 1 of 1 servicesAll 242 services
Manifest Configuration for AR Game Publishing on Google Play and App Store
Simple
~2-3 business days
FAQ
Our competencies
What are the stages of Game Development?
Latest works
  • image_games_mortal_motors_495_0.webp
    Game development for Mortal Motors
    663
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    859
  • image_games_second_team_604_0.webp
    Game development for the company Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D animation - teaser for the game Phoenix 2.
    533

tags: [vr-ar]

Manifest setup for AR game publishing in Google Play and App Store

AR app is not regular mobile app. Manifest for Google Play and Info.plist for App Store contain AR-specific keys without which app either fails review or crashes at user's startup if ARCore/ARKit unsupported or uninitialized.

AndroidManifest.xml for ARCore: required and optional modes

Google Play distinguishes two AR dependency modes: required and optional. Determined via <meta-data> in manifest:

<meta-data android:name="com.google.ar.core" android:value="required"/>

At required Google Play auto-hides app on devices where ARCore unsupported, installs ARCore Services automatically at app installation. At optional — app available to everyone, but code must check AR availability before session init via ArCoreApk.getInstance().checkAvailability().

Typical error: set required but forgot camera feature filter:

<uses-feature android:name="android.hardware.camera.ar" android:required="true"/>

Without this line app installs on tablets without needed camera, ARCore won't launch, user gets crash on session.resume() with CameraNotAvailableException.

If app uses Depth API (ARCore Depth), need separate <meta-data> with com.google.ar.core.depth set to required or optional. Depth only works on specific models — check ARCore docs; not marking optional on unsupported devices, app crashes on depth mode activation with UNAVAILABLE_DEVICE_NOT_COMPATIBLE.

Info.plist for ARKit: NSUsageDescription and capabilities

iOS App Store requires explicit camera usage description in Info.plist:

<key>NSCameraUsageDescription</key>
<string>Camera used for augmented reality display</string>

Wording matters: App Store Review Guidelines require specific reason why camera needed. "For AR" — accepted. "For app features" — potential rejection cause.

For apps using ARWorldTrackingConfiguration with frameSemantics (People Occlusion, Body Detection), add ARBodyTrackingConfiguration capability. If using LiDAR (Scene Reconstruction) — add UIRequiredDeviceCapabilities with arkit and ensure minimum iOS 13.0+.

Location in AR: if app places objects by GPS coordinates (geo AR), need NSLocationWhenInUseUsageDescription and potentially NSLocationAlwaysAndWhenInUseUsageDescription. App Store rejects apps requesting always-location without clear need.

Unity AR Foundation: what auto-generates, what to add manually

AR Foundation auto-adds part of required keys to manifest via XR Plug-in Management. Not everything. Depth API capabilities, specific usage descriptions, custom permissions — edit manually in Assets/Plugins/Android/AndroidManifest.xml (Android) or via Xcode Post-Process Script (iOS).

For iOS convenient to use UnityEditor.iOS.Xcode.PlistDocument in PostProcessBuild script — programmatically adds needed keys after Xcode project generation, no risk losing changes on rebuild.

Real project problem example: AR Foundation 5.x with ARKit Face Tracking auto-adds NSFaceIDUsageDescription even if Face Tracking unused in project. App Store Review notes as mismatch to declared functions. Solution — explicitly disable Face Tracking in XR Plug-in Management if not needed.

Setup process

Audit current manifests, identify requirement mismatches with current ARCore and ARKit versions. Configure dependencies (required/optional), permissions, usage descriptions. Test on different device classes — including devices without AR support. Prepare final manifests for submission.

Task Estimated timeline
Audit + fix existing manifests 1 working day
Setup from scratch (both platforms) 2–3 working days
Iteration after App Store / Google Play rejection 1–2 days per cycle

Cost calculated individually after project analysis.