IOS应用内购买App开发完整流程
2019独角兽企业重金招聘Python工程师标准>>>
看了一些网上教程,基本上是老版本的了。我针对自己遇到的一些问题,结合官方文档把IAP(In-App Purchase)过程梳理了一下。 P.S. 官方文档才是王道!
编码之前
应用内购买要和App Store发生交互,这里在正式编写代码前需要做几个工作。
完善账户信息
收费App、含应用内购买的App等有付费功能的需要完善这部分信息。 1. 进入iTunes Connect
iTunes Connect是苹果提供的一个平台,主要提供App发布和管理App的,最重要的功能是创建管理项目信息,项目付费产品(道具)管理、付费的测试账号、提交App等等。 2. 进入协议、税务和银行业务
这一部分具体可以参照这篇[iOS App提交指南(二)-协议、税务和银行业务](http://www.jianshu.com/p/c7cf65911bc1)
创建App
进入iTunes Connect
进入我的App
新建App
这里说一下,套装ID就是Bundle ID,保证和Xcode项目中的Bundle ID一致。其实不晓得填的地方点击那个小问号就有提示了。(我不知道为嘛要截这么多图,或许会让文章显得亲切点?)
对了,新建App时要保证应用内购买的功能时勾选上的。
创建商品
建好支持应用内购买的App后,就可以该App可购买的商品了。
创建App内购买项目
依次点击*{创建的App名}* -> 功能 -> App内购买项目 -> +
选择项目类型
一般对项目来说大多数都是选择“消耗型项目”这个种类,比如游戏中购买虚拟货币等。具体区别请看这里
3. 项目摘要![项目摘要](https://static.oschina.net/uploads/img/201601/19174703_ZQq8.png "在这里输入图片标题") - 参考名称:商品名称,可以根据商品等实际意义填写,不会显示在App Store- 产品ID:要求唯一性,可以用App的Bundle ID加后缀表示- 价格等级:苹果的销售商品不能随意定价,按等级选择合适的即可。点击*查看价格表*可以看到各等级价格,以及商品卖出后你的实际收益。![价格标准](https://static.oschina.net/uploads/img/201601/19174754_vbSk.png "在这里输入图片标题")其中**CNY**为人民币4. 项目详情![项目详情](https://static.oschina.net/uploads/img/201601/19174734_eBjd.png "在这里输入图片标题") - 语言:至少添加一种语言的项目描述- 审核备注:我填了测试账户信息- 屏幕快照:按要求上传,我传的是支付页面的屏幕截图5. 等待审核![等待审核](https://static.oschina.net/uploads/img/201601/19174909_jxtW.png "在这里输入图片标题")**!这个状态下已经能编码对相应商品就行购买测试了,*审核通过*的状态得等到App提交后才行**
申请测试账号
1. 进入**用户与职能**
2. 点击**沙箱技术测试员**
3. 点击**+**添加新账号***注意:***
- 账号记不住密码就删除,再用不同的邮箱重新创建
- 账号创建后不能被修改
- 沙盒测试账户被删除后,该Apple ID也不能再用作*沙盒测试用户*和*iTunes Connect用户*
- 账号邮箱可以是随意编造
- ***该账号不能用来在正式的App Store上登录,只用于测试环境下***
测试账号的使用
- 清除测试设备的账号信息
- 在设备的"设置"里退出App Store账号(这能避免测试过程中真实账号被使用)
- 在Xcode中将App编到测试设备
- 在测试时,App会要求登录,这时候选择测试账号登录,完成交易
代码部分
购买流程
总的来说,交互分为三个阶段:
- 获取商品信息: app向App Store请求商品信息,并展示;
- 购买请求: 用户选择商品,由app向App Store请求购买;
- 交付商品: App Store处理支付请求,app交付商品。
!在Xcode中要加入StoreKit.framework
获取商品信息
- 从App Bundle或者自己的服务器上获取商品的ID
// Load the product identifiers fron ProductIds.plistNSURL *plistURL = [[NSBundle mainBundle] URLForResource:@"ProductIds" withExtension:@"plist"];NSArray *productIds = [NSArray arrayWithContentsOfURL:plistURL];
这里的product id就是在**iTunes Connect**中创建的应用内购买项目的ID。
- 将商品ID集合发给App Store(利用SKProductsRequest)
// Create a product request object and initialize it with our product identifiersSKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productIds]];request.delegate = self;// Send the request to the App Store[request start];
这里由StoreKit发起异步请求。
- 将App Store返回的商品信息展示(返回的商品用SKProduct表示)
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{ ...}
购买请求
- 向SKPaymentQueue添加一个购买请求
SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:product];[[SKPaymentQueue defaultQueue] addPayment:payment];
SKPaymentQueue会自动向App Sotre 提交购买请求。
- 给SKPaymentQueue添加监听器,该监听器实现了SKPaymentTransactionObserver协议
// Attach an observer to the payment queue[[SKPaymentQueue defaultQueue] addTransactionObserver:[StoreObserver sharedInstance]];
demo中是在App启动时就添加了监听器。 主要实现的方法是下面这个更新用的:
// Called when there are trasactions in the payment queue -(void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { for(SKPaymentTransaction * transaction in transactions) { switch (transaction.transactionState ) { ... // 购买成功 case SKPaymentTransactionStatePurchased: ... break; // 恢复交易 case SKPaymentTransactionStateRestored: ... break; // 购买失败 case SKPaymentTransactionStateFailed: ... break; default: break; } } } ```
Restore这种交易状态是恢复。如果有些人在iPhone上用一个账号购买了一个产品,那么在iPad上又下载了这个应用,就不需要重新购买了。通过Restore在App Store中检测你这个账号的购买记录,如果有购买记录存在,那就不用再次购买了,直接恢复,就会出现restoreTransaction。关于 商品恢复,请点击: 会打断app工作流,不应该每次启动时执行,应该让用户自己触发
交付商品
- 将购买成功的商品纪录保存,以便下次启动时用
- 调用SKPaymentQueue的
finishTransaction
方法
demo
- 点击下载demo
- 将工程target中的Bundle Identifier改成前面创建的App ID
- 在工程中的ProductIds.plist中添加前面在iTunes Connect中创建的商品ID
- 编译运行
参考
- In-App Purchase Programming Guide
- 详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
- iOS应用程序内购/内付费(一)
- iOS App提交指南(二)-协议、税务和银行业务
转载于:https://my.oschina.net/chicboi/blog/605651
IOS应用内购买App开发完整流程相关推荐
- iOS 应用内购买(In-App Purchase)之开发
iOS 应用内购买(In-App Purchase)之协议.税务和银行业务 使用IAP之前,需要签订协议,查看上面的链接. IAP开发 添加App内购项目 登录 iTunes Connect ,选择我 ...
- App项目设计开发完整流程
App项目设计开发完整流程 1. idea形成--APP项目雏形 一个APP项目的最初首先要确定项目整体方案,整个项目的规划,大体框架,做成文档展现出来,以便大家提意见和更好的改进.也就是说首先要确立 ...
- iOS应用内付费(IAP)开发步骤列表
iOS应用内付费(IAP)开发步骤列表 前两天和服务端同事一起,完成了应用内付费(以下简称IAP, In app purchase)的开发工作.步骤繁多,在此把开发步骤列表整理如下.因为只是步骤列表, ...
- SpringCloud电商项目开发完整流程
SpringCloud项目开发完整流程 一.新建前端Vue项目(管理后台) 先下载node.js Node官网 然后win+r,输入cmd打开命令行窗口,输入命令node -v,检测node是否安装成 ...
- 球鞋鉴定app开发制作流程
球鞋鉴定app开发,球鞋鉴定app开发制作流程.网上买鞋子不畏价钱贵,就怕买假鞋,尤其是这些自身喜爱又不太好买的限量鞋.而近几年来球鞋的受欢迎市场销售足够表明大家针对球鞋的喜爱.殊不知大家在购买球鞋的 ...
- 教育APP开发的流程
当今社会,随着互联网在不断地进步和发展,互联网产品逐渐增多,网站,APP,小程序公众号等等的产品也在不断地贴近我们的生活,可以通过这个产品解决我们的衣食住行,增加了我们的选择,现在越来越多的传统行业也 ...
- IOS应用程序发布到苹果APP STORE完整流程使用教程
参考: http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) htt ...
- [IOS之应用程序发布到苹果APP STORE完整流程]
OS 发布证书申请 目录 概述 一.事前准备 1.1 准备苹果帐号 1.2 进入证书申请界面 1.3 申请请求文件 1.3.1 钥匙串程序申请请求文件 1.3.2 保存请求文件设置 1.3.3 保存 ...
- iOS 应用内购买基础教程 swift篇
应用内购买基础教程 原文地址http://www.raywenderlich.com/105365/in-app-purchases-tutorial-getting-started 更新日志:本教程 ...
最新文章
- ThreadPoolExecutor源码解析(二)
- 生命银行怎么样_银行双职工家庭现状实录
- 作者:张丽丽(1984-),女,中国科学院计算机网络中心助理研究员
- Flutter从零到∞学习笔记
- AppStore下载Xcode的文件
- 《区块链技术指南》笔记
- 用WPS2000制作勾股定理教学课件(转)
- flashfxp链接Linux
- PDF转CAD怎么弄?可以尝试一下这两种方法
- visual_studio2013、vs2013下载
- 如何画出频谱图 matlab
- 博弈:唯冠和苹果的iPad商标案之争
- python绘制折线图怎么样填充空白颜色_两条折线图之间填充颜色
- 北德克萨斯大学计算机系,美国北德克萨斯大学计算机科学与工程系主任Barrett Bryant访问昆明理工大学...
- linux内核irq,linux kernel的中断子系统之(四):High level irq event handler
- 建设工程管理系统(二)
- 移动WEB学习 - 字体图标、平面转换、渐变
- Firefox设置谷粉搜搜为默认搜索引擎的方法
- iptable中文学习文档
- ssh-agent与ssh-sshd,开启ssh服务
热门文章
- Android图片添加水印图片并把图片保存到文件存储
- Keil5.15使用GCC编译器编译STM32工程
- mysql5.6 rpm安装配置
- ERROR Error loading vue.config.js ERROR Error Command failed git describe --always报错可能的原因
- VBA - 粘贴为数值型
- 化繁为简——分解复杂的SQL语句
- word2016 表格标尺偏移问题
- java web: 上午 org.apache.catalina.core log 信息: 将servlet[***]标记为不可用/或者XXX资源不可用
- 凯悦250家店数据外泄 多家高端酒店存安全漏洞
- 从《战狼2》看吴京:选对方向、做对事