iOS應(yīng)用內(nèi)置付費(fèi) ris'In App Purchase總結(jié)
In App Purchase屬于iPhone SDK3.0的新特性,用于在應(yīng)用程序中購(gòu)買付費(fèi)道具,增加新功能,訂閱雜志。是應(yīng)用程序除了植入廣告外的另一種取得收益的方式。
雖然Apple的官方文檔已經(jīng)對(duì)In App Purhcase這一特性做了比較詳盡的解釋,但就某些細(xì)節(jié)方面還是需要編程人員進(jìn)行嘗試和推敲,今天我就為大家就In App Purchase做一剖析,以此拋磚引玉。
In App Purchase的基本流程
1.登陸你的Apple開(kāi)發(fā)者帳號(hào)(http://developer.apple.com/iphone)
2.創(chuàng)建一個(gè)新的Apple ID或是選用一個(gè)已存在的Apple ID,點(diǎn)擊Config,啟用In App Purchase功能。
3.創(chuàng)建develop(用于沙盒測(cè)試)和distribution(用于發(fā)布)的profile,創(chuàng)建時(shí)選擇剛才創(chuàng)建的Apple ID。
4.編寫你的應(yīng)用程序(如何在應(yīng)用程序中實(shí)現(xiàn)可以參考in app purchase的官方文檔)
5.將你的應(yīng)用提交到App Store.如果你的應(yīng)用程序還沒(méi)有完成只是需要測(cè)試,你可以在upload選項(xiàng)卡中選擇upload your binary later,或者在提交后self reject你的應(yīng)用,以免你的應(yīng)用進(jìn)入Apple的審核階段。
6. 現(xiàn)在你可以為你的應(yīng)用程序添加需要購(gòu)買的東西了,在iTunes Connect中選擇Manage Your In App Purchases,然后選擇你的應(yīng)用程序,開(kāi)始添加你的購(gòu)買物,Product ID是以后進(jìn)行purchase操作的唯一識(shí)別,相當(dāng)于主鍵,而且一旦添加后即使刪除了以后也不允許再次使用這一ID(官方建議使用域名的命名模式 com.companyname.appname.productid)。Type共有三種選擇:Non-Consumable(永久消費(fèi)) Subscription(訂閱) Consumable(可重復(fù)購(gòu)買)。請(qǐng)勾選Cleared for Sale,如果不勾選,在測(cè)試時(shí)會(huì)返回invaild product id。填寫好完整的商品信息后如果你的應(yīng)用程序還未發(fā)布需要測(cè)試請(qǐng)選擇submint with binary,否則請(qǐng)勾選submit now。
7.如果你需要測(cè)試你的purchase功能,upload你的應(yīng)用程序,綁定商品到你的應(yīng)用程序。
8.安裝你的debug版本的應(yīng)用程序到你的測(cè)試機(jī)器上進(jìn)行測(cè)試。
In App Purchase的注意點(diǎn)
1.確保你所用來(lái)創(chuàng)建Profile的Apple ID啟用了In App Purchase功能。
2.確保你的Apple ID的identifier中沒(méi)有*。
3.確保你的bundle ID和你的Apple ID的identifier一致。
4.確保你的product ID是唯一的。
5.確保你在應(yīng)用程序中所請(qǐng)求的product ID與你在iTunes Connect里添加的一致。
6.確保你勾選了Clear for Sale。
7.在測(cè)試的時(shí)候你可能需要等待你的商品添加入Apple的測(cè)試沙盒,這個(gè)過(guò)程可能需要幾個(gè)小時(shí)。
8.在你第一次上傳應(yīng)用程序的時(shí)候,確保勾選了需要綁定至該應(yīng)用程序的商品列表。
9.確保你是在SDK3.0以上編寫的。
ECPurchase的使用
ECPurchase是我封裝了purchase的內(nèi)在邏輯,調(diào)用簡(jiǎn)單方便,如果你不想根據(jù)文檔再自己寫purchase功能,那么ECPurchase適合你。
1.在App Delegate中添加Observer
- [[ECPurchase shared] addTransactionObserver];
2.設(shè)置ECPurchase的product delegate(產(chǎn)品列表代理),transaction delegate(購(gòu)買結(jié)果代理),驗(yàn)證方式
- [[ECPurchase shared] setProductDelegate:self];
- [[ECPurchase shared] setTransactionDelegate:self];
- [[ECPurchase shared] setVerifyRecepitMode:ECVerifyRecepitModeiPhone];
3.請(qǐng)求商品列表
- [[ECPurchase shared] requestProductData:identifiers];
實(shí)現(xiàn)代理函數(shù)繪制UI
- -(void)didReceivedProducts:(NSArray *)products;
4.購(gòu)買商品
- [[ECPurchase shared] addPayment:proIdentifier];
5.確認(rèn)結(jié)果
如果不需要收據(jù)認(rèn)證實(shí)現(xiàn)代理函數(shù)
- -(void)didFailedTransaction:(NSString *)proIdentifier;
- -(void)didRestoreTransaction:(NSString *)proIdentifier;
- -(void)didCompleteTransaction:(NSString *)proIdentifier;
否則實(shí)現(xiàn)代理函數(shù)
- -(void)didCompleteTransactionAndVerifySucceed:(NSString *)proIdentifier;
- -(void)didCompleteTransactionAndVerifyFailed:(NSString *)proIdentifier withError:(NSString *)error;