原地址:http://www.cocoachina.com/bbs/read.php?tid=38555&page=1

In App Purchase属于iPhone SDK3.0的新特性,用于在应用程序中购买付费道具,增加新功能,订阅杂志。是应用程序除了植入广告外的另一种取得收益的方式。
虽然Apple的官方文档已经对In App Purhcase这一特性做了比较详尽的解释,但就某些细节方面还是需要编程人员进行尝试和推敲,今天我就为大家就In App Purchase做一剖析,以此抛砖引玉。

In App Purchase的基本流程
1.登陆你的Apple开发者帐号(http://developer.apple.com/iphone
2.创建一个新的Apple ID或是选用一个已存在的Apple ID,点击Config,启用In App Purchase功能。
3.创建develop(用于沙盒测试)和distribution(用于发布)的profile,创建时选择刚才创建的Apple ID。
4.编写你的应用程序(如何在应用程序中实现可以参考in app purchase的官方文档)
5.将你的应用提交到App Store.如果你的应用程序还没有完成只是需要测试,你可以在upload选项卡中选择upload your binary later,或者在提交后self reject你的应用,以免你的应用进入Apple的审核阶段。
6.现在你可以为你的应用程序添加需要购买的东西了,在iTunes Connect中选择Manage Your In App Purchases,然后选择你的应用程序,开始添加你的购买物,Product ID是以后进行purchase操作的唯一识别,相当于主键,而且一旦添加后即使删除了以后也不允许再次使用这一ID(官方建议使用域名的命名模式com.companyname.appname.productid)。Type共有三种选择:Non-Consumable(永久消费) Subscription(订阅) Consumable(可重复购买)。请勾选Cleared for Sale,如果不勾选,在测试时会返回invaild product id。填写好完整的商品信息后如果你的应用程序还未发布需要测试请选择submint with binary,否则请勾选submit now。
7.如果你需要测试你的purchase功能,upload你的应用程序,绑定商品到你的应用程序。
8.安装你的debug版本的应用程序到你的测试机器上进行测试。

In App Purchase的注意点
1.确保你所用来创建Profile的Apple ID启用了In App Purchase功能。
2.确保你的Apple ID的identifier中没有*。
3.确保你的bundle ID和你的Apple ID的identifier一致。
4.确保你的product ID是唯一的。
5.确保你在应用程序中所请求的product ID与你在iTunes Connect里添加的一致。
6.确保你勾选了Clear for Sale。
7.在测试的时候你可能需要等待你的商品添加入Apple的测试沙盒,这个过程可能需要几个小时。
8.在你第一次上传应用程序的时候,确保勾选了需要绑定至该应用程序的商品列表。
9.确保你是在SDK3.0以上编写的。

ECPurchase的使用
ECPurchase是我封装了purchase的内在逻辑,调用简单方便,如果你不想根据文档再自己写purchase功能,那么ECPurchase适合你。

1.在App Delegate中添加Observer
[[ECPurchase shared] addTransactionObserver];

2.设置ECPurchase的product delegate(产品列表代理),transaction delegate(购买结果代理),验证方式
[[ECPurchase shared] setProductDelegate:self];
[[ECPurchase shared] setTransactionDelegate:self];
[[ECPurchase shared] setVerifyRecepitMode:ECVerifyRecepitModeiPhone];

3.请求商品列表
[[ECPurchase shared] requestProductData:identifiers];
实现代理函数绘制UI
-(void)didReceivedProducts:(NSArray *)products;

4.购买商品
[[ECPurchase shared] addPayment:proIdentifier];

5.确认结果
如果不需要收据认证实现代理函数
-(void)didFailedTransaction:(NSString *)proIdentifier;
-(void)didRestoreTransaction:(NSString *)proIdentifier;
-(void)didCompleteTransaction:(NSString *)proIdentifier;
否则实现代理函数
-(void)didCompleteTransactionAndVerifySucceed:(NSString *)proIdentifier;
-(void)didCompleteTransactionAndVerifyFailed:(NSString *)proIdentifier withError:(NSString *)error;

ECPurchase.zip (85 K) 下载次数:2376

ris'In App Purchase总结的更多相关文章

  1. [IPA]IOS In App Purchase(内购)验证

    参考我之前的笔记 苹果内购笔记,在客户端向苹果购买成功之后,我们需要进行二次验证. 二次验证 IOS在沙箱环境下购买成功之后,向苹果进行二次验证,确认用户是否购买成功. 当应用向Apple服务器请求购 ...

  2. In App Purchase Statuses

    In App Purchase StatusesThe following are the available states that can be assigned to your in app p ...

  3. In App Purchase翻译

    一.In App Purchase概览 Store Kit代表App和App Store之间进行通信.程序将从App Store接收那些你想要提供的产品的信息,并将它们显示出来供用户购买.当用户需要购 ...

  4. AppStore苹果应用支付开发(In App Purchase)翻译

    http://yarin.blog.51cto.com/1130898/549141 一.In App Purchase概览 Store Kit代表App和App Store之间进行通信.程序将从Ap ...

  5. unity3d 嵌入iOS的 In App Purchase 应用程序内购买

    Unity做东西是快,但是有些功能是需要额外开发的,比如 IAP (In App Purchase,应用程序内购买) 还好unity提供了灵活的扩展功能,允许嵌入原生代码来做一些unity未实现的功能 ...

  6. In App Purchase

    参考文章1,参考文章2,参考文章3, 参考文章3 一.Product 分类:      Consumables: 应该在应用里被消费掉的.(Coupon, 生命数)      Non-Consumab ...

  7. C# [IPA]IOS In App Purchase(内购)验证(asp.net 版本)

    之前没有做过IOS 内购服务器验证这块,所以找了不少参考资料,网上大多php和java版本,然后自己搞了一个C#版本,希望能给大家一些参考,下面步入正题 在客户端向苹果购买成功之后,我们需要进行二次验 ...

  8. IAP Store Kit Guide(中文)

    IAP Store Kit Guide(中文) 一.In App Purchase概览 Store Kit代表App和App Store之间进行通信.程序将从App Store接收那些你想要提供的产品 ...

  9. 首次发布App,In-App Purchase 无法submit for review 问题的解决方案

    原地址:http://blog.csdn.net/blucenong/article/details/7819195 一个IDP首次create app 然后首次create new IAP的时候,我 ...

随机推荐

  1. Git.Framework 框架随手记--ORM条件组合

    在上一篇<Git.Framework 框架随手记--ORM新增操作>中简单记录了如何对数据进行删除和修改,其用法都非常简单,在文章中提到了Where()方法,本文将详述Where() 等条 ...

  2. c#简单自定义异常处理日志辅助类

    简单写了一个错误日志记录辅助类,记录在此. Loghelper类 using System; using System.Collections.Generic; using System.IO; us ...

  3. 第二十三课:jQuery.event.add的原理以及源码解读

    本课主要来讲解一下jQuery是如何实现它的事件系统的. 我们先来看一个问题: 如果有一个表格有100个tr元素,每个都要绑定mouseover/mouseout事件,改成事件代理的方式,可以节省99 ...

  4. 第一章 : javaScript框架分类及主要功能

      从内部架构和理念划分,目前JavaScript框架可以划分为5类. 第一种是以命名空间为导向的类库或框架,如果创建一个数组用new Array(),生成一个对象用new Object(),完全的j ...

  5. AngularJS开发指南5:AngularJS表达式详解

    AngularJS表达式类似Javascript的代码片段,通常在数据绑定中用到,写在双大括号中,如:{{表达式}}.表达式是用$parse方法来处理的. 下面是一些合法的AngularJS表达式 1 ...

  6. overlay-scrollbar-js

    function doAccept() { var div = $('#shadowbox .legal-gate-cont') var con = $('#shadowbox .html') var ...

  7. 【HDU 2577】How to Type

    题意 (我做了这题才知道caps lock 锁定大小写后,按一下shift键可以输入相反的大小写.) 这题就是给你只有大小写字母的字符串,求最少多少次按键盘.最后caps lock 必须是关闭的. 分 ...

  8. 网络包处理工具NetBee

    What is NetBee? NetBee is a new library intended for several types of packet processing, such as pac ...

  9. uva 10723 Cyborg Genes(LCS变形)

    题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=107450#problem/C 题意:输入两个字符串,找一个最短的串,使得输入的两个 ...

  10. RONOJ 6今明的预算方案(有依赖的背包)

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行”.今 ...