Libgdx + Android 应用内购买

3
我想在我的Android应用程序(使用Libgdx)中使用Google In-App计费。默认情况下,这是一个免费的应用程序。我已经使用InAppPurchase购买了硬币。
我已经阅读了官方的Google计费网站,但我不知道如何将其链接到Libgdx。官方的Libgdx网站没有提供任何清晰的说明和解释。
截至今天,我仍然不知道如何链接Libgdx和In-App计费。此外,当用户购买解锁项目时,信息存储在哪里(是在首选项文件中吗?)?我完全不知道。
如果有人能帮助我找到正确的路径,那将是太棒了。先感谢您。

在这里,您可以找到一些有用的链接:https://dev59.com/_3nZa4cB1Zd3GeqPlAYh - Tobías
实际上我看到了这个链接,但我想要任何关于它的样例或教程。 - Chetan Patil
https://github.com/libgdx/gdx-pay - user4741065
1个回答

1

您当然可以使用gdx pay(链接)。

但是,我更喜欢自己完成所有这些工作。

在添加任何代码之前,我想表达的事实是,这可以通过需要调用特定于操作系统的代码来完成。

在开始之前,请确保您拥有应用内计费的.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的类 - 在核心模块中一个名为Result的类 - 在Android模块中实现IabWrapper的类
这样做的优点是,现在您可以按照android文档或其他文档/教程设置应用内计费。将其转换为您在IabWrapper中添加的方法,然后您可以遵循Android文档来实现它。
现在,一旦您在Android项目中创建了iab代码,您需要打开在核心项目中初始化的类。在那里,您可以添加一个构造函数,其中包含以下内容之一:
- 一个包装器参数 - 带有您拥有的所有其他包装器的包装器参数(如果您有任何)(我使用此方法,但我有3-4个包装器,并且我预计在完成我的游戏时会达到6个)。
当然,您需要从桌面项目、iOS项目、Android项目或其他任何项目中传递包装器。
因为它是一个接口,您在构造函数中定义它为 IabWrapper,每个平台都需要提供实现该接口的类,并使用适当的方法处理应用内购买。
根据 此问题,我还建议您添加一个回调类来检查应用内购买是否有更新。Android 是异步的网络调用,除非您更改(我已经忘记了,但有一个字段允许您在主线程上进行网络调用,但通常会导致 ANR,因为您会阻塞主线程)。
因此,在您的渲染中,您可以添加类似以下内容的代码:
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 pay代替。

接下来我想回到一开始提到的话题,这种技术可以应用于任何需要特定操作系统的事情。你在核心中创建一个接口,在其他项目中重写它并将其传递给核心类。然后调用包装器,因为它是一个接口,所以会调用实现该类的类


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接