2015-01-06 107 views
2

我想爲我的Android應用程序使用Google應用內結算(使用Libgdx)。默認情況下,它是適用於所有人的免費應用程序。在那裏我用InAppPurchase購買硬幣。Libgdx + Android應用程序內購買

我已閱讀官方的Google Billing網站,但我不知道如何將其鏈接到Libgdx。 Libgdx官方網站沒有提供任何明確的指導和解釋。

至今爲止,我還不知道如何鏈接Libgdx和應用內結算。此外,當用戶購買解鎖項目時,信息在哪裏存儲(是否在偏好文件?)?我完全不知道。

如果有人讓我走向正確的道路,那將會很棒。預先感謝。

+0

這裏您可以找到一些有用的鏈接:http://stackoverflow.com/questions/19921146/libgdx- android-in-app-simple-tutorial –

+0

實際上我看到這個鏈接,但我想要它的任何示例或教程 –

+0

https://github.com/libgdx/gdx-pay –

回答

0

你當然可以使用gdx支付(link)。

但是,我的偏好是自己做所有這些。

在添加任何代碼之前,我想表達一個事實,即可以使用任何需要調用操作系統特定代碼的方法來完成此任務。

在開始之前,請確保您在應用程序結算中具有.aidl,並擁有適當的權限。

首先,我們需要在覈心的接口:

public interface IabWrapper { 
    boolean connect();//Connect to the IAB framework - return success or failure 
    Result buyProduct(String SKU, boolean consumeInstantly);//Buy the product, and figure out whether or not to consume it instantly. Return success or fail 
    //You get the idea at this point. Add more methods to handle subscriptions (if applicable), etc 
} 

而且結果:現在

public class Result { 
    boolean purchaseSuceeded;//If the purchase succeeded 
    String sku;//The SKU 
    boolean didConsumeSucceed;//If consumable, did it succeed. Just set it to "true" if it doesn't cusome 
    //Here you can add constructors, other data, whatever you need 
} 

,在你的Android項目創建一個實現IabWrapper類。添加一個構造函數,爲您提供IAB所需的一切。您還可以在您使用的任何其他平臺上添加此功能。

在這一點上,你應該有:

  • 核心模塊稱爲IabWrapper類
  • 核心模塊
  • Android的模塊中實現IabWrapper類的一類叫做結果

這樣做的好處是,您現在可以根據android docs設置應用帳單或您找到的任何其他文檔/教程。將它轉換爲您在IabWrapper中添加的方法,然後您可以按照Android文檔來實現它。

現在,一旦您在Android項目中創建了iab代碼,您需要打開您在覈心項目中初始化的類。在那裏,你添加一個構造函數之一:

  • 爲包裝的爭論
  • 與所有你(如果您有任何)其它包裝一個包裝參數(我用這個方法,但我有3個-4包裝,當我完成我的遊戲時,我預計在大約6時結束)

當然,您需要從桌面項目,ios項目,android項目或任何其他項目傳遞包裝你有。

因爲它是一個接口,所以在構造函數中將其定義爲IabWrapper,並且由每個平臺提供實現接口的類以及在應用程序購買中處理的適當方法。

按照this question我還建議您添加一個回調類來檢查應用程序購買中是否有更新。 Android在互聯網調用中是異步的,除非你改變(我已經忘記了什麼,但是有一個域允許你在主線程上進行互聯網調用,但是當你阻塞主線程時,它通常會導致ANR)。

所以,在你呈現你添加somethign這樣的:

if(purchaseRequested && !callback.response()){ 
    //What can you do, there is a purchase requested you are waiting for. 
}else if(purchaseRequested && callback.response(){ 
    //This is where you would process the response, add whatever is purchased, save, unlock content, whatever the in app purchase does 
} 

如果您有任何線索如何處理Android操作系統,還是覺得這個方法看起來過於複雜,我建議你改爲使用gdx工資。


並採取了我在一開始說的東西,這種技術可以應用到任何其中你需要OS具體的事情。您在覈心中創建一個接口,在其他項目中重寫它並將其傳遞給核心類。然後調用包裝器,因爲它是一個接口,它會調用實現類的類