内购——应用内购买
通过苹果应用程序商店有三种主要赚钱的方式:
直接收费(与国内大部分用户的消费习惯相悖)
广告
O2O->Online推广&Offline交易,闭环
不要砍功能,增加内容,而不是增加功能
内购:应用程序本身的增值产品,游戏装备,应用程序中增值功能同样可以内购
第三方支付:跟应用程序无关的
内购:三(苹果)七(开发商)开
提示:
要做好游戏&应用,一定要研究心理,要研究哲学
人人都是产品经理
内购的五种产品类别
非消耗品(Nonconsumable)一旦购买,终身拥有
指的是在游戏中一次性购买并拥有永久访问权的物品或服务。非消耗品物品可以被用户再次下载,并 且能够在用户的所有设备上共享
消耗品(Consumable),买了就用,用了就没
消耗品购买不可被再次下载,根据其特点,消耗品不能在用户的设备之间跨设备使用,除非自定义服 务在用户的账号之间共享这些信息
以下三种类别在iBooks中使用,目前iBooks不支持大陆市场
ISBN:每本书的一个ID
免费订阅(Freesubscriptions)
自动续费订阅(Auto-renewingsubscriptions)
非自动续费订阅(Nonrenewingsubscriptions)
内购流程
添加StoreKit框架
要使用内购,需要导入StoreKit框架
内购的常用方法
请求有效的产品代号集合
购买指定产品
验证购买(在购买完成之后,验证)
恢复购买(针对非消耗品)
请求有效产品集合
//
1) 实例化产品请求
SKProductsRequest
*request = [[SKProductsRequest
alloc]initWithProductIdentifiers:identifiers];
//
2) 设置代理
[request
setDelegate:self];
//
3) 启动请求
[request
start];
提示:
1. 实例化请求时,必须指定有效的identifiers集合,之所以如此处理,主要是为了确保提交的内购商品真的通过了苹果的审批,处于可用状态!
2. 要想获取到准确的可用产品集合,需要通过代理方法实现
-(void)productsRequest:(SKProductsRequest*)request didReceiveResponse:(SKProductsResponse*)response
3. 越狱用户无法测试内购,但是可以购买
购买产品
1. 内购的交易过程是通过SKPaymentTransactionObserver监控的,因此需要为IAPHelper添加交易观察者:
// 添加交易观察者对象
[[SKPaymentQueuedefaultQueue]addTransactionObserver:sharedInstance];
2. 由于发起交易需要使用SKProduct对象,因此需要使用字典记录所有可用的商品
NSMutableDictionary*_productsDict;
交易队列回调方法
-(void)paymentQueue:(SKPaymentQueue*)queue updatedTransactions:(NSArray*)transactions
{
for(SKPaymentTransaction*transactionintransactions) {//购买完成
if(transaction.transactionState==SKPaymentTransactionStatePurchased)
{
NSLog(@"购买完成%@",transaction.payment.productIdentifier);
[queuefinishTransaction:transaction];
}elseif(transaction.transactionState==SKPaymentTransactionStateFailed)
{
if(transaction.error.code!=SKErrorPaymentCancelled)
{
NSLog(@"交易失败:%@",transaction.error.localizedDescription);
}
}
}
}
恢复购买
[[SKPaymentQueuedefaultQueue]restoreCompletedTransactions];
购买数据记录问题——系统偏好
[[NSUserDefaultsstandardUserDefaults]setBool:isPurchasedforKey:productId];
[[NSUserDefaultsstandardUserDefaults]synchronize];
广告简介
在苹果的广告市场上有两套系统
-展现,程序只要嵌入广告即可
-发布
广告的展现
-广告的展现内容,是由苹果根据应用程序的关键字,分类,上架地区等综合评定后自动推送的
-应用程序无需关心
广告收益三七开
添加iAd.framework框架
添加ADBannerView视图,并设置代理方法
广告条加载完成之前最好隐藏
- (void)bannerViewDidLoadAd:(ADBannerView*)banner {
self.bannerBottomConstraint.constant=20.0;
[UIViewanimateWithDuration:0.5animations:^{
[self.viewlayoutIfNeeded];
}];
NSLog(@"加载广告成功");
}
- (void)bannerView:(ADBannerView*)banner didFailToReceiveAdWithError:(NSError*)error {
NSLog(@"加载广告失败%@",error);
}