准备好你的 In-app Billing 应用程序

准备好你的内购应用

在开始使用 In-app Billing 服务之前,你需要先把包含 In-app Billing Version 3 API 的库添加到你的Android工程中。你还需要设置你的应用和Google Play通信需要的权限。另外,你还需要在你的应用和Google Play之间建立一个稳定连接。最后还要确认Google Play支持你应用程序使用的In-app Billing API版本

下载示例程序


在这个训练课程,你将用到一个叫做 TrivialDrive 的示例程序对于In-app Billing Version 3的参考实现。 这个例子里有些便捷类可以快捷设置In-app Billing服务,编码解码数据类型以及在你程序的主线程处理In-app Billing请求。注1

去下载例子程序:

  1. 打开 Android SDK Manager.
  2. 在SDK Manager中展开 Extras 部分.
  3. 选择 Google Play Billing Library.
  4. 点击 Install packages 完成下载。

这个例子文件将会安装到 <sdk>/extras/google/play_billing/. (译者注:就是在你电脑上SDK目录下面)

添加应用到控制台


在 Google Play 开发者控制台,你可以发布你的添加了 In-app Billing 的应用,还可以管理来自你的应用中可以销售的各种数字商品。当你在开发者控制台创建一个新应用后,控制台会为你的应用自动生成一个公钥(public license key)。你将需要使用这个公钥在你的应用和Google Play服务器之间建立一个可信赖的连接。这个公钥在应用创建的时候生成,在以后更新你程序的APK文件时不必再次生成。

把你的应用添加到开发者控制台:

  1. 打开 Google Play Developer Console 并登陆,如果你先前没有注册的话需要先注册一个新的开发者账号。为了销售内购商品,你还需要一个 Google Wallet 商业账号。
  2. 如果你还没有登陆到最新版本的话,就点击 Try the new design 进入开发者控制台的预览版。
  3. 在 All Applications 标签处添加一个新应用。
    1. 点击 Add new application.
    2. 给你的新 In-app Billing 应用输入一个名字.
    3. 点击 Prepare Store Listing.
  4. 在 Services & APIs 标签页下找到Google Play为你应用生成的公钥并记下,一会儿在你的程序里会用到这个 Base64 字符串。

你的应用现在应该出现在开发者控制台的应用列表中。

添加 In-app Billing 库文件


为了使用 In-app Billing Version 3 的功能,你必须把 IInAppBillingService.aidl 文件添加到你的工程中。 这个 Android Interface Definition Language (AIDL) 文件定义了Google Play 服务可用的接口。

你可以在提供的例子程序里找到这个IInAppBillingService.aidl文件。根据你是创建一个新的应用还是修改现有的应用,跟随下面的指导把In-app Billing库添加到你的工程中。

新工程

添加 In-app Billing Version 3 library 到你的新 In-app Billing 工程:

  1. 把 TrivialDrive 例子程序文件复制到你的工程。
  2. 把复制的文件包名修改成你工程使用的包名。在 Eclipse,你可以使用一个快捷方式: 右键选中包名,然后选择 Refactor > Rename。
  3. 打开 AndroidManifest.xml 文件,把包名属性值改成你工程的包名。
  4. 看情况修复 import 语句,让你的工程可以成功编译。在 Eclipse,你可以使用这个快捷方式: 在出错的文件中按 Ctrl+Shift+O。 (译者注:导包的快捷键,地球人都知道~~)
  5. 修改例子代码来创建你自己的应用。记得把开发者控制台为你程序生成 Base64 公钥拷贝到你的 MainActivity.java.

现有工程

添加 In-app Billing Version 3 library 到你已有的 In-app Billing 工程:

  1. 把 IInAppBillingService.aidl文件复制到你的 Android 工程。
    • 如果你正在使用eclipse: 把 IInAppBillingService.aidl 文件引入到工程的 /src 目录下。
    • 如果你正在开发使用的是非eclipse环境: 创建下面的目录 /src/com/android/vending/billing 并把 IInAppBillingService.aidl 文件复制到这个目录下。
  2. 生成你的程序。在你工程的 /gen目录下应该可以看到一个生成的文件IInAppBillingService.java
  3. 把 TrivialDrive 例子中 /util 目录下的辅助类添加到你的工程。记得改变这些文件中声明的包名,这样你的工程才可以成功编译。

现在你的工程应该已经包含了 In-app Billing Version 3 library.

设置 Billing 许可


你的程序应该有个可以向 Google Play 的购买服务发送请求以及收到回应的许可。为了给你的应用添加必要的许可,把下面这行许可内容添加到你的manifest文件AndroidManifest.xml: 

<uses-permission android:name="com.android.vending.BILLING" />

 

初始化一个 Google Play 连接


为了向In-app Billing 发送请求和收到回应,你必须把你的Activity绑定到 Google Play 的In-app Billing服务。在例子中已经提供了处理绑定服务的便捷类,所以你不必直接管理网络连接。

为了和Google Play设置同步通信,在你程序Activity的 onCreate 方法中创建一个 IabHelper 实例。在 IabHelper 构造方法中传Activity的 Context 还有先前在开发者控制台生成的公钥字符串。

安全建议: 强烈建议你不要把公钥原样的编写到代码里。可替代的,在把公钥传给构造方法前,你可以动态的用子字符串构造完整的公钥,也可以从一个加密的存储中获取它。注3 这样做可以有效地防止有些居心不良的第三方修改你APK文件中的公钥。

IabHelper mHelper;

@Override
public void onCreate(Bundle savedInstanceState) {
   // ...
   String base64EncodedPublicKey;
   
   // compute your public key and store it in base64EncodedPublicKey
   mHelper = new IabHelper(this, base64EncodedPublicKey);
}

 

接下来,调用你创建的 IabHelper实例中的startSetup方法来执行服务绑定。在方法中传一个 OnIabSetupFinishedListener,这个listener会在  IabHelper 完成异步设置后调用一次。在设置过程中 IabHelper 也会检测Google Play是否支持In-app Version 3 API,如果这个版本的API不被支持,或者在建立服务绑定时出现错误,这个listener就会被通知并且传给一个带有错误消息的IabResult对象。

mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
   public void onIabSetupFinished(IabResult result) {
      if (!result.isSuccess()) {
         // Oh noes, there was a problem.
         Log.d(TAG, "Problem setting up In-app Billing: " + result);
      }            
         // Hooray, IAB is fully set up!  
   }
});

 

如果这个设置成功完成,你现在就可以使用这个 mHelper 引用来和Google Play服务通信了。当你的应用启动时,最好去查询下Google Play,看看用户都拥有哪些内购物品。详细内容在后来的 Query Purchased Items 部分。

重要: 记得在你用完activity后解除和In-app Billing服务之间的绑定。如果你不解除绑定,这个开放的服务连接可能影响你设备的性能。为了解除绑定并释放你的系统资源,可以在你的 Activity 销毁的时候调用 IabHelper的 dispose 方法。

@Override
public void onDestroy() {
   super.onDestroy();
   if (mHelper != null) mHelper.dispose();
   mHelper = null;
}

注1:原文 In this training class, you will use a reference implementation for the In-app Billing Version 3 API called the TrivialDrive sample application. The sample includes convenience classes to quickly set up the In-app Billing service, marshal and unmarshal data types, and handle In-app Billing requests from the main thread of your application.

注2:原文 The convenience classes provided in the sample handles the binding to the In-app Billing service, so you don’t have to manage the network connection directly.

注3:原文 Instead, you can construct the whole public license key string at runtime from substrings, or retrieve it from an encrypted store, before passing it to the constructor.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值