首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Libgdx + Android购买

Libgdx + Android购买
EN

Stack Overflow用户
提问于 2015-01-06 11:53:10
回答 1查看 2.7K关注 0票数 3

我想对我的Android应用程序使用Google计费(使用Libgdx)。默认情况下,它是每个人的免费应用程序。因为我用InAppPurchase来购买硬币。

我在谷歌的官方计费网站上读了一篇文章,但我不知道如何将其链接到Libgdx。官方的Libgdx网站并没有提供任何明确的指示和解释。

到今天为止,我仍然不知道如何连接Libgdx和In计费。此外,信息存储在哪里(它在首选项文件中吗?)用户何时购买解锁的物品?我完全不知道。

如果有人把我引向正确的道路,那就太好了。提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-07-02 17:38:13

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

然而,我更喜欢自己来做这一切。

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

在启动之前,请确保您有.aidl在应用程序中的计费,并具有适当的权限。

首先,我们需要一个核心界面:

代码语言:javascript
复制
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
}

和结果:

代码语言:javascript
复制
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文档或任何其他文档/教程设置应用程序计费。将其转换为您在IabWrapper中添加的方法,您可以按照Android来实现它。

现在,一旦在Android项目中创建了iab代码,就需要打开在teh核心项目中初始化的类。在这里,您可以添加一个构造函数,其中之一是:

  • 包装器的参数
  • 与所有其他包装器(如果有的话)的包装参数(我使用这种方法,但我有3-4包装,我希望结束后,我的游戏大约6)

当然,您需要从桌面项目、ios项目、android项目或任何其他项目中传递包装器。

因为它是一个接口,所以在构造函数中将它定义为IabWrapper,由每个单独的平台为实现接口的类提供适当的方法来处理在应用程序购买中的操作。

根据这个问题,我还建议您添加一个回调类,以检查在应用程序购买中是否有更新。Android在互联网呼叫中是异步的,除非你改变了(我已经忘记了什么,但是有一个字段允许你在主线程上进行网络呼叫)。但它通常会导致ANR,因为您阻塞主线程)。

因此,在您的渲染中添加如下内容:

代码语言:javascript
复制
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。

为了理解我在开始时说过的话,这种技术可以应用于任何,当您需要操作系统特定的东西时。您可以在core中创建一个接口,在其他项目中重写它,并将它传递给core类。然后调用包装器,因为它是一个接口,所以它对实现该类的类进行调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27798112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档