Skip to content
tokenAppsPLAY & COLLECT

Mobile, PC & developer handoff

Updated 2026-09-18: SDK installation and game-only embedding are separate deliverables. Implement the game-only embed guide, then register its deployed URL. A homepage with SDK installed can still overflow inside the player.

Updated: 2026-09-17. Applies to the v1.4 SDK and the current tokenApps player.

Deliverables to request

Deliverable What the developer must provide
Primary URL HTTPS game-only entry point, directly playable in an iframe
Device support Mobile, PC, tablet; mark unsupported devices honestly
Build delivery One responsive build, or separate mobile / PC test URLs
Player orientation Landscape or portrait for the primary player frame
Input Touch for mobile, keyboard / mouse for PC; optional gamepad
Languages English first where supported; list all actual game languages
Integration Not started / in progress / integrated, plus individual SDK features
QA Tested browser versions, device/OS, completed checks and known issues
Artwork Icon, cover, up to three real gameplay screenshots
Contact Developer email, build version/date and target fix dates in notes

Open the registration form and use Download developer brief even before signing in. It exports the current answers and a checklist to send to a developer. Downloading does not send messages. Submit the finished form when ready. Owners of existing games use Mobile & PC requirements in My games. Operators see the private brief in the app detail panel.

One entry point, multiple devices

Prefer a responsive player URL. If the game has separate builds, provide both URLs for review and route from the primary URL yourself. Submitted mobile/PC URLs are not automatically wired into the platform player.

Avoid routing purely by user agent: desktop windows can be narrow, tablets can have keyboards, and users can rotate mid-game. Base layout on the available frame size and input capability. Keep saved progress compatible between builds, or document differences.

The host records one orientation per app today. A mobile portrait + PC landscape combination needs a primary build that adapts within the chosen player container. Report device-specific orientation requirements in notes; there is no per-device orientation selector in the live player yet.

Fit the frame and remove unintended scroll

The iframe is smaller than the browser window because tokenApps has its own controls. Never size the game from screen.width or a fixed desktop height. Use the actual container size.

This is a starting point for a game-only document; do not apply it to an entire website containing FAQ or account pages:

<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<style>
  html, body { width: 100%; height: 100%; margin: 0; }
  body { overflow: hidden; overscroll-behavior: none; }
  #game-root {
    position: fixed; inset: 0; min-width: 0; min-height: 0;
    box-sizing: border-box;
    padding: env(safe-area-inset-top) env(safe-area-inset-right)
             env(safe-area-inset-bottom) env(safe-area-inset-left);
  }
  canvas { display: block; width: 100%; height: 100%; }
  .game-input { touch-action: none; }
  button { min-width: 44px; min-height: 44px; }
</style>
<div id="game-root"><canvas class="game-input"></canvas></div>

Use ResizeObserver on #game-root to call your engine's resize method. Update canvas drawing-buffer dimensions for devicePixelRatio separately from its CSS size; keep input coordinates and the camera in sync. Cap rendering resolution on slower devices. Changing canvas width/height resets its context, so redraw without recreating game state.

For a fixed-ratio board, calculate a contain scale (letterboxing is acceptable). HUD, pause, score, retry and touch controls must remain inside the visible area. Do not hide an oversized canvas behind overflow:hidden and call it responsive. Internal menus may scroll intentionally; the play surface should not create a second page scrollbar.

Input, audio and lifecycle

  • Use pointer events for mouse and touch. All mobile actions need visible touch controls; no hover-only action.
  • Limit touch-action:none and gesture prevention to the game surface. Do not globally disable zoom or native form interaction.
  • Keep touch targets at least 44×44 CSS px with space between them.
  • Unlock audio on tap/click. Handle failed play() / suspended AudioContext without blocking the game.
  • Pause appropriately on visibilitychange and resume safely. Avoid counting hidden time yourself.
  • Test resize, orientation change, browser toolbar expansion, device rotation and fullscreen rejection. Fullscreen is optional; a normal iframe must remain playable.
  • Guard localStorage, cookies and IndexedDB with fallbacks. Third-party frames can retain their origin but browser policies can block storage.
  • Do not restart a round on every SDK session event. Login and token refresh can repeat it.

QA matrix

These are review targets, not a promise that the host always gives these exact dimensions. Test the actual iframe bounds, including shorter heights.

Class Viewports to exercise Browsers
Small phone 320×568, 390×844 iOS Safari, Android Chrome on actual supported devices
Phone landscape 844×390 Rotation, visible HUD, no unwanted scroll
Tablet 768×1024, 1024×768 iPad Safari / Android Chrome as claimed
PC 1366×768, 1920×1080, narrow resizable window Chrome, Edge, Firefox, macOS Safari as claimed

For each claimed device: boot → play → pause/resume → game over → replay. Also verify guest play, blocked storage, SDK unavailable, login during play, cloud save after reload, and optional features declining/unavailable. For each result record device, OS, browser version, build version and date. Emulation is useful for layout; it is not proof of real-device audio or fullscreen support.

Farming, assets and release

The host measures time and settles automatic farming at 60 seconds. The existing SDK completion path has a 45-second threshold and shares the same daily award. Never add a second local TAP wallet or promise a reward from a client timer. See SDK handoff.

Upload PNG/JPEG/WebP only: each file at most 2MB and combined submission images at most 2.5MB. Recommended icon 512×512 and cover 1600×900 (16:9); include mobile and PC gameplay screenshots where supported. Do not bake tiny labels into artwork.

Unfinished SDK work can be reported honestly; it does not automatically block submitting for review. Approval and publishing are separate. A successful HTTP embed check only checks headers, not whether the game fits or can be controlled.

Copyable request

Please deliver:
- Primary HTTPS player URL (game-only)
- Mobile / PC / tablet support and unsupported cases
- Responsive build or device URLs, routing handled by primary URL
- Primary orientation, touch + keyboard/mouse controls
- SDK 1.4 integration status and feature list
- Guest play, blocked storage, no unintended scroll, resize/rotation, audio checks
- Device / OS / browser / build versions, known issues and fix dates
- English game name/copy, supported languages, icon/cover/gameplay screenshots
- Developer contact email
Documentation: https://tokenapps.io/dev/sdk
Device checklist: https://tokenapps.io/dev/devices
Submission / downloadable brief: https://tokenapps.io/submit