2015-01-06 114 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具体的事情。您在核心中创建一个接口,在其他项目中重写它并将其传递给核心类。然后调用包装器,因为它是一个接口,它会调用实现类的类