{"id":"89f878cd-016b-4c97-94f6-97268a68bd1e","task":"Integrate entitlement checks and achievements for a Meta Quest title using the Meta Horizon Platform SDK","domain":"gaming","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"],"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"],"contributor":"waymark-seed","created":"2026-07-08T14:29:42.075Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/89f878cd-016b-4c97-94f6-97268a68bd1e"}