博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
游戏中心-内购—应用内购买修改应用程序信息
阅读量:4597 次
发布时间:2019-06-09

本文共 3035 字,大约阅读时间需要 10 分钟。

1、•通过苹果应用程序商店有三种主要赚钱的方式:
–直接收费(与国内大部分用户的消费习惯相悖,如果直接收费,不要设置为6元)
–广告(降低用户体验,在android系统非常多,在苹果系统非常少)
–内购
 
 
2、内购的五种产品类别
•非消耗品(Nonconsumable)
–指的是在游戏中一次性购买并拥有永久访问权的物品或服务。非消耗品物品可以被用户再次下载,并且能够在用户的所有设备上使用
•消耗品(Consumable)
–专为支持可消耗的物品或服务设计的,消耗品购买不可被再次下载,根据其特点,消耗品不能在用户的设备之间跨设备使用,除非自定义服务在用户的账号之间共享这些信息
3、•以下三种类别在iBooks中使用,目前iBooks不支持大陆市场
–免费订阅(Free subscriptions)
–自动续费订阅(Auto-renewing subscriptions)
–非自动续费订阅(Nonrenewing subscriptions)
 
4、准备工作
 
5、消耗品定义
6、语言及测试用户信息
7、定义的商品
8、修改应用程序信息
9、内购流程
 
10、添加StoreKit框架
•要使用内购,需要导入StoreKit框架
 
11、内购的常用方法
•请求有效的产品代号集合
•购买指定产品
•验证购买
•恢复购买
12、请求有效产品集合

// 1) 实例化产品请求

SKProductsRequest *request = [[SKProductsRequest alloc]initWithProductIdentifiers:identifiers];

// 2) 设置代理

[request setDelegate:self];

 

// 3) 启动请求

[request start];

 

提示:

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

2. 要想获取到准确的可用产品集合,需要通过代理方法实现

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
 
13、购买产品

1. 内购的交易过程是通过SKPaymentTransactionObserver监控的,因此需要为IAPHelper添加交易观察者:

 

// 添加交易观察者对象

[[SKPaymentQueue defaultQueue]addTransactionObserver:sharedInstance];

 

2. 由于发起交易需要使用SKProduct对象,因此需要使用字典记录所有可用的商品

 

NSMutableDictionary         *_productsDict;

 14、交易队列回调方法

- (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) {

15、恢复购买——恢复用户购买过的所有商品

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];

 

16、验证购买

#define ITMS_PROD_VERIFY_RECEIPT_URL        @"https://buy.itunes.apple.com/verifyReceipt"

#define ITMS_SANDBOX_VERIFY_RECEIPT_URL     @"https://sandbox.itunes.apple.com/verifyReceipt"

17、验证购买(1)

// 1. 使用base64加密交易凭据

NSString *encodeStr = [transction.transactionReceipt base64EncodedString];

 

// 2. 建立验证请求

// 1) URL

NSURL *url = [NSURL URLWithString:ITMS_SANDBOX_VERIFY_RECEIPT_URL];

// 2) 建立请求

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0f];

 

// 1> 请求数据体

18、验证购买(2)

// 3. 发送同步请求

NSURLResponse *response = nil;

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];

 

// 4. 使用JSON解析返回数据

NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

[jsonDict writeToFile:@"/users/liufan9/Desktop/123.plist" atomically:YES];

 

if ([jsonDict[@"status"]integerValue] == 0) {

19、为IAPHelper增加块代码回调

•typedef void(^IAPCompletionResponseBlock)();
•typedef void(^IAPFailedResponseBlock)(NSString *info);
20、购买数据记录问题——系统偏好

[[NSUserDefaults standardUserDefaults]setBool:isPurchasedforKey:productId];

[[NSUserDefaults standardUserDefaults]synchronize];

 

 
 
 
 

转载于:https://www.cnblogs.com/changxs/p/3484879.html

你可能感兴趣的文章
H3C VLAN 配置
查看>>
BZOJ 1077: [SCOI2008]天平
查看>>
第一天
查看>>
团队冲刺第十天
查看>>
Gradle用户指南
查看>>
iOS审核策略重磅更新:Guideline 2.1批量拒审
查看>>
给 vue项目添加ESLint
查看>>
Swift3.0 功能一(持续更新)
查看>>
HexColor
查看>>
Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
查看>>
你会用swift创建复杂的加载动画吗(1)
查看>>
javabean转换为map对象
查看>>
CSS从入门到精通2.md
查看>>
【NOIP 2013】积木大赛
查看>>
HttpWebRequest调用WebService后台需要Session信息问题的解决办法
查看>>
SQL里的子查询
查看>>
Hdu5517 Triple
查看>>
vue 调用微信支付方法
查看>>
ABP创建应用服务
查看>>
混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...
查看>>