偵測及提供應用程式內產品

這個主題說明玩家在 Google Play 應用程式中透過 Play 點數購買應用程式內產品後,應如何偵測及提供應用程式內產品。

使用者在 Google Play 應用程式中用 Play 點數兌換應用程式內產品後,產品就會立即出現在遊戲中。以下是使用者如何透過 Play 點數購買商品。

1. 按一下「Play 點數」 1. 點選「使用」分頁標籤以查看項目。 2. 選取所需產品並點選「使用點數」即可完成購買。 3. 接收產品。
待定螢幕截圖 待定螢幕截圖 待定螢幕截圖 待定螢幕截圖

在本例中,在購買產品時遊戲並未執行。即便裝置上尚未安裝遊戲,使用者也能透過 Play 點數兌換產品。因此,您必須設計遊戲,處理遊戲內外的應用程式內產品交付。

事前準備

您必須建立產品和 Play 點數促銷活動,才能偵測並提供應用程式內產品。

提交規範

透過 Play 點數促銷活動在遊戲中提交應用程式內產品時,您必須遵守本節的規定。

提交時間

當玩家為應用程式內產品兌換 Play 點數時,您必須立即提交產品,且玩家不必重新啟動遊戲。如果必須事先完成遊戲內容 (例如完成教學課程),則必須在這之後立即提交產品。

提交訊息

使用者在遊戲外購買應用程式內產品並返回遊戲後,您必須顯示確認訊息,告知產品已在遊戲中順利授予使用者。此訊息應以彈出式對話方塊或遊戲內訊息的方式顯示。且您不應該要求使用者必須執行任何額外步驟,才能接收兌換的項目。

所需訊息格式如下:

  • 清楚指出使用者已收到兌換項目。

  • 清楚提及產目名稱並提及「Play 點數」,確保使用者能夠區分 Play 點數和他們收到的內容。

  • 如果您提供了多種面額的類似項目,項目名稱中也應包括正確的面額。

  • 彈出式對話方塊、訊息或遊戲內通知應持續顯示,直到使用者點選「繼續」或「確定」等確認訊息為止。這類內容不應該有取消按鈕,原因是這種訊息的用意在於通知使用者已在遊戲中收到兌換的項目。如果沒有確認按鈕,那麼這則訊息必須在畫面上顯示至少 3 秒,確保使用者瞭解已收到兌換的項目。

以下是訊息範例:

「收到的產品!您已使用 Play 點數兌換 100 顆寶石。繼續。」

使用者應可看到相關動畫或確認用的視覺效果,象徵遊戲代幣的餘額增加。如果兌換產品是永久性或消耗性的應用程式內產品,則應將使用者導向遊戲中解鎖該產品的位置,或是可取得該產品的地方。

偵測遊戲以外的產品

如果您的遊戲使用 Google Play 帳款服務程式庫,請進行下列變更,以偵測在遊戲外收到的應用程式內產品。

  1. 在遊戲的 onResume() 回呼中,呼叫 queryPurchases() 方法以擷取產品清單,藉此判斷哪些產品未確認。

  2. 如果您的遊戲設有伺服器,我們強烈建議您從您的伺服器確認購買交易,方法是使用訂閱和應用程式內購 API

  3. 如果有現成的未確認產目,請使用 consumeAsync() 確認消耗性產品,或透過 acknowledgePurchase() 確認非消耗性產品。

  4. 對遊戲中已購產品進行授權。

偵測透過分割畫面模式接收的項目

如果您的遊戲支援多視窗模式,使用者可以在同時執行 Play 商店應用程式和遊戲時兌換 Play 點數並接收產品。這張螢幕截圖顯示了範例:

遊戲過程中顯示「兌換點數」按鈕的螢幕截圖。

如要透過 Google Play 帳款服務程式庫支援此情境,請執行下列操作:

  1. Google Play 會呼叫 onPurchasesUpdated() 方法,通知遊戲有新的待處理的項目。

  2. 如果您的遊戲設有伺服器,我們強烈建議您從您的伺服器確認購買交易,方法是使用訂閱和應用程式內購 API

  3. 針對消耗性產品使用 consumeAsync() 進行確認,或是使用 acknowledgePurchase() 確認非消耗性產品。

  4. 對遊戲中已購產品進行授權。

顯示提交確認資訊

使用者兌換 Play 點數並收到交換產品時,會希望遊戲顯示遊戲內訊息,或使用某種通知來告知遊戲已確實收到點數並處理產品。以下為幾個提交確認選項:

  • 顯示遊戲內的彈出式視窗。

  • 將訊息傳送至遊戲內訊息方塊,並明確指出遊戲內訊息方塊中有新訊息。

  • 使用作業系統通知訊息。

當收到促銷產品時 (包括未安裝在裝置上),遊戲可能處於任何狀態。無論收到產品時遊戲的狀態為何,您必須偵測促銷產品。然而,在某些例外情況下,我們可能不會立即通知使用者已收到項目。例如:

  • 在遊戲操作期間,顯示訊息可能會分散使用者的注意力。在這種情況下,您必須在操作結束後通知使用者。

  • 在剪輯過程中,顯示訊息可能會分散使用者的注意力。在此情況下,您必須在過場畫面結束後通知使用者。

  • 遊戲的初始教學課程和使用者設定期間。建議您在使用者開啟遊戲後或初次進行使用者設定期間,立即向新使用者發出獎勵通知。不過,也可以等到主要遊戲序列可通知使用者為止。

如果您的應用程式含有多個可套用該項目的字元或帳戶,建議使用者選取要收到促銷產品的帳戶。

決定通知促銷訊息的時機和方式時,請將使用者納入考量。假如使用者沒有立即收到通知,可能會感到困惑,可能會停止使用您的應用程式、聯絡使用者支援團隊,或在社群媒體上投訴。

特定遊戲引擎的更新內容

以下是關於特定遊戲引擎的注意事項:

  • 如果您的遊戲是以 Unity 建構,建議您驗證目前使用的應用程式內購實作項目是否已支援 Play 點數促銷活動。

  • 如果您的遊戲是以 Cocos2d-x 或 Unreal Engine (C/C++) 建構,您很可能需要編寫 JNI 程式碼,從 C/C++ 程式碼呼叫 Java API。

伺服器端最佳做法

本節包含用於 Play 點數促銷活動的伺服器端最佳做法:

  • 如果您在伺服器中呼叫 Purchases.products: get,請根據 productId 值,檢查是否需要分別處理 Play 獎勵兌換產品和其他應用程式內產品。

  • 如果您在伺服器中使用 Inappproducts: list,請確認您是否需要透過 productId 值將 Play 獎勵兌換產品與其他應用程式內產品分開。

  • 請查看下列最佳做法,確認是否需要進行其他變更:

疑難排解

本節提供可能導致客戶查詢情境的相關建議。

多用戶帳戶

如果使用者在裝置上設有多個 Google 帳戶,並在錯誤的帳戶兌換 Play 點數,Google 無法將這些產品轉移至其他帳戶。同理,您的應用程式無法呼叫 getPurchases() 方法轉移產品。在這種情況下,請考慮透過客戶服務作業,手動提供應用程式內產品。

延遲或遺失產品

如果玩家遇到延遲或遺漏的獎勵產品,請參閱 Google Play 說明文件的應用程式內購疑難排解指南