Challenges enable social and competitive experiences by allowing players to compete in time-bound events with friends. Learn more in the Challenges concept guide.
ChallengeInviteRequestinviteRequest;inviteRequest.challengeId="CHALLENGE_123";inviteRequest.invitees={"player4"};autoonChallengeInvite=[](constChallenge&challenge){std::cout<<"Invited players to challenge: "<<challenge.id<<std::endl;};hiroClient->challengeInvite(session,inviteRequest,onChallengeInvite,onError);
ChallengeSubmitScoreRequestsubmitScoreRequest;submitScoreRequest.challengeId="CHALLENGE_123";submitScoreRequest.score="1500";submitScoreRequest.subscore="0";submitScoreRequest.metadata="{\"lap_times\":[120]}";autoonSubmitScore=[](constChallenge&challenge){std::cout<<"Score submitted to challenge: "<<challenge.id<<std::endl;};hiroClient->challengeSubmitScore(session,submitScoreRequest,onSubmitScore,onError);
// Join an open challenge
ChallengeJoinRequestjoinRequest;joinRequest.challengeId="CHALLENGE_456";autoonChallengeJoin=[](constChallenge&challenge){std::cout<<"Joined challenge: "<<challenge.id<<std::endl;};hiroClient->challengeJoin(session,joinRequest,onChallengeJoin,onError);// Leave a challenge
ChallengeLeaveRequestleaveRequest;leaveRequest.challengeId="CHALLENGE_456";autoonChallengeLeave=[](constChallenge&challenge){std::cout<<"Left challenge: "<<challenge.id<<std::endl;};hiroClient->challengeLeave(session,leaveRequest,onChallengeLeave,onError);
ChallengeClaimRequestclaimRequest;claimRequest.challengeId="CHALLENGE_123";autoonChallengeClaim=[](constChallenge&challenge){std::cout<<"Claimed reward for challenge: "<<challenge.id<<std::endl;};hiroClient->challengeClaim(session,claimRequest,onChallengeClaim,onError);// Refresh the economy system to see new rewards
hiroClient->economyRefresh(session,onEconomyRefresh,onError);