如何从Google迁移到Amazon应用内购买
欢迎。 如果您是Amazon Appstore的新手,请查阅我们最近的入门指南“ 如何将应用程序提交到Amazon Appstore” 。 在今天的一集中,我将向您介绍亚马逊应用程序内购买(IAP)的好处和要求。 具体来说,我将介绍使用Google IAB的Google Play应用如何轻松地将其应用迁移到Amazon IAP。
亚马逊Appstore的好处
在我们深入之前,我只想回顾一下Amazon Appstore的好处。
将应用程序添加到Amazon Appstore后,它对200多个国家/地区的Android和Fire用户可见,并且开发人员现在可以列出其PC,Mac和基于HTML5的Web应用程序以及Android应用程序。 通过将您的应用程序,Web应用程序或游戏提交给该程序,您可以增加业务和收入。
根据Statista的数据 ,Amazon Appstore当前有超过600,000个应用程序。
除了今天的教程之外,您还可以在Amazon的Developer Portal上找到大量有用的信息。
从Google Play迁移到Amazon App Store
如果您的Android应用已经在Google Play商店中,那么加入Amazon Appstore甚至更加容易。 亚马逊报告称,超过85%的Android应用程序可以在Kindle Fire上运行,而无需进行其他开发。 这是一段简短的视频,指导您完成从Google Play到Amazon Appstore的过程(视频) :
但是,如果您使用Google的IAB,则需要进行切换,我将向您展示如何进行。
在继续之前,我想鼓励您与您对本教程有任何疑问。 将它们发布在下面的评论中,或在Twitter上发给我@lookahead_io 。 如果您想总体了解有关Amazon Appstore或AWS的更多教程,请告诉我们。
了解应用内购买API
使用应用内购买API,您可以启用引人注目的功能集和方案,例如:
- 为您的应用创建“免费”模型,该应用本身是免费的,但您需要为高级服务或功能付费
- 允许客户直接在您的应用体验中购买应用内货币
- 允许客户订阅您应用中可用的内容
- 使内容可供购买以在您的应用程序中查看
Amazon In-App Purchasing API允许您的应用在您的应用体验中展示,处理和完成对数字内容和订阅的购买。 要启用此功能集,只需实施以下应用程序部分中详细介绍的应用内购买API:
应用内购买API旨在封装购买过程背后的复杂性,同时提供功能全面的API。 应用内购买API将处理有关购买流程,付款处理,为您的应用提供收据以及管理对可购买内容的权利的详细信息。
建立店面后,您可以使用应用内购买API出售可购买的商品 :
有三种可购买的物品:
- 消耗品 :不需要使用权利或访问权,可以由客户多次购买,仅在购买设备上可用且不需要使用任何类型的权利检查的内容。
- 权利 :需要使用权利或访问权的内容,客户只能购买一次,并且可以在注册到该客户帐户的所有兼容设备上使用。
- 订阅 :需要使用权利或访问权的内容,受时间限制,自动续订并且在注册到客户的亚马逊账户的所有合格设备上都可用
亚马逊客户端
亚马逊客户端是应用内购买API不可或缺的一部分。 发起购买后,Amazon Client会浮出水面并显示一个Amazon品牌的用户界面以完成交易。 所有选择使用应用内购买API的应用都将使用此流程。
如果未安装Amazon Client或其他方式不可用,则会向客户显示一条消息,指示采取适当的措施。
Amazon Client为购买工作流的各个方面提供用户界面。 它提供了显示可购买项目,自行执行1-Click购买以及处理出现的任何先决条件或错误情况的逻辑。
从您的应用程序内部直接提供到Amazon Client的链接是推广应用程序的有效工具。 这种类型的链接称为深层链接。 有关深层链接的更多信息,请参见文档 。
职责分离
在使用Amazon In-App采购API进行开发时,了解应用程序必须实现购买流程的哪些部分以及Amazon Client处理哪些部分非常重要。
亚马逊客户将负责购买工作流程,从客户决定购买商品开始,到商店向应用程序提供购买收据(或购买失败的其他状态)时结束。 开发人员不应提供购买对话框,交易超时逻辑或“谢谢”对话框。 这些都是由Amazon Client提供的。 有关更多详细信息,请参见“ 用户界面指南和约定”部分。
如果购买失败,则Amazon Client将向客户展示消息; 您的应用程序不应向客户发送消息 。 例如,如果客户的档案中没有有效的信用卡,则客户会将客户重定向到一个页面,在该页面上他们可以更新其付款信息。 您不应向客户提供有关购买流程的确认或其他非页内对话。
您的应用程式 | 亚马孙 |
---|---|
向客户展示应用内商品目录 | 管理采购流程 |
解锁可购买的功能 | 执行付款处理 |
下载远程交付的内容 | 处理与Amazon平台的安全通信,包括付款安全 |
显示和使用下载的数字商品 | 验证权利并验证购买收据 |
跟踪客户购买和消耗品库存 | 管理订阅,包括自动续订和撤销权利 |
内容来源
您的应用可以通过多种方式利用应用内购买API。 您选择如何实施它可能会影响您构建应用程序的方式。 无论您选择如何实施,都有两个基本流程可供您使用:本地可用内容和可交付内容。
本地可用内容
购买后,本地可用内容将被解锁或以其他方式提供给客户。 在这种模式下,您的应用程序已经具备了客户使用可购买物品所需的一切,但没有使用权。 您可以在此模型中使用所有三种类型的可购买项目。
您的应用应包含每个可购买商品(SKU)的唯一标识符,向客户展示目录的能力以及应用中的逻辑,以在成功交易后解锁可购买商品。
可交付内容
可交付内容使您可以向客户提供新内容。 在这种模式下,您的应用程序将从服务器上下载新内容并将其提供给客户。
您的应用程序应包含每个可购买商品(SKU)的唯一标识符,向客户展示目录的能力以及应用程序中的逻辑,以便在成功交易后下载,保留并提供下载的内容。
切记:IAP v1.0已被弃用
2014年7月,亚马逊发布了应用内购买(IAP)v2.0 API,其中包括一些重要更新。 自2016年4月30日起,Amazon已弃用IAP v1.0来提交新的和更新的应用程序。 尽管此弃用不会影响已经在Amazon Appstore中运行的应用程序,但2016年5月11日之后提交为新应用程序或更新应用程序的任何应用程序都将需要使用IAP v2.0。
- 要了解有关此弃用的更多信息,请参阅博客文章将您的IAP v1.0应用迁移到v2.0 。
- 有关如何迁移应用程序的分步说明,请参阅从IAP v1.0迁移到IAP v2.0 。
从Google Play应用内结算(IAB)v3.0迁移到Amazon应用内购买(IAP)v2.0
现在,让我们讨论Google Play的应用内结算(IAB)和亚马逊的应用内购买(IAP)之间的区别,并对如何使您的应用同时使用这两个API集进行高级描述。
什么是IAB和IAP?
Google Play的应用内结算功能使用户可以直接从您的应用中购买虚拟物品。 例如,用户可以购买他或她正在玩的游戏的附加关卡。
亚马逊的应用内购买是亚马逊API的等效功能。 如果您有使用Google Play的应用内结算功能的应用,则可以轻松地修改代码以使用亚马逊的等效应用内购买功能。 两种API集都具有相似的功能,但命名和术语有所不同。
Amazon Appstore和Amazon设备的要求
如果您要向Amazon Appstore提交实现Google Play的IAB的应用程序,以使其可在Fire平板电脑等Amazon设备上运行,则您的应用程序需要为应用程序内购买实现Amazon IAP。 Google Play的IAB无法在Amazon设备上运行。
Amazon IAP v2.0与Google Play IAB v3.0
功能比较
下表显示了Amazon的IAP API和Google Play的IAB API之间的比较:
特征 | IAP v2.0(亚马逊) | IAB v3.0(Google Play) | 注释 |
---|---|---|---|
购买 | |||
由API处理的意图。 | ÿ | ñ | |
提供了简单的API调用框架。 | ÿ | ñ | |
消耗品 | ÿ | ÿ | |
单个耗材可以多次购买。 | ÿ | ÿ | |
权益 | |||
购买一次。 如果用户尝试购买已经拥有的权利,则通知用户。 | ÿ | ÿ | |
订阅内容 | |||
订阅运行时间段的各种选项。 | ÿ | ÿ | 亚马逊的选项:每周,双周,每月,双月,季度,半年,每年Google Play的选项:每月,每年,季节性(自定义) |
支持免费试用期。 | ÿ | ÿ | |
自动续订选项 | ÿ | ÿ | |
递延帐单选项 | ñ | ÿ | |
收据验证 | |||
收货确认服务 | ÿ | ÿ | 尽管Google Play确实提供了收据验证,但是Google Play的收据验证过程并不是自动进行的。 |
Google Play的托管对象与Amazon的消耗品和权益
虽然Google Play的IAB和Amazon的IAP都可以让您的客户进行相同类型的应用内购买,但Google Play和Amazon对其购买类型使用不同的术语。 下表说明了每种亚马逊购买类型的Google Play等效产品:
亚马孙 | 描述 | 相当于Google Play | 例子 |
---|---|---|---|
消耗品 | 进行购买,然后在应用程序(通常是游戏)中消费。 可以多次购买。 | 应用内托管产品 | (在游戏中)额外的生命或移动,游戏中角色的额外弹药。 |
权益 | 一次性购买即可解锁对应用程序或游戏中功能或内容的访问。 | 应用内托管产品 | 解锁游戏中的额外关卡或应用中的“仅限高级会员”功能。 |
订阅 | 在有限的时间内提供对一组高级内容或功能的访问。 | 订阅 | 在线杂志订阅,幻想足球联赛访问。 |
如您所见,Google Play的IAB对所有非订阅购买的处理方式类似; 购买物品,然后由用户消费。 消耗完商品后,将在应用程序中配置该商品,并记录消费情况。 对于可能是一次性购买的物品(例如解锁新游戏等级),您可以选择将其视为可消耗或不可消耗物品,并引入逻辑以确保仅购买该物品一旦。
借助Amazon的IAP,这些一次性购买是通过设计与购买(例如额外的生活)分开的,例如应用程序用户可能会一次又一次地购买。
移植代码
让我们引导您将应用程序从Google Play的IAB API移植到Amazon IAP API:
- 配置您的AndroidManifest.xml文件以支持Amazon的IAP。
- 在您的应用中,实现在IAB和IAP之间进行中介的逻辑。
- 添加并实施Amazon IAP API。
- 测试您的应用。
配置您的AndroidManifest.xml文件
配置您的AndroidManifest.xml文件以为您的应用定义IAP响应接收器。 IAP响应接收器可确保您的应用拦截来自Amazon Client的意图通信。 请注意,如果您同时支持Google Play的IAB和亚马逊的IAP,则无需删除与IAB相关的元素; 它们只会被IAP忽略。
在您的AndroidManifest.xml文件中,为IAP ResponseReceiver
添加适当的<receiver>
标签:
<application>...<receiver android:name="com.amazon.inapp.iap.ResponseReceiver"><intent-filter><action android:name="com.amazon.inapp.purchasing.NOTIFY" android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY"></action></intent-filter></receiver>...</application>
实施逻辑以在IAB和IAP之间进行中介
无论您将应用程序托管在何处,都可以为您的应用程序使用相同的代码库。 只需向您的应用添加逻辑即可确定该应用是从Amazon Appstore还是从Google Play下载的。 根据用户下载应用程序的位置,对IAP或IAB执行适当的方法。
以下示例代码确定是从Google Play还是从Amazon Appstore安装了软件包:
PackageManager pkgManager = context.getPackageManager();String installerPackageName = pkgManager.getInstallerPackageName(context.getPackageName());if(installerPackageName.startsWith("com.amazon")) {// Amazon} else if ("com.android.vending".equals(installerPackageName)) {// Google Play}
添加和实施Amazon IAP API
在大多数情况下,亚马逊的IAP与Google Play的IAB类似。 在代码中创建用于实现IAP API的路径时,您应该能够使用与IAB类似的逻辑流程,但是需要考虑不同的类和方法名称。
下表将最常用的IAP方法映射到它们的IAB对等物:
PurchasingService方法 | PurchasingListener回调 | 回应对象 | 等效的IAB通话 |
getUserData()
|
onUserDataResponse()
|
UserDataResponse
|
不适用 |
getPurchaseUpdates()
|
onPurchaseUpdatesResponse()
|
PurchaseUpdatesResponse
|
getPurchases()
|
getProductData()
|
onProductDataResponse()
|
ProductDataResponse
|
getSkuDetails()
|
purchase()
|
onPurchaseResponse()
|
PurchaseResponse
|
getBuyIntent()
|
notifyFulfillment()
|
不适用 | 不适用 |
consumePurchase()
|
请注意,Amazon的notifyFulfillment()
调用与Google Play的consumePurchase()
调用在某种程度上相互关联。 在IAB的受管物料上调用consumePurchase()
会将物料的状态返回到“未购买”,实质上将其转换为消耗品。 之后,收据将不再出现在后续调用getPurchases()
的响应中。 亚马逊将在getPurchaseUpdates()
调用中返回消耗品的收据,直到应用程序调用notifyFulfillment()
为止。
有关IAP的类和方法的更多信息,请参阅应用内购买API参考v2.0 。
测试您的应用
下载并安装App Tester工具以测试您的IAP v2.0集成的应用程序。 如果您的应用程序也使用该工具,该工具还可以测试Mobile Associates API。 请按照测试应用内购买(IAP)中的说明和链接安装和使用App Tester。
在本地测试您的应用程序之后,您可以使用Live App Testing服务在具有选定用户组的实时生产环境中对您的应用程序进行Beta测试。
收盘时
希望您喜欢今天的指南以及我们先前介绍的如何将应用程序提交到Amazon Appstore中的方法。 请让我们知道您想看到哪些Amazon Appstore区域更详细。 您可以在下面的评论中发布它们,或通过Twitter @lookahead_io与我联系 。
如果您喜欢本教程,请确保阅读我的有关使用PHP构建启动的系列文章,并紧跟Envato Tuts +讲师页面上的内容,以查看其他一些教程和系列文章。
相关链接
- 如何将您的应用程序提交到Amazon Appstore(Envato Tuts +)
- 亚马逊开发者控制台
- 将您的应用程序提交到Amazon App Store
- Amazon Appstore发布常见问题
- 了解应用内购买API(IAP v1.0)
- 从Google Play应用内结算(IAB)v3.0迁移到Amazon应用内购买(IAP)v2.0
翻译自: https://code.tutsplus.com/tutorials/how-to-migrate-to-amazon-in-app-purchasing-from-googles--cms-28056
如何从Google迁移到Amazon应用内购买相关推荐
- Google Play 应用内购买限制国家地区政策更新
目前,如果上传的应用内含有应用内购商品,将无法发布到不支持 Play Billing 的地区或国家(我们称为 "ROW 国家和地区").这个限制在开发者使用 Play Consol ...
- 重要更新|Amazon S3 和 CloudFront 已迁移至 Amazon Trust Services
提醒 从2021年3月23日起,Amazon S3和Amazon CloudFront服务将迁移至Amazon Trust Services 传输层安全性(TLS,以前称为安全套接字层[SSL]) ...
- (五)Amazon Lightsail 部署LAMP应用程序之迁移到Amazon RDS实例
迁移到您的Amazon RDS实例 在某些时候,您的应用程序需求可能需要在 Amazon Lightsail中找不到的功能.幸运的是,将应用程序的一个或所有部分移动到其他AWS服务中非常简单 您将数据 ...
- mysql 数据迁移_【AWS 功能】Mysql 数据库迁移至Amazon RDS方案
今天,我们讲讲如何使用源MySQL数据库执行数据库迁移到MySQL数据库的目标Amazon RDS的方案,同时由于(源和目标数据库引擎是相同的)--模式结构.数据类型和数据库代码在源和目标数据库之间是 ...
- Win10将引入HomeHub功能 和Google Home和Amazon Echo竞争
为更好的应对GoogleHome和Amazon Echo等设备,微软计划在Windows 10系统中引入HomeHub功能.熟悉该计划的内部人士向外媒The Verge透露这项功能尚处于筹备阶段,公司 ...
- 有关Amazon站内信邮件类别处理
在做amazon站内信的时候;需要对邮件进行分类; 如: 亚马逊买家邮件 ; 亚马逊系统邮件 ; 亚马逊Q&A问答 等分类;记录一下amazon的邮箱类别; /*** 处理邮件类型** @pa ...
- Android之在设备之间传输--MediaRouter、Google Cast、Amazon Fling介绍
MediaRouter和MediaRouteProvider介绍 Android MediaRouter API 旨在利用通用界面在远程接收端设备上实现媒体内容的显示和播放.然后,实现 MediaRo ...
- Google in app billing 应用内支付
一 简介 Google in app billing 是google play 商店的应用内支付,他是一种应用内的虚拟的道具支付服务,支持应用内支付(inapp)和订阅(subs)两种模式; 在中国, ...
- Flutter 中的应用内购买
虽然我们总是精心制作我们的应用程序,但我们并不总是让它们免费.除了将我们的应用程序上传到Play商店收取费用外,另一种赚钱的方式是通过应用内购买.Flutter in_app_purchase(IAP ...
最新文章
- 练习2.13 不用库函数,写一个高效计算ln N的C函数
- Python3 爬虫学习笔记 C16【数据储存系列 — Redis】
- Visual Studio 2015开发Android App启动调试始终无法完成应用部署的解决方案
- (86)FPGA读文件激励(readmemh)
- js转php,js代码转php代码可行吗?
- 无人机机架 无人机机架材料 无人机机架的尺寸计算 无人机机架结构图
- 西门子触摸屏脚本程序_西门子触摸屏实例程序
- python-合并两个txt文件
- 调用函数,判断一个数是否为素数
- CTF隐写术:男神一般都很低调很低调的
- 阿里的BUG智能定位神器!直接定位线上BUG,超给力!必须收藏!
- 【Echarts】数值标签在柱状图上的横向纵向样式调整及数值标签超出图表范围向柱体内部调整移动
- 贷款行业怎样运用运营商数据找精准客户?
- 关于HMC5883L驱动书写及调试的总结
- 第七章 项目成本管理
- vscode自动保存代码,自动按照eslint和standard规范格式化代码设置
- 终于有人把线性回归讲明白了
- 对象认知全提升,成为 JS 高手
- UNCTF2022中RSA题目总结
- 计算机与通信网络之间的常用通信设备,通讯设备有哪些,通信常用设备总结
热门文章
- linu安装python走到300就不动了_linux centos 安装python3.7报错会在load avg: 0.63 [307/416] test_socket卡住 解决办法...
- 西方艺术史-文艺复兴笔记(第四次考试)
- C++ 数据结构——BF算法
- vm搭建虚拟服务器,VMware搭建vps虚拟主机,手动分区完整安装
- 笔记本wife DNS服务器未响应,为什么手机已经连接上wifi还是上不了网?
- 我的世界java边境之地_我的世界:MC人迹罕至的6种“边境之地”,最后1种让人后背发凉!...
- 动态折线图,制作原来是这么简单
- 河南省周口市安吉软件测试培训中心第一次软件测试课程——测试理论考试(含答案)
- Matlab中如何将长字符串换行写
- COSCon'21 人工智能(A)论坛介绍