亚马逊 Amazon iap v2.0 加入eclipse流程

来源:互联网 发布:手机中文观星软件 编辑:程序博客网 时间:2024/05/16 06:27

引用

官方说明 (外部配置)
官方说明 (内部配置)

具体步骤:

注意事项:

  • 允许通过 ADB 和 logcat 登录的 Android 开发环境
  • 支持 SDK 版本 10 或更高版本的 Android 设备
  • 实施 IAP v2.0 和/或移动联营 API 的 Android 应用
  • 如果之前安装了适用于 IAP v1.0 的 SDK Tester,需卸载 SDK Tester。
    • 测试原1.0 sdk test不删除也不会影响测试, 但官方建议删除, 还是最好删除掉
  • Amazon Appstore 中为您的应用创建了一个或多个可购买项目(可选但推荐)。
    • 在 app的 “应用程序内商品” 中创建支付商品

安装 sdk tester

  • 需要android 5.0+ 系统
  • 下载地址 : app tester
  • 在 “应用程序内商品” 中 可以找到下载 JSON配置文件字样
  • 将json文件命名为 amazon.sdktester.json 并保存到手机用户存储根目录 /mnt/sdcard/
  • 或者通过命令行来实现
    • adb push ./amazon.sdktester.json /mnt/sdcard/

应用内配置

  • 在AndroidManifest.xml中配置
    • 加入代码 (如果有旧iap配置删掉)
<receiver android:name = "com.amazon.device.iap.ResponseReceiver" >    <intent-filter>      <action android:name = "com.amazon.inapp.purchasing.NOTIFY"              android:permission = "com.amazon.inapp.purchasing.Permission.NOTIFY" />    </intent-filter>  </receiver>
  • 需要用到的服务包括 PurchasingService 和 PurchasingListener
  • 简单来实现可以直接绑定主类实现接口 implements PurchasingListener
    • api命名看字面很模糊, 直接看对应的api就看清晰了, 其中onPurchaseResponse就是对应每次购买的响应成功与失败结果
onUserDataResponse() 对应 getUserData() 的响应onProductDataResponse() 对应 getProductData() 的响应onPurchaseUpdatesResponse() 对应 getPurchaseUpdates() 的响应onPurchaseResponse() 对应 purchase() 的响应

初始化

第一个参数是监控对象类, 第二个是反馈函数的类, 绑定了PurchasingListener, 就可以这样写

PurchasingService.registerListener(this, this);

将所有sku放到一个集合, 初始化检测所有购买项是否合法

final Set<String> productSkus = new HashSet<String>();for (final KAmazonIAB mySku : KAmazonIAB.values()) {    productSkus.add(mySku.getSku());}PurchasingService.getProductData(productSkus);//在onProductDataResponse中响应//其中 response.getUnavailableSkus() 为无效的购买项//其中 response.getProductData() 为有效购买项//可以在这里统计哪些可以购买, 在购买点击时进行第一部的判断

获取用户信息

一般放在resume中

PurchasingService.getUserData();//在onUserDataResponse会得到响应//用户id//response.getUserData().getUserId()//商店所在国家//response.getUserData().getMarketplace()
PurchasingService.getPurchaseUpdates(false);//初始化后进行检测, 如果用户已经购买, 则更新app的内付费购买状况, 不需要再购买

内付费购买点击按钮添加

PurchasingService.purchase(myIAB.getSku())//响应 onPurchaseResponse()//注意这里只有SUCCESSFUL才可以读到sku的key, ALREADY_PURCHASED不可以, 所以如果想已购买也支持, 请自己保存skuKey在购买生命周期过程中存放
0 0