- 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 服務錯誤大致分為兩種類型:全域錯誤,可能由任何 PlayFab API 傳回;以及特定錯誤,則是 API 專屬的。以下是全域失敗的完整清單: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 收到節流錯誤時,會在短暫的退避之後自動重試要求。如果要求在設定的重試時間範圍內仍未成功,錯誤就會傳遞給遊戲。您可以呼叫 PFSetHttpRetrySettings 來設定 SDK 重試設定。網路失敗
如果基礎網路堆疊傳回錯誤,該錯誤會傳遞給用戶端。視網路失敗情況而定,可能會發生各種錯誤。大多數網路錯誤都會產生E_HC_NO_NETWORK (0x89235006)。
