- PF*Async(…) 调用,启动异步操作。
- (可选) XAsyncGetStatus(…) 调用,用于跟踪异步操作的状态。可用于等待异步操作完成。
- PF*GetResultSize(…),用于检索结果有效负载的大小(以字节为单位)。
- PF*GetResult(…),用于检索异步操作的结果。
同步失败
同步失败是指初始的 PF*Async 调用返回错误。此类失败通常表明存在编程错误——无效的调用模式、无效的参数等。这些类型的错误应该在开发期间解决。大多数其他同步失败是致命的,无法轻易处理(例如 E_OUTOFMEMORY)。异步失败
异步失败是指 XAsyncGetStatus、PF*GetResultSize 或 PF*GetResult 中的任何一个失败。异步失败的范围更广。除了由于无效参数导致的错误之外,异步失败还分为下面几个部分中详细描述的几个类别。令牌验证失败
在发起 PlayFab 服务调用之前,SDK 会进行客户端验证以确保所需的身份验证令牌可用且仍然有效。如果此检查失败,将返回以下错误之一:-
E_PF_NOENTITYTOKEN (0x89235411): 表示与提供的 PFEntityHandle 关联的 EntityToken 已过期。有关如何处理这种情况的更多信息,请参阅处理令牌过期。 -
E_PF_NOSECRETKEY (0x89235412)表示提供的 PFEntityHandle 没有关联的 SecretKey。缺少 SecretKey 通常意味着你尝试使用无效的实体类型发出请求。需要 SecretKey 的 API 只能由游戏实体调用。请注意,SecretKey API 面向服务器或管理员场景,在 GDK 中不可用。
PlayFab 服务失败
如果 SDK 成功发出 PlayFab 服务请求,服务仍可能返回错误。有两大类 PlayFab 服务错误:global(可以从任何 PlayFab API 返回),specific(特定于 API)。以下是完整的 global 失败列表:E_PF_API_CLIENT_REQUEST_RATE_LIMIT_EXCEEDED (0x892354dd)E_PF_API_CONCURRENT_REQUEST_LIMIT_EXCEEDED (0x8923556b)E_PF_CONCURRENT_EDIT_ERROR (0x8923549b)E_PF_DATA_UPDATE_RATE_EXCEEDED (0x89235534)E_PF_DOWNSTREAM_SERVICE_UNAVAILABLE (0x89235495)E_PF_INVALID_API_ENDPOINT (0x89235499)E_PF_OVER_LIMIT (0x892354ec)E_PF_SERVICE_UNAVAILABLE (0x89235491)E_PF_ACCOUNT_BANNED (0x89235423)E_PF_ACCOUNT_DELETED (0x89235557)E_PF_ACCOUNT_NOT_FOUND (0x89235422)E_PF_API_REQUESTS_DISABLED_FOR_TITLE (0x8923553c)E_PF_INVALID_CONTENT_TYPE (0x892354a6)E_PF_INVALID_ENTITY_TYPE (0x8923558a):E_PF_INVALID_PARAMS (0x89235421)E_PF_INVALID_REQUEST (0x89235468)E_PF_INVALID_TITLE_ID (0x89235425)E_PF_NOT_AUTHENTICATED (0x8923546b)E_PF_NOT_AUTHORIZED (0x89235478)E_PF_NOT_AUTHORIZED_BY_TITLE (0x892354d5)E_PF_PROFILE_DOES_NOT_EXIST (0x8923553f)E_PF_TITLE_DELETED (0x89235570)E_PF_UNKNOWN_ERROR (0x89235448)
限流失败
一类服务失败是限流错误,由 HTTP 429 状态代码指示。当 PlayFab 服务返回限流错误时,意味着客户端在特定时间段内调用某个端点的频率过高。当 SDK 收到限流错误时,它将在小的回退后自动重试请求。如果请求在配置的重试窗口内仍未成功,则该错误将传递给游戏。SDK 重试设置可以通过调用 PFSetHttpRetrySettings 进行配置。网络失败
如果底层网络堆栈返回错误,则该错误将传递给客户端。根据网络故障,可能会发生各种错误。大多数网络错误都会导致E_HC_NO_NETWORK (0x89235006)。
