Si une API XUsers retourne une erreur E_GAMEUSER_RESOLVE_USER_ISSUE_REQUIRED, l’utilisateur doit interagir avec l’interface utilisateur (IU) système pour résoudre le problème.
Appelez XUserResolveIssueWithUiAsync pour afficher l’IU système appropriée.Pour afficher une interface utilisateur système permettant de résoudre les problèmes de jeton avec une URL Unicode, appelez XUserResolveIssueWithUiUtf16Async.Pour récupérer le résultat d’un appel à XUserResolveIssueWithUiUtf16Async, appelez XUserResolveIssueWithUiUtf16Result.L’exemple suivant montre comment afficher l’IU système pour résoudre les problèmes de jeton avec une URL.
HRESULT ResolveUserIssueComplete(XAsyncBlock* ab){ if (SUCCEEDED_LOG(XUserResolveIssueWithUiResult(ab))) { appLog.AddLog("Successfully Resolved User Issue\n"); } return S_OK;}HRESULT ResolveUserIssueUtf16Complete(XAsyncBlock* ab){ if (SUCCEEDED_LOG(XUserResolveIssueWithUiUtf16Result(ab))) { appLog.AddLog("Successfully Resolved User Issue\n"); } return S_OK;}HRESULT ResolveUserIssueWithUiAsync( XTaskQueueHandle queue, const char* narrowUrl = nullptr, const wchar_t* wideUrl = nullptr, bool useUtf16 = false){ auto resolveAsyncBlock = std::make_unique<XAsyncBlock>(); ZeroMemory(resolveAsyncBlock.get(), sizeof(*resolveAsyncBlock)); resolveAsyncBlock->queue = queue; resolveAsyncBlock->context = this; if (useUtf16) { resolveAsyncBlock->callback = [](XAsyncBlock* ab) { auto asyncBlock = std::unique_ptr<XAsyncBlock>(ab); LOG_IF_FAILED(static_cast<User*>(ab->context)->ResolveUserIssueUtf16Complete(ab)); }; if (SUCCEEDED_LOG(XUserResolveIssueWithUiUtf16Async( _handle.get(), wideUrl, resolveAsyncBlock.get()))) { // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take over ownership. // If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock* resolveAsyncBlock.release(); } } else { resolveAsyncBlock->callback = [](XAsyncBlock* ab) { auto asyncBlock = std::unique_ptr<XAsyncBlock>(ab); LOG_IF_FAILED(static_cast<User*>(ab->context)->ResolveUserIssueComplete(ab)); }; if (SUCCEEDED_LOG(XUserResolveIssueWithUiAsync( _handle.get(), narrowUrl, resolveAsyncBlock.get()))) { // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* since the callback will take over ownership. // If the call fails, the std::unique_ptr will keep ownership and delete the XAsyncBlock* resolveAsyncBlock.release(); } } return S_OK;}
En-tête : XUser.hBibliothèque : xgameruntime.libPlateformes prises en charge : Windows, Steam Deck, consoles de la famille XBOX One et consoles XBOX Series