內購——應用內購買
通過蘋果應用程序商店有三種主要賺錢的方式:
? ? ? 直接收費(與國內大部分用戶的消費習慣相悖)
? ? ? 廣告
? ? ? ? ? ? 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);
}