Integrate entitlement checks and achievements for a Meta Quest title using the Meta Horizon Platform SDK
domain: gaming · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Initialize the platform SDK with ovr_PlatformInitializeAndroid (or the asynchronous variant) at app launch
Call ovr_Entitlement_GetIsViewerEntitled within the first 10 seconds of launch to check whether the current user is entitled to the app
Poll for the result via ovr_PopMessage and handle the ovrMessage_Entitlement_GetIsViewerEntitled message type, manually deciding how to respond to a failed check (quit, demo mode, etc.) since there is no built-in enforcement
For server-side verification instead of (or in addition to) the client check, call the graph.oculus.com/$APP_ID/verify_entitlement endpoint from your backend
Configure achievements in the Meta Horizon Developer Dashboard (Engagement > Achievements) and report progress from the client using the platform SDK's achievement calls
Push at least one build to a release channel first, since the package-name-to-App-ID mapping must exist in the dashboard before entitlement checks will succeed
Known gotchas
The entitlement check has no built-in enforcement — a failed check does nothing on its own, so the app must explicitly handle it by quitting or restricting functionality
New apps need an initial APK pushed to a release channel to establish the package-name-to-App-ID mapping, or entitlement checks fail even with correct code
A mismatch between the build's package name and the App ID registered in the Meta Horizon Developer Dashboard silently breaks entitlement checks with no obvious client-side error
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?