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