iOS应用程序开发以内购

  • 内购简介
  • 配置iTunes Connect
  • iOS客户端开发工做

1、内购简介html

1⃣️经过苹果应用程序商店有三种主要赚钱的方式:
–直接收费(与国内大部分用户的消费习惯相悖,若是直接收费,不要设置为6元)
–广告(下降用户体验,在android系统很是多,在苹果系统很是少)
–内购
2⃣️分类
•非消耗品(Nonconsumable)
–指的是在游戏中一次性购买并拥有永久访问权的物品或服务。非消耗品物品能够被用户再次下载,而且可以在用户的全部设备上使用
•消耗品(Consumable)
–专为支持可消耗的物品或服务设计的,消耗品购买不可被再次下载,根据其特色,消耗品不能在用户的设备之间跨设备使用,除非自定义服务在用户的帐号之间共享这些信息
•如下三种类别在iBooks中使用,目前iBooks不支持大陆市场
–免费订阅(Free subscriptions)
–自动续费订阅(Auto-renewing subscriptions)
–非自动续费订阅(Nonrenewing subscriptions)

2、配置iTunes Connect
1⃣️建立本身的应用(无需累诉,没有应用如何内购)
2⃣️建立应用内付费项目
 
以后设置好价格和Product ID以及购买介绍和截图便可,这里的Product ID是须要记住的,后面开发的时候须要。
3⃣️添加sandbox付费的测试用户
4⃣️填写相关的税务,银行,联系人信息

3、iOS客户端开发
这幅图很清晰的解释了内购的整个流程,主要包括如下步骤(但愿你们认真看这幅图的细节,来理解内购的流程)
•请求有效的产品代号集合
•购买指定产品
•验证购买
•恢复购买
1⃣️请求有效的产品代号集合
// 1) 实例化产品请求
SKProductsRequest *request = [[SKProductsRequest alloc]initWithProductIdentifiers:identifiers];
// 2) 设置代理
[request setDelegate:self];

// 3) 启动请求
[request start];

提示:android

1. 实例化请求时,必须指定有效的identifiers集合,之因此如此处理,主要是为了确保提交的内购商品真的经过了苹果的审批,处于可用状态!ios

2. 要想获取到准确的可用产品集合,须要经过代理方法实现服务器

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response网络

3. 越狱用户没法测试内购,可是能够购买app

2⃣️购买产品ide

1. 内购的交易过程是经过SKPaymentTransactionObserver监控的,所以须要为IAPHelper添加交易观察者:测试

// 添加交易观察者对象
[[SKPaymentQueue defaultQueue]addTransactionObserver:sharedInstance];

2. 因为发起交易须要使用SKProduct对象,所以须要使用字典记录全部可用的商品ui

NSMutableDictionary         *_productsDict;

3.交易队列回调方法编码

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions) {
        // 购买完成
            if (transaction.transactionState == SKPaymentTransactionStatePurchased) {
            NSLog(@"购买完成 %@", transaction.payment.productIdentifier);

            [queue finishTransaction:transaction];
        } else if (transaction.transactionState == SKPaymentTransactionStateFailed) {
            if (transaction.error.code != SKErrorPaymentCancelled) {
                NSLog(@"交易失败: %@", transaction.error.localizedDescription);
            }
        }
    }
}

 3⃣️验证购买(一般交由服务器来作)

  1. 接收ios端发过来的购买凭证。
  2. 判断凭证是否已经存在或验证过,而后存储该凭证。
  3. 将该凭证发送到苹果的服务器验证,并将验证结果返回给客户端。
  4. 若是须要,修改用户相应的会员权限。

考虑到网络异常状况,服务器的验证应该是一个可恢复的队列,若是网络失败了,应该进行重试。

与苹果的验证接口文档在这里。简单来讲就是将该购买凭证用Base64编码,而后POST给苹果的验证服务器,苹果将验证结果以JSON形式返回。

苹果AppStore线上的购买凭证验证地址是https://buy.itunes.apple.com/verifyReceipt ,测试的验证地址是:https://sandbox.itunes.apple.com/verifyReceipt

4⃣️恢复购买——恢复用户购买过的全部商品

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
相关文章
相关标签/搜索