- Before you begin
- Getting the achievements list
- Getting the next page of achievements results
- Getting a single achievement
Before you begin
- Your product uses the full XBOX services feature set. New products start with limited XBOX services, and achievements and gamerscore aren’t available until your product is onboarded. For more information, see Request product onboarding to enable full XBOX services.
- You configured your achievements in Partner Center and published the XBOX services configuration to your development sandbox. For more information, see Configuring title-managed Achievements in Partner Center.
- Your dev kit or Windows PC uses the same development sandbox, and you sign in with a test account that has access to that sandbox. For more information, see XBOX services sandboxes overview.
- Your game initialized the Gaming Runtime and then called XblInitialize with an XblInitArgs structure whose
scidmember contains your Service Configuration ID (SCID). The SCID is case-sensitive. For more information, see How to use XBOX services APIs. - You signed in a user and created an
XblContextHandlefor that user by calling XblContextCreateHandle.
Getting the achievements list
To get the achievements for the running title, call XblAchievementsGetAchievementsForTitleIdAsync, as follows.Calling XblAchievementsGetAchievementsForTitleIdAsync
C++- XAsyncBlock
- XblAchievement
- XblAchievementProgressState
- XblAchievementsGetAchievementsForTitleIdAsync
- XblAchievementsGetAchievementsForTitleIdResult
- XblAchievementsResultCloseHandle
- XblAchievementsResultDuplicateHandle
- XblAchievementsResultGetAchievements
Getting the next page of achievements results
There might be more pages of achievements. To check, call XblAchievementsResultHasNext. To get the next page, call XblAchievementsResultGetNextAsync with the current result handle, and then call XblAchievementsResultGetNextResult in the callback.XblAchievementsResultGetNextResult returns a new result handle. Each result handle must be closed separately. Passing 0 for maxItems attempts to retrieve all items, but the service can provide a default page size and can return fewer items than requested even when more pages remain. Always check XblAchievementsResultHasNext instead of assuming that one call returns every achievement.
Processing every page of results
In the following example, instead of closing the result handle fromXblAchievementsGetAchievementsForTitleIdResult, pass it to ProcessAchievementsPage. The function takes ownership of the handle that you pass to it and closes that handle exactly once. The current handle stays open until the request for the next page completes.
C++
- XAsyncBlock
- XblAchievement
- XblAchievementProgressState
- XblAchievementsResultCloseHandle
- XblAchievementsResultGetAchievements
- XblAchievementsResultGetNextAsync
- XblAchievementsResultGetNextResult
- XblAchievementsResultHasNext
Getting a single achievement
To get a single achievement, call XblAchievementsGetAchievementAsync, as follows. Flat C API- XAsyncBlock
- XblAchievement
- XblAchievementsGetAchievementAsync
- XblAchievementsGetAchievementResult
- XblAchievementsResultCloseHandle
- XblAchievementsResultGetAchievements
