Facebook 游戲開發更新文檔 API 參考文檔 v6.0
更新日志 1.排行榜?此版本全新推出排行榜 API!提供一套強大的 API, 使得游戲可獲取排行榜、查詢得分 情況和設置新分數(支持分數所帶的 任意元數據),并可向 Messenger 對話推送結構化的排行榜 更新消息。 2.[公測版] 游戲內切換?我們還針對游戲內交叉推廣引入了一個新 API。它目前 處于封測階段,如果您有興趣在自己的游戲中幫忙 測試游戲內切換 API 的集成效果,請聯系 您的合作伙伴經理!
FBInstant 小游戲 SDK 的頂級命名空間。
player 包含與當前玩家相關的功能和屬性。
getID( ) 玩家的唯一標識。Facebook 用戶的玩家編號 將保持不變,且僅限于特定游戲范圍。這意味著 同一個用戶在不同的游戲中有不同的玩家編號。 僅當 FBInstant.initializeAsync() 被解析后才應調用此 函數。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.var playerID = FBInstant.player.getID(); 返回字符串??玩家的唯一標識。
getSignedPlayerInfoAsync( ) 獲取玩家的唯一標識和簽名,簽名用于驗證標識確實 來自 Facebook,且沒有被篡改。 僅當 FBInstant.initializeAsync() 被解析后才應調用此 函數。 參數 ? requestPayload字符串??開發者指定的包含于 已簽名響應中的負載。 ? 示例 // This function should be called after FBInstant.initializeAsync()// resolves.FBInstant.player.getSignedPlayerInfoAsync('my_metadata') .then(function (result) { // The verification of the ID and signature should happen on server side. SendToMyServer( result.getPlayerID(), // same value as FBInstant.player.getID() result.getSignature(), 'GAIN_COINS', 100); }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?以?#signedplayerinfo?對象解析的 promise。
getName( ) 經本地化顯示的玩家姓名。僅當 FBInstant.startGameAsync() 被解析后 才應調用此函數。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var playerName = FBInstant.player.getName(); 返回字符串??經本地化顯示的玩家姓名。
getPhoto( ) 玩家公開頭像的網址。此照片始終為正方形, 尺寸至少為 200x200 像素。在游戲中顯示時, 確切的尺寸可能會有所變化。建議 始終在顯示之前將圖片調整為需要的尺寸。 對應的值將始終為 null,直至 FBInstant.startGameAsync() 被解析。 警告:由于使用 CORS 機制,在游戲 Canvas 中使用這些照片會導致照片 損壞,這有礙于提取 Canvas 數據。 為防止出現這種情況,應將您使用的圖片的 cross-origin 屬性設置為 “anonymous”。 示例 var playerImage = new Image(); playerImage.crossOrigin = 'anonymous';// This function should be called after FBInstant.startGameAsync()// resolves. playerImage.src = FBInstant.player.getPhoto(); 返回字符串??玩家公開頭像的網址。
getDataAsync( ) 從指定的云存儲中檢索當前玩家的數據。 參數 ? keys數組<字符串>?唯一鍵數組,數據檢索將針對這些鍵展開。 ? 示例 FBInstant.player .getDataAsync(['achievements', 'currentLife']) .then(function(data) { console.log('data is loaded'); var achievements = data['achievements']; var currentLife = data['currentLife']; }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise<對象>?此 promise 將在獲得 包含下列信息的對象時被解析:輸入數組中指定的每個鍵的 當前鍵值對(如存在)。
setDataAsync( ) 設置要保存到指定云存儲的當前玩家 的數據。對于每個獨立玩家,游戲最多可存儲 1MB 的數據。 參數 ? data對象?此對象包含 應該保存到云存儲的一組鍵值對。對象必須僅包含 可序列化的值 — 任何不可序列化的值都會導致 整個修改被拒絕。 ? 示例 FBInstant.player .setDataAsync({ achievements: ['medal1', 'medal2', 'medal3'], currentLife: 300, }) .then(function() { console.log('data is set'); }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在輸入值設定時被解析。 注意:promise 被解析并不一定意味著輸入 已被存儲,而是這意味著相關數據有效 并已安排要被存儲。這還能保證設置的所有值 現在可在 player.getDataAsync 中使用。
flushDataAsync( ) 立即將玩家數據的任何更改刷新到指定的 云存儲中。此函數的調用成本較高, 應主要用于需要立即存儲并告知游戲的 重要更改。非重要更改應依賴于開放平臺在后臺 進行存儲。 注意:當此函數的結果待定時, player.setDataAsync 調用將被拒絕。 示例 FBInstant.player .setDataAsync({ achievements: ['medal1', 'medal2', 'medal3'], currentLife: 300, }) .then(FBInstant.player.flushDataAsync) .then(function() { console.log('Data persisted to FB!'); }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在更改保存成功時被解析, 在更改保存失敗時被拒絕。
getStatsAsync( ) 從指定云存儲檢索當前玩家的統計數據。 參數 ? keys數組<字符串>??唯一鍵數組(可選),針對這些鍵檢索 統計數據。如果調用函數時沒有設置此參數,則會提取所有統計數據。 ? 示例 FBInstant.player .getStatsAsync(['level', 'zombiesSlain']) .then(function(stats)) { console.log('stats are loaded'); var level = data['level']; var zombiesSlain = data['zombiesSlain']; }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise<對象>?此 promise 將在獲得 包含下列信息的對象時被解析:輸入數組中指定的每個鍵的 當前鍵值對(如存在)。
setStatsAsync( ) 設置要保存到指定云存儲的當前玩家 的統計數據。 參數 ? stats對象?此對象包含應作為統計數據 保存到云存儲的鍵值對,能以各種方式顯示或 使用這些數據以提高玩家參與度。對象必須 僅包含數值,任何非數值會導致整個 修改被拒絕。 ? 示例 FBInstant.player .setStatsAsync({ level: 5, zombiesSlain: 27, }) .then(function() { console.log('data is set'); }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在輸入值設定時被解析。 注意:promise 被解析并不一定意味著輸入 已被存儲,而是這意味著相關數據經過驗證 并已安排要被存儲。這還能保證設置的所有值 現在可在 player.getStatsAsync 中使用。
incrementStatsAsync( ) 保存到指定云存儲的當前玩家 的增量統計數據。 參數 ? increments對象?此對象包含一組鍵值對, 這些鍵值對表示云存儲中每個統計數據的增量是多少。對象必須 僅包含數值,任何非數值會導致整個 修改被拒絕。 ? 示例 FBInstant.player .incrementStatsAsync({ level: 1, zombiesSlain: 17, rank: -1, }) .then(function(stats)) { console.log('increments have been made! New values'); var level = data['level']; var zombiesSlain = data['zombiesSlain']; }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise<對象>?此 promise 將在獲得包含下列信息的對象時被解析:輸入字典中指定的每個鍵 的更新鍵值對。 注意:解析 promise 并不一定意味著更改 已被存儲,而是意味著 增量有效且已安排要被執行 。這還能保證增加的所有值 現在可在 player.getStatsAsync 中使用。
getConnectedPlayersAsync( ) 提取 ConnectedPlayer 對象的數組,這些對象包含與當前玩家 關聯的玩家的信息。 示例 var connectedPlayers = FBInstant.player.getConnectedPlayersAsync() .then(function(players) { console.log(players.map(function(player) { return { id: player.getID(), name: player.getName(), } })); });// [{id: '123456789', name: 'Paul Atreides'}, {id: '987654321', name: 'Duncan Idaho'}] ? 拋出?NETWORK_FAILURE ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise<數組>?此 promise 將在 獲得關聯玩家對象列表時被解析。 注意:只有當 FBInstant.startGameAsync() 被解析時,此 promise 才會解析。
context 包含與當前游戲環境相關的功能和屬性。
getID( ) 當前游戲環境的唯一標識。這表示 玩游戲的特定環境(例如:特定的 Messenger 對話或 Facebook 帖子)。如果用戶在獨立環境中玩游戲,則此標識將 為 null。僅當 FBInstant.startGameAsync 被解析后 才應調用此函數。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var contextID = FBInstant.context.getID(); 返回字符串??當前游戲環境的唯一標識。
getType( ) 當前游戲環境的類型。 POST — 一個 Facebook 帖子。 THREAD — 一個 Messenger 對話。 GROUP — 一個 Facebook 小組。 SOLO — 默認環境,玩家是唯一的參與者。 僅當 FBInstant.startGameAsync 被解析后才應調用此函數。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var contextType = FBInstant.context.getType(); 返回("POST"?|?"THREAD"?|?"GROUP"?|?"SOLO")?當前游戲環境的類型。
isSizeBetween( ) 此函數用于確定加入當前游戲環境的玩家 數量是否在給定的最小值和最大值之間(包括最小值和最大值)。僅當其中一個邊界值為 null 時, 才會根據另一個邊界值進行檢查。在特定 的游戲會話中,此函數始終會返回某 環境內發出的第一個調用的最初結果。后續調用(無論參數是什么)將返回 原始查詢的答案,除非游戲環境發生變化且 查詢結果被重置。 僅當 FBInstant.startGameAsync 被解析后才應調用此函數。 如果提供的一個或兩個參數無效,我們沒有適合當前游戲環境 的玩家數量,或者 API 在 startGameAsync() 解析之前被調用, 此參數都會為 null。 參數 ? minSize數字??環境規模查詢的最小邊界值。 ? ? minSize數字??環境規模查詢的最大邊界值。 ? ? maxSize數字? ? 示例 console.log(FBInstant.context.isSizeBetween(3, 5)); (Context size = 4)// {answer: true, minSize: 3, maxSize: 5} console.log(FBInstant.context.isSizeBetween(5, 7)); (Context size = 4)// {answer: false, minSize: 5, maxSize: 7} console.log(FBInstant.context.isSizeBetween(2, 10)); (Context size = 3)// {answer: true, minSize: 2, maxSize: 10} console.log(FBInstant.context.isSizeBetween(4, 8)); (Still in same context)// {answer: true, minSize: 2, maxSize: 10} console.log(FBInstant.context.isSizeBetween(3, null)); (Context size = 4)// {answer: true, minSize: 3, maxSize: null} console.log(FBInstant.context.isSizeBetween(null, 3)); (Context size = 4)// {answer: false, minSize: null, maxSize: 3} console.log(FBInstant.context.isSizeBetween("test", 5)); (Context size = 4)// null console.log(FBInstant.context.isSizeBetween(0, 100)); (Context size = null)// null 返回?ContextSizeResponse?
switchAsync( ) 請求切換到指定環境。如果玩家沒有進入該環境的權限, 或玩家未向游戲提供進入 該環境的權限,請求將被拒絕。 promise 將在 游戲切換到指定環境時被解析。 參數 ? id字符串?目標環境的編號。 ? 示例 console.log(FBInstant.context.getID());// 1122334455FBInstant.context .switchAsync('1234567890') .then(function() { console.log(FBInstant.context.getID()); // 1234567890 }); ? 拋出?INVALID_PARAM ? ? 拋出?SAME_CONTEXT ? ? 拋出?NETWORK_FAILURE ? ? 拋出?USER_INPUT ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在游戲切換到指定環境時被解析, 在切換失敗時被拒絕。
chooseAsync( ) 為玩家打開一個環境選擇對話框。如果玩家選擇可用的環境, 客戶端將嘗試切換到這個環境, 并在成功時解析。而如果玩家退出菜單或 客戶端未能切換到新環境,此函數 將被拒絕。 參數 ? options對象??此對象用于指定應提供 的環境選項。 ? ? options.filters數組??適用于環境推薦的一組篩選條件 。 ? ? options.maxSize數字??在理想情況下,推薦環境應有 的最大玩家數量。 ? ? options.minSize數字??在理想情況下,推薦環境應有 的最小玩家數量。 ? 示例 console.log(FBInstant.context.getID());// 1122334455FBInstant.context .chooseAsync() .then(function() { console.log(FBInstant.context.getID()); // 1234567890 }); console.log(FBInstant.context.getID());// 1122334455FBInstant.context .chooseAsync({ filters: ['NEW_CONTEXT_ONLY'], minSize: 3, }) .then(function() { console.log(FBInstant.context.getID()); // 1234567890 }); ? 拋出?INVALID_PARAM ? ? 拋出?SAME_CONTEXT ? ? 拋出?NETWORK_FAILURE ? ? 拋出?USER_INPUT ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在游戲切換到用戶選擇的環境時 被解析。否則此 promise 將被拒絕 (例如用戶退出對話框)。
createAsync( ) 嘗試在指定玩家和當前玩家之間創建環境或 切換環境。如果列出的玩家不是當前玩家的關聯玩家, 或玩家未提供進入新環境的權限, 則返回的 promise 將被拒絕。 當游戲切換到新環境時, promise 將被解析。 參數 ? playerID字符串?玩家的編號 ? 示例 console.log(FBInstant.context.getID());// 1122334455FBInstant.context .createAsync('12345678') .then(function() { console.log(FBInstant.context.getID()); // 5544332211 }); ? 拋出?INVALID_PARAM ? ? 拋出?SAME_CONTEXT ? ? 拋出?NETWORK_FAILURE ? ? 拋出?USER_INPUT ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在游戲切換到新環境時被解析, 在切換失敗時被拒絕。
getPlayersAsync( ) 獲取?#contextplayer?對象的數組, 其中包含與當前環境相關的活躍玩家 (在過去 90 天內玩過游戲的用戶)的信息。這可能包含當前 玩家。 示例 var contextPlayers = FBInstant.context.getPlayersAsync() .then(function(players) { console.log(players.map(function(player) { return { id: player.getID(), name: player.getName(), } })); });// [{id: '123456789', name: 'Luke'}, {id: '987654321', name: 'Leia'}] ? 拋出?NETWORK_FAILURE ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?INVALID_OPERATION ? 返回?Promise<數組>
支付 [封閉公測] 包含與游戲商品的支付和購買相關的 函數和屬性。
getCatalogAsync( ) 獲取游戲的商品目錄。 示例 FBInstant.payments.getCatalogAsync().then(function (catalog) { console.log(catalog); // [{productID: '12345', ...}, ...]}); ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?PAYMENTS_NOT_INITIALIZED ? ? 拋出?NETWORK_FAILURE ? 返回?Promise<數組<商品>>?登記到游戲的 一組商品。
purchaseAsync( ) 開始特定商品的購買流程。 參數 ? purchaseConfigPurchaseConfig?該項購買的配置詳情。 ? 示例 FBInstant.payments.purchaseAsync({ productID: '12345', developerPayload: 'foobar',}).then(function (purchase) { console.log(purchase); // {productID: '12345', purchaseToken: '54321', developerPayload: 'foobar', ...}}); ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?PAYMENTS_NOT_INITIALIZED ? ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? 返回?Promise<購買>?此 promise 將在玩家成功購買 商品時被解析,否則會被拒絕。
getPurchasesAsync( ) 獲取玩家未消費的所有購買商品。最佳做法是, 游戲在客戶端表明已準備好執行支付相關操作時, 立即獲取當前玩家的購買商品。游戲 隨后可處理和消費正在等待被消費的任何購買商品。 示例 FBInstant.payments.getPurchasesAsync().then(function (purchases) { console.log(purchase); // [{productID: '12345', ...}, ...]}); ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?PAYMENTS_NOT_INITIALIZED ? ? 拋出?NETWORK_FAILURE ? 返回?Promise<數組<購買>>?玩家為游戲購買的 一組商品。
consumePurchaseAsync( ) 消費當前玩家擁有的特定購買商品。在為玩家 配置商品效果之前,游戲應先請求 消費已購買的商品。購買的商品成功 消費后,游戲應立即向玩家呈現 購買商品的效果。 參數 ? purchaseToken字符串?應消費的購買商品的 購買口令。 ? 示例 FBInstant.payments.consumePurchaseAsync('54321').then(function () { // Purchase successfully consumed! // Game should now provision the product to the player}); ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?PAYMENTS_NOT_INITIALIZED ? ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? 返回?Promise?此 promise 在成功消費已購買的 商品時被解析。
onReady( ) 設置一個回調,在支付操作可進行時觸發。 參數 ? callback函數?當支付可進行時執行的 回調函數。 ? 示例 FBInstant.payments.onReady(function () { console.log('Payments Ready!')}); 返回?void
getLocale( ) 當前的語言設置。根據這一結果確定當前的游戲應本地化 為哪種語言。在 FBInstant.startGameAsync() 被解析之前,對應的值將不準確。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var locale = FBInstant.getLocale(); // 'en_US' 返回字符串??當前的語言設置。
getPlatform( ) 當前運行游戲的平臺。對應的值將始終為 null, 直至 FBInstant.initializeAsync() 被解析。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.var platform = FBInstant.getPlatform(); // 'IOS' 返回平臺?
getSDKVersion( ) 表示此 SDK 版本的字符串。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.var sdkVersion = FBInstant.getSDKVersion(); // '2.0' 返回字符串?SDK 版本。
initializeAsync( ) 初始化 SDK 庫。應在調用其他任何 SDK 函數 之前調用此函數。 示例 FBInstant.initializeAsync().then(function() { // Many properties will be null until the initialization completes. // This is a good place to fetch them: var locale = FBInstant.getLocale(); // 'en_US' var platform = FBInstant.getPlatform(); // 'IOS' var sdkVersion = FBInstant.getSDKVersion(); // '3.0' var playerID = FBInstant.player.getID();}); ? 拋出?INVALID_OPERATION ? 返回?Promise?此 promise 將在 SDK 可以使用時被解析。
setLoadingProgress( ) 報告游戲的初始加載進度。 參數 ? percentage數字?介于 0 和 100 之間的數字。 ? 示例 FBInstant.setLoadingProgress(50); // Assets are 50% loaded 返回?void
getSupportedAPIs( ) 提供客戶端支持的 API 函數的列表。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.FBInstant.getSupportedAPIs();// ['getLocale', 'initializeAsync', 'player.getID', 'context.getType', ...] 返回數組<字符串>?客戶端顯式支持的 API 函數 列表。
getEntryPointData( ) 返回與啟動游戲的入口點相關的任何數據 對象。 對象內容由開發者定義,可通過不同平臺 的入口點觸發。對于較舊版本的移動客戶端, 以及沒有與特定入口點相關的數據時, 此函數會返回 null。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.const entryPointData = FBInstant.getEntryPointData(); 返回對象??與當前入口點相關的數據。
getEntryPointAsync( ) 返回啟動游戲的入口點 示例 // This function should be called after FBInstant.startGameAsync()// resolves.FBInstant.getEntryPointAsync().then(entrypoint => console.log(entrypoint));// 'admin_message' 返回字符串?用戶啟動游戲時所在的入口點的 名稱 僅當 FBInstant.startGameAsync() 被解析后 才應調用此函數。
setSessionData( ) 為當前環境設置與單個游戲會話相關的 數據。 當游戲需要更新當前的會話數據時, 應調用此函數。此會話數據可用于填充各種負載, 如玩游戲 Webhook。 參數 ? sessionData對象?一個隨機數據對象,轉變為字符串后,必須小于 或等于 1000 個字符。 ? 示例 FBInstant.setSessionData({coinsEarned: 10, eventsSeen: ['start', ...]}); 返回?void
startGameAsync( ) 表示游戲已完成初始加載, 并準備就緒可以開始游戲。當返回的 promise 被解析時, 環境信息即為最新。 示例 FBInstant.startGameAsync().then(function() { myGame.start();}); ? 拋出?INVALID_PARAM ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在游戲應該啟動時被解析。
shareAsync( ) 此函數會調用一個對話框,讓用戶以下列方式分享指定的內容:在 Messenger 中發送消息,或在用戶時間線上發布帖子。可以在分享中添加數據塊, 通過此次分享啟動的每個游戲會話 都可以通過 FBInstant.getEntryPointData() 訪問此數據塊。轉變為字符串時, 此數據必須小于或等于 1000 個字符。用戶 可以選擇取消分享操作和關閉對話框, 但無論用戶實際是否分享了內容, 返回的 promise 都將在對話框關閉時解析。 參數 ? payloadSharePayload,指定要分享的內容。詳情 請參閱示例。 ? 示例 FBInstant.shareAsync({ intent: 'REQUEST', image: base64Picture, text: 'X is asking for your help!', data: { myReplayData: '...' },}).then(function() { // continue with the game.}); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?INVALID_OPERATION ? 返回?Promise?此 promise 將在分享完成或取消時 被解析。
updateAsync( ) 向 Facebook 通知游戲內發生的更新。這會 暫時將控制權移交給 Facebook,且 Facebook 將確定要 根據更新內容采取什么操作。返回的 promise 將在 Facebook 把 控制權返還給游戲時解析/拒絕。 參數 ? payloadUpdatePayload?描述更新的負載。 ? 示例 // This will post a custom update. If the game is played in a messenger// chat thread, this will post a message into the thread with the specified// image and text message. And when people launch the game from this// message, those game sessions will be able to access the specified blob// of data through FBInstant.getEntryPointData().FBInstant.updateAsync({ action: 'CUSTOM', cta: 'Join The Fight', image: base64Picture, text: { default: 'X just invaded Y's village!', localizations: { ar_AR: 'X \u0641\u0642\u0637 \u063A\u0632\u062A ' + '\u0642\u0631\u064A\u0629 Y!', en_US: 'X just invaded Y's village!', es_LA: '\u00A1X acaba de invadir el pueblo de Y!', } } template: 'VILLAGE_INVASION', data: { myReplayData: '...' }, strategy: 'IMMEDIATE', notification: 'NO_PUSH',}).then(function() { // closes the game after the update is posted. FBInstant.quit();}); ? 拋出?INVALID_PARAM ? ? 拋出?PENDING_REQUEST ? ? 拋出?INVALID_OPERATION ? 返回?Promise?此 promise 將在 Facebook 把控制權交還給游戲時 被解析。
switchGameAsync( ) 請求客戶端切換到另一個小游戲。切換 失敗時,API 將拒絕,否則客戶端將加載 新游戲。 參數 ? appID字符串?要切換到的小游戲相應的應用編號。 應用必須為小游戲,且必須和當前游戲 屬于同一商家所有。要將不同游戲關聯到相同商家, 您可使用商務管理平臺:https://developers.facebook.com/docs/apps/business-manager#update-business。 ? ? data字符串??可選的數據負載。這將設為 要切換到的游戲的入口點數據。轉變為字符串時, 必須小于或等于 1000 個字符。 ? 示例 FBInstant.switchGameAsync('12345678').catch(function (e) { // Handle game change failure}); ? 拋出?USER_INPUT ? ? 拋出?INVALID_PARAM ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_REQUIRES_UPDATE ? 返回?Promise
quit( ) 退出游戲。 示例 FBInstant.quit(); 返回?void
logEvent( ) 通過 Facebook 分析記錄應用事件。請參閱?https://developers.facebook.com/docs/javascript/reference/v2.8#app_events?詳細了解 Fcaebook 分析。 參數 ? eventName字符串?事件名稱。必須為 2 到 40 個字符, 且只能包含“”、“-”、“ ”和字母數字字符。 ? ? valueToSum數字?可選的數值,Facebook 分析利用此參數來 計算總和。 ? ? parameters對象?可選的對象,最多可包含 25 個要與事件一同記錄的鍵值對。鍵必須為 2 到 40 個字符, 且只能包含“”、“-”、“ ”和 字母數字字符。值的長度必須小于 100 個字符。 ? 示例 var logged = FBInstant.logEvent( 'my_custom_event', 42, {custom_property: 'custom_value'},); 返回?APIError??如果事件記錄錯誤,將返回錯誤; 否則返回 null。
onPause( ) 設置發生暫停事件時將觸發的回調。 參數 ? func函數?發生暫停事件時將調用的函數。 ? 示例 FBInstant.onPause(function() { console.log('Pause event was triggered!');}) 返回?void
getInterstitialAdAsync( ) 嘗試創建插屏廣告的實例。此實例可在之后 預載和顯示。 參數 ? placementID字符串?在 Audience Network 設置中設置的 版位編號。 ? 示例 FBInstant.getInterstitialAdAsync( 'my_placement_id',).then(function(interstitial) { interstitial.getPlacementID(); // 'my_placement_id'}); ? 拋出?ADS_TOO_MANY_INSTANCES ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在獲得?#adinstance?時被解析;在獲得?#apierror?時被拒絕 (如果未能創建)。
getRewardedVideoAsync( ) 嘗試創建獎勵式視頻廣告的實例。此實例可在之后 預載和顯示。 參數 ? placementID字符串?在 Audience Network 設置中設置的 版位編號。 ? 示例 FBInstant.getRewardedVideoAsync( 'my_placement_id',).then(function(rewardedVideo) { rewardedVideo.getPlacementID(); // 'my_placement_id'}); ? 拋出?ADS_TOO_MANY_INSTANCES ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?此 promise 將在獲得?#adinstance?時被解析;在獲得?#apierror?時被拒絕 (如果未能創建)。
matchPlayerAsync( ) [封閉公測] 嘗試將當前玩家與等待他人加入游戲的其他玩家 進行匹配。如果匹配成功,將為匹配的玩家創建 一個新的 Messenger 群聊,且玩家的游戲環境將切換到 該群聊。 參數 ? matchTag字符串??玩家的可選額外信息,可用于將玩家 加到具有相似玩家的群聊中。具有完全相同標簽的玩家 才會加入同一群聊。標簽只能包含 字母、數字和下劃線,且長度不能超過 100 個 字符。 ? ? switchContextWhenMatchedboolean?可選的額外參數, 指定當找到匹配時,是否將玩家 立即切換到新環境。默認設置為 false,亦即 玩家在匹配成功后,需要明確點擊玩游戲按鈕 才會切換到新環境。 ? 示例 FBInstant .matchPlayerAsync('level1') .then(function() { console.log(FBInstant.context.getID()); // 12345 }); FBInstant .matchPlayerAsync() .then(function() { console.log(FBInstant.context.getID()); // 3456 }); FBInstant .matchPlayerAsync(null, true) .then(function() { console.log(FBInstant.context.getID()); // 3456 }); ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? ? 拋出?USER_INPUT ? ? 拋出?PENDING_REQUEST ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?INVALID_OPERATION ? 返回?Promise?當玩家已加入群聊并切換到 群聊環境時,此 promise 被解析。
checkCanPlayerMatchAsync( ) [封閉公測] 檢查當前玩家是否符合 matchPlayerAsync API 的條件。 示例 FBInstant .checkCanPlayerMatchAsync() .then(canMatch => { if (canMatch) { FBInstant.matchPlayerAsync('level1'); } }); ? 拋出?NETWORK_FAILURE ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? 返回?Promise?當玩家符合與其他玩家匹配的條件時, 此 promise 被解析為 true,否則解析為 false。
getLeaderboardAsync( ) 獲取這款小游戲中的特有排行榜。 參數 ? name字符串?排行榜的名稱。小游戲的每個 排行榜必須具有唯一的名稱。 ? 示例 FBInstant.getLeaderboardAsync('my_awesome_leaderboard') .then(leaderboard => { console.log(leaderboard.getName()); // 'my_awesome_leaderboard' }); ? 拋出?LEADERBOARD_NOT_FOUND ? ? 拋出?NETWORK_FAILURE ? ? 拋出?CLIENT_UNSUPPORTED_OPERATION ? ? 拋出?INVALID_OPERATION ? ? 拋出?INVALID_PARAM ? 返回?Promise<排行榜>?此 promise 在獲得匹配的排行榜時被解析, 在未找到匹配時被拒絕。
LocalizationsDict 代表特定字符串的語言設置與翻譯之間的映射。 每個屬性均為可選且包含五個字符的 Facebook 語言代碼,格式為 xx_XX。 請參閱?https://origincache.facebook.com/developers/resources/?id=FacebookLocales.xml, 獲取受支持的語言代碼的完整列表。 類型:對象
APIError 小游戲 SDK 返回的 API 錯誤
code 相關的錯誤代碼 類型:ErrorCodeType
message 描述錯誤的消息 類型:字符串
ConnectedPlayer 代表與當前玩家關聯的玩家的信息。
getID( ) 獲取關聯玩家的編號。 返回字符串?關聯玩家的編號
getName( ) 獲取玩家的全名。 返回字符串??即玩家的全名
getPhoto( ) 獲取玩家公開頭像的網址。 返回字符串??玩家公開頭像的網址
SignedPlayerInfo 代表玩家信息,并包含簽名, 簽名用于驗證對應信息確實來源于 Facebook。
getPlayerID( ) 獲取玩家的編號。 示例 FBInstant.player.getSignedPlayerInfoAsync() .then(function (result) { result.getPlayerID(); // same value as FBInstant.player.getID() }); 返回字符串?玩家的編號
getSignature( ) 用于驗證此對象確實來源于 Facebook 的簽名。此字符串 使用 base64url 編碼, 并根據 OAuth 2.0 協議使用 HMAC 版本的應用密鑰簽名。 您可以通過以下步驟進行驗證: 1.將簽名分為兩個部分,以“.”字符隔開。 2. 對第一部分(編碼簽名)執行以下替換操作: 3. o 將短橫線 ('-') 替換為加號 ('+') o o 將下劃線 ('') 替換為正斜杠 ('/') o 4. 使用 base64url 編碼對產生的字符串解碼。 5. 6. 通過 base64url 編碼對第二部分(響應負載)進行解碼, 第二部分應該是代表 JSON 對象(包含下列字段)的字符串: 7. o algorithm — 始終等于 HMAC-SHA256 o o issued_at — 發出此響應的 unix 時間戳。 o o player_id — 玩家的唯一標識。 o o request_payload — 調用 FBInstant.player.getSignedPlayerInfoAsync 時 指定的 requestPayload 字符串。 o 8. 請采用 HMAC SHA-256 和您的應用密鑰散列處理 整個響應負載字符串,并確定它等同于經編碼的簽名。 9. 10.還建議您驗證響應負載中 的 issued_at 時間戳,確保請求是最近發出的。 應僅在您的服務器中進行簽名驗證。?不要在客戶端進行簽名驗證, 因為客戶端可能會泄漏您的應用密鑰。 示例 In your game's client//FBInstant.player.getSignedPlayerInfoAsync('my_payload') .then(function (result) { MyServer.send(result.getSignature()); // Example result.getSignature() // Eii6e636mz5J47sfqAYEK40jYAwoFqi3x5bxHkPG4Q4.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTUwMDM5ODY3NSwicGxheWVyX2lkIjoiMTI0OTUyNTMwMTc1MjIwMSIsInJlcXVlc3RfcGF5bG9hZCI6Im15X2ZpcnN0X3JlcXVlc3QifQ }); In your server (node.js example)//const CryptoJS = require('crypto-js');var firstpart = signedRequest.split('.')[0]; firstpart = firstpart.replace(/-/g, '+').replace(//g, '/');const signature = CryptoJS.enc.Base64.parse(firstpart).toString();const dataHash = CryptoJS.HmacSHA256(signedRequest.split('.')[1], '<APP_SECRET>').toString();var isValid = signature === dataHash; const json = crypto.enc.Base64.parse(signedRequest.split('.')[1]).toString(crypto.enc.Utf8);const encodedData = JSON.parse(json); // Example encodedData:// {// algorithm: 'HMAC-SHA256',// issued_at: 1520009634,// player_id: '123456789',// request_payload: 'my_payload'// } 返回字符串?簽名字符串。
ContextPlayer 代表與當前玩家在相同環境中玩游戲 的玩家的信息。
getID( ) 獲取相同環境玩家的編號。 返回字符串?相同環境玩家的編號
getName( ) 獲取經本地化顯示的玩家姓名。 返回字符串??經本地化顯示的玩家姓名。
getPhoto( ) 獲取玩家公開頭像的網址。 返回字符串??玩家公開頭像的網址
AdInstance 代表廣告實例。
getPlacementID( ) 返回此廣告實例的 Audience Network 版位編號。
loadAsync( ) 預加載廣告。返回的 promise 將在預加載完成時被解析, 在預加載失敗時被拒絕。 示例 FBInstant.getInterstitialAdAsync( 'my_placement_id',).then(function(interstitial) { return interstitial.loadAsync();}).then(function() { // Ad loaded}); ? 拋出?ADS_FREQUENT_LOAD ? ? 拋出?ADS_NO_FILL ? ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? 返回?Promise
showAsync( ) 代表廣告。返回的 promise 將在用戶 觀看完廣告時被解析,在廣告展示失敗或 用戶在廣告展示期間關閉廣告時被拒絕。 示例 var ad = null;FBInstant.getRewardedVideoAsync( 'my_placement_id',).then(function(rewardedVideo) { ad = rewardedVideo; return ad.loadAsync();}).then(function() { // Ad loaded return ad.showAsync();}).then(function() { // Ad watched}); ? 拋出?ADS_NOT_LOADED ? ? 拋出?INVALID_PARAM ? ? 拋出?NETWORK_FAILURE ? 返回?Promise
排行榜 小游戲排行榜
getName( ) 排行榜的名稱。 示例 FBInstant.getLeaderboardAsync('my_leaderboard') .then(function(leaderboard) { console.log(leaderboard.getName()); // my_leaderboard }); 返回字符串
getContextID( ) 與排行榜相關聯環境的編號,如果 排行榜未與特定環境關聯,則為 null。 示例 FBInstant.getLeaderboardAsync('contextual_leaderboard') .then(function(leaderboard) { console.log(leaderboard.getContextID()); // 12345678 }); FBInstant.getLeaderboardAsync('global_leaderboard') .then(function(leaderboard) { console.log(leaderboard.getContextID()); // null }); 返回字符串?
getEntryCountAsync( ) 獲取排行榜中玩家上榜分數的總數量。 示例 FBInstant.getLeaderboardAsync('my_leaderboard') .then(function(leaderboard) { return leaderboard.getEntryCountAsync(); }) .then(function(count) { console.log(count); }); // 24 ? 拋出?NETWORK_FAILURE ? 返回?Promise<數字>?玩家的唯一標識。
setScoreAsync( ) 更新玩家的分數。如果玩家已有分數, 只有新分數更好時,才會替換舊分數。 注意:如果排行榜與特定環境關聯,游戲必須處于 該環境,才能為玩家設置分數。 參數 ? score數字?玩家的新分數。必須為 64 位 整數。 ? ? extraData字符串?= ion。?與保存的分數關聯的元數據。 大小必須小于 2KB。 ? 示例 FBInstant.getLeaderboardAsync('my_leaderboard') .then(function(leaderboard) { return leaderboard.setScoreAsync(42, '{race: "elf", level: 3}'); }) .then(function(entry) { console.log(entry.getScore()); // 42 console.log(entry.getExtraData()); // '{race: "elf", level: 3}' }); ? 拋出?LEADERBOARD_WRONG_CONTEXT ? ? 拋出?NETWORK_FAILURE ? ? 拋出?INVALID_PARAM ? ? 拋出?INVALID_OPERATION ? 返回?Promise?解析為更新后玩家在排行榜的 當前上榜分數。
getPlayerEntryAsync( ) 檢索當前玩家的排行榜上榜分數,或在玩家尚無 上榜分數時返回 null。 示例 FBInstant.getLeaderboardAsync('my_leaderboard') .then(function(leaderboard) { return leaderboard.getPlayerEntryAsync(); }) .then(function(entry) { console.log(entry.getRank()); // 2 console.log(entry.getScore()); // 42 console.log(entry.getExtraData()); // '{race: "elf", level: 3}' }); ? 拋出?NETWORK_FAILURE ? ? 拋出?INVALID_OPERATION ? 返回?Promise??解析為玩家在排行榜的 當前上榜分數。
getEntriesAsync( ) 檢索一組排行榜上榜分數,按排行榜上的得分名次 排序。 參數 ? count數字?嘗試從排行榜獲取的上榜分數 總數量。如果未指定,默認為 10。每條查詢命令最多可獲取 100 個上榜分數。 ? ? offset數字?從排行榜頂部檢索 上榜分數的偏移量。 ? 示例 FBInstant.getLeaderboardAsync('my_leaderboard') .then(function(leaderboard) { return leaderboard.getEntriesAsync(); }) .then(function(entries) { console.log(entries.length); // 10 console.log(entries[0].getRank()); // 1 console.log(entries[0].getScore()); // 42 console.log(entries[1].getRank()); // 2 console.log(entries[1].getScore()); // 40 }); FBInstant.getLeaderboardAsync('my_leaderboard') .then(function(leaderboard) { return leaderboard.getEntriesAsync(5, 3); }) .then(function(entries) { console.log(entries.length); // 5 console.log(entries[0].getRank()); // 4 console.log(entries[0].getScore()); // 34 console.log(entries[1].getRank()); // 5 console.log(entries[1].getScore()); // 31 }); ? 拋出?NETWORK_FAILURE ? 返回?Promise<數組>?解析為與查詢條件相符的 排行榜上榜分數。
商品 表示游戲的商品信息。 類型:對象 屬性 ? title字符串?商品的標題 ? ? productID字符串?商品在游戲中的特定標識 ? ? description字符串??商品說明 ? ? imageURI字符串??商品相關圖片的鏈接 ? ? price字符串?商品的價格 ? ? priceCurrencyCode字符串?商品的貨幣代碼 ?
ContextFilter 適用于環境選擇操作的篩選條件。 “NEW_CONTEXT_ONLY”— 僅顯示之前玩游戲未使用過的環境。 “INCLUDE_EXISTING_CHALLENGES”— 包括“當前挑戰”部分, 顯示玩家積極在其中玩游戲的環境。 “NEW_PLAYERS_ONLY”— 在包含個人信息的部分, 篩選出之前未玩過游戲的用戶, 類型:("NEW_CONTEXT_ONLY"?|?"INCLUDE_EXISTING_CHALLENGES"?|?"NEW_PLAYERS_ONLY")
購買 表示游戲商品的單筆購買。 類型:對象 屬性 ? developerPayload字符串??開發者指定的字符串, 在商品購買期間提供 ? ? paymentID字符串?購買交易的標識 ? ? productID字符串?商品在游戲中的特定標識 ? ? purchaseTime字符串?購買發生時的 Unix 時間戳 ? ? purchaseToken字符串?代表該筆購買的一個口令, 可用來消費購買的商品 ? ? signedRequestSignedPurchaseRequest?購買請求的服務器 簽名代碼 ?
平臺 代表用戶當前在哪個平臺玩游戲。 類型:("IOS"?|?"ANDROID"?|?"WEB"?|?"MOBILE_WEB")
ContextSizeResponse 如果當前環境的規模介于對象中 指定的 minSize 和 maxSize 值之間, answer 字段為 true,否則為 false。 類型:{answer:?boolean, minSize:?number?, maxSize:?number?}
SharePayload 代表用戶分享的內容。 類型:對象 屬性 ? intent("INVITE"?|?"REQUEST"?|?"CHALLENGE"?|?"SHARE")?表示分享的意圖。 ? ? image字符串?要分享的 base64 編碼圖片。 ? ? text字符串?要分享的文本消息。 ? ? data對象??要附加到分享中的數據塊。通過分享 開始的所有游戲會話都可以通過 FBInstant.getEntryPointData() 訪問此數據塊。 ?
錯誤代碼 小游戲 API 可能會返回的錯誤代碼 屬性 ? ADS_FREQUENT_LOAD字符串?廣告加載太頻繁。 ? ? ADS_NO_FILL字符串?我們無法向當前的用戶投放 廣告。如果用戶在設備中退訂基于興趣的廣告 ,或我們沒有廣告可展示給該用戶,就會出現這種情況 ? ? ADS_NOT_LOADED字符串?嘗試顯示此前未成功 加載的廣告。 ? ? ADS_TOO_MANY_INSTANCES字符串?同時展示的廣告實例 太多。建議您先加載和展示現有廣告實例,再新建廣告。 ? ? ANALYTICS_POST_EXCEPTION字符串?分析 API 在嘗試發布事件 時遇到問題。 ? ? CLIENT_REQUIRES_UPDATE字符串?[已停用] — 客戶端要求獲得 更新,以便訪問返回此結果的功能。如果在網頁端 返回這一結果,則意味著該網頁客戶端還不支持 此功能。v5.0 及更高版本已停用這一代碼,以便支持 CLIENT_UNSUPPORTED_OPERATION ? ? CLIENT_UNSUPPORTED_OPERATION字符串?客戶端不支持 當前操作。這可能是因為客戶端版本或平臺不提供 相關支持,或不允許對游戲或玩家執行此 操作。 ? ? INVALID_OPERATION字符串?所請求的操作無效, 或表示當前的游戲狀態。這包括違反限制 (如超出存儲上限)或不適用于特定狀態 (如在獨立的環境中針對特定環境發出請求) 的情況。 ? ? INVALID_PARAM字符串?傳遞給 API 的參數 無效。可表示錯誤類型、參數的無效數字,或 語義問題(例如,將不可序列化的對象傳遞到 序列化函數)。 ? ? LEADERBOARD_NOT_FOUND字符串?找不到所請求名稱的 排行榜。這是因為排行榜尚不存在, 或其名稱與游戲中登記的任何排行榜配置都不匹配。 ? ? LEADERBOARD_WRONG_CONTEXT字符串?嘗試寫入的排行榜 關聯了不同于當前玩游戲環境的 其他環境。 ? ? NETWORK_FAILURE字符串?客戶端處理網絡請求時 出現問題。這可能是由暫時性問題導致的, 如玩家的網絡連接中斷。 ? ? PENDING_REQUEST字符串?表示因存在與此請求沖突的 一項請求而被拒絕。例如,當某個依賴于 Facebook 用戶界面的請求處于待處理狀態時, 我們就會拒絕顯示 Facebook 用戶界面的其他任何調用。 ? ? SAME_CONTEXT字符串?游戲嘗試切換到 當前環境。 ? ? UNKNOWN字符串?發生了未知或未指定的問題。這是 客戶端未指定代碼時返回的默認錯誤代碼。 ? ? USER_INPUT字符串?用戶的選擇導致 被拒絕。例如,如果游戲調用環境切換對話框, 而玩家關閉此對話框, 則 promise 拒絕中就會包含此錯誤代碼。 ? 示例 FBInstant.startGameAsync().catch(function(e) { console.log(e);});// {code: 'CLIENT_UNSUPPORTED_OPERATION', message: '...'}
UpdateAction 表示要執行的更新操作類型。 屬性 ? CUSTOM字符串?一項自定義更新,所有內容都由游戲 指定。 ? ? LEADERBOARD字符串?與小游戲排行榜相關的 一項更新。 ?
ErrorCodeType 小游戲錯誤代碼,#errorcode?中的一種 類型:字符串
SignedPurchaseRequest 類型:字符串 示例 Eii6e636mz5J47sfqAYEK40jYAwoFqi3x5bxHkPG4Q4.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTUwMDM5ODY3NSwicGxheWVyX2lkIjoiMTI0OTUyNTMwMTc1MjIwMSIsInJlcXVlc3RfcGF5bG9hZCI6Im15X2ZpcnN0X3JlcXVlc3QifQ
PurchaseConfig 注冊到游戲的商品的購買請求配置。 類型:對象 屬性 ? productID字符串?要購買商品的標識 ? ? developerPayload字符串??由開發者指定的可選負載, 包含在所返回購買的簽名請求中。 ?
CustomUpdatePayload 代表 FBInstant.updateAsync 的自定義更新。 類型:對象 屬性 ? actionUpdateAction?對于自定義更新,此屬性應為“CUSTOM”。 ? ? template字符串?此自定義更新所使用模板的編號。 模板應在 fbapp-config.json 中預定義。請參閱 [捆綁包配置文檔]https://developers.facebook.com/docs/games/instant-games/bundle-config,獲取有關 fbapp-config.json 的文檔。 ? ? cta(字符串?|?LocalizableContent?)?可選的行動號召按鈕 文本。默認情況下,我們會使用經本地化的“Play”作為按鈕文本。 若要提供自定義行動號召的本地化版本, 應傳遞一個包含默認行動號召的對象作為“default”值,以及將語言鍵映射到翻譯的 另一個對象作為“localizations”值。 ? ? image字符串?base64 編碼圖片的數據網址。 ? ? text(字符串?|?LocalizableContent)?一條文本消息, 或者是一個包含默認文本作為“default”值的對象 以及另一個將語言鍵映射到翻譯內容作為“localizations”值的對象。 ? ? data對象??要附加到更新中的數據塊。通過更新 開始的所有游戲會話都可以通過 FBInstant.getEntryPointData() 訪問此數據塊。轉變為字符串時, 此數據塊必須小于或等于 1000 個字符。 ? ? strategy字符串??指定更新的發布 方式。可以是下列方式之一: “IMMEDIATE”— 更新應立即發布。 “LAST”— 更新應在游戲會話結束時發布。使用 “LAST”策略發送的是最近發送的更新。 “IMMEDIATE_CLEAR”— 更新將立即發布,并清除其他任何待處理的 更新(如通過“LAST”策略發布的更新)。 如果未指定策略,我們將默認為“IMMEDIATE”。 ? ? notification字符串??指定自定義更新的 通知設置。可以是“NO_PUSH”或“PUSH”,默認為“NO_PUSH”。 僅將推送通知用于 對接收人來說非常顯著且可立即操作的更新。另請注意,并不一定 會發送推送通知,具體取決于用戶設置和平臺政策。 ?
LeaderboardUpdatePayload 表示 FBInstant.updateAsync 的一項排行榜更新。 類型:對象 屬性 ? actionUpdateAction?對于排行榜更新,此屬性應為 “LEADERBOARD”。 文本。默認情況下,我們會使用經本地化的“Play Now”作為按鈕文本。 ? ? name字符串?所更新排行榜的 名稱。 ? ? text字符串??可選的文本消息。如果未指定,將會提供 一條經本地化的回退消息。 ?
LocalizableContent 代表一個字符串,其中包含最終使用的本地化內容和默認值。 類型:對象 屬性 ? default字符串?要使用的字符串的默認值 (查看者的語言設置不是 localizations 對象中的鍵時)。 ? ? localizationsLocalizationsDict?指定每種語言設置中用于觀看者 的字符串。 請參閱?https://origincache.facebook.com/developers/resources/?id=FacebookLocales.xml, 獲取受支持的語言值的完整列表。 ?
LeaderboardEntry 小游戲排行榜上的一個上榜分數
getScore( ) 獲取上榜分數的分值。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getScore()); // 9001 }); 返回數字?返回整數的分數。
getFormattedScore( ) 獲取與上榜分數相關的分值,采用 與排行榜相同的分值格式。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getFormattedScore()); // '90.01 meters' }); 返回字符串?返回有格式的分數。
getTimestamp( ) 獲取排行榜上榜分數的上次更新時間戳。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getTimestamp()); // 1515806355 }); 返回數字?返回 Unix 時間戳。
getRank( ) 獲取玩家分數在排行榜中的排行。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getRank()); // 2 }); 返回數字?返回上榜分數在排行榜的排行。
getExtraData( ) 獲取與分數相關的開發者指定負載, 或在沒有設定時返回 null。 示例 leaderboard.setScoreAsync(42, '{race: "elf", level: 3}'); .then(function(entry) { console.log(entry.getExtraData()); // '{race: "elf", level: 3}' }); 返回字符串??與分數相關的開發者指定負載,為可選 參數。
getPlayer( ) 獲取與上榜分數相關玩家的信息。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getName()); // Sally }); 返回?LeaderboardPlayer
LeaderboardPlayer 與上榜分數相關玩家的詳情。
getName( ) 獲取經本地化顯示的玩家姓名。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getName()); // Sally }); 返回字符串?經本地化顯示的玩家姓名。
getPhoto( ) 返回玩家公開頭像的網址。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getPhoto()); // <photo_url> }); 返回字符串??玩家公開頭像的網址。
getID( ) 獲取玩家在游戲中的唯一標識。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getID()); // 12345678 }); 返回字符串??玩家在游戲中的標識。
為方便大家群策群力,我們創建了一個 Facebook Instant Game?? 交流群:814298516 。 歡迎同學們加入交流開發和運營經驗。