InAppPurchase總結


一.簡介

1.功能
IAP可用於支付 內容,功能,服務,訂閱。不能用來支付 實物,實體服務,虛擬貨幣,帶有色情/仇恨/暴力/賭博等等性質的內容或服務

 

2.商品按類型可分為:
Consumable  每次都收費(消耗品)


Non-consumable  付費一次(非消耗品)


Auto-renewable subscriptions  自動同步訂閱(服務有效期間內自動同步其他機器上的訂閱)
Free subscriptions  免費訂閱 僅用於 Newsstand-enabled apps.


Non-renewing subscriptions  非自動同步訂閱,由開發者決定其他機器是否更新

 

3.交易模式
Built-in Product Model 內建product模式,這種方式寫死了可以購買哪些物品,提供什么服務
Server Product Model 服務器提供product模式,這種方式就是比較靈活的通過自己的服務器控制提供哪些商品,購買后提供哪些東西

 

二.程序流程


1.程序添加
1)添加一個不帶通配符的APP ID,在itunesconnect中添加程序
2)設置iap,添加商品(包括id,名稱,詳細描述,截圖等)
3)添加測試帳號


2.程序內代碼編寫
1)檢查用戶是否關閉了程序內付費[SKPaymentQueue canMakePayments]
2)根據給定的標識集合取得商品列表
3)根據用戶選擇的商品顯示支付頁面


附:相關類

SKProduct    商品
// 本地化描述
@property(nonatomic, readonly) NSString *localizedDescription
// 本地化標題
@property(nonatomic, readonly) NSString *localizedTitle
// 價格
@property(nonatomic, readonly) NSDecimalNumber *price
// 地域
@property(nonatomic, readonly) NSLocale *priceLocale
// 標識符
@property(nonatomic, readonly) NSString *productIdentifier

 

SKProductsRequest 請求商品列表
@property(nonatomic, assign) id<SKProductsRequestDelegate> delegate
- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers

SKProductsRequestDelegate 請求商品列表委托
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response

SKProductsResponse    商品列表返回
// 無效產品id列表
@property(nonatomic, readonly) NSArray *invalidProductIdentifiers
// 產品列表
@property(nonatomic, readonly) NSArray *products

 

SKPayment    付款
// 產品標識
@property(nonatomic, copy, readonly) NSString *productIdentifier
// 數量
@property(nonatomic, readonly) NSInteger quantity
@property(nonatomic, copy, readonly) NSData *requestData
// 生成一個payment
+ (id)paymentWithProduct:(SKProduct *)product

 

SKPaymentQueue 付款隊列
@property(nonatomic, readonly) NSArray *transactions
// 檢測是否可以內支付
+ (BOOL)canMakePayments
+ (SKPaymentQueue *)defaultQueue

// payment 必須有一個產品id並且quantity>0,否則異常,添加后就會依次顯示支付窗口
- (void)addPayment:(SKPayment *)payment
// 添加一個委托
- (void)addTransactionObserver:(id < SKPaymentTransactionObserver >)observer
// 結束交易
- (void)finishTransaction:(SKPaymentTransaction *)transaction
- (void)removeTransactionObserver:(id < SKPaymentTransactionObserver >)observer
// 查看有哪些已經restored的交易
- (void)restoreCompletedTransactions

 

SKPaymentTransaction    交易流程
@property(nonatomic, readonly) NSError *error
// 如果是restored的流程,他有個原始流程
@property(nonatomic, readonly) SKPaymentTransaction *originalTransaction
@property(nonatomic, readonly) SKPayment *payment
// 交易日期
@property(nonatomic, readonly) NSDate *transactionDate
// 標識
@property(nonatomic, readonly) NSString *transactionIdentifier
// 回執
@property(nonatomic, readonly) NSData *transactionReceipt
// 狀態:成功,失敗,進行中,restored
@property(nonatomic, readonly) SKPaymentTransactionState transactionState

參考:http://iamgarlic.blogspot.com/2011/04/ios-in-app-purchase-1.html

http://iamgarlic.blogspot.com/2011/04/ios-in-app-purchase-2.html

 

 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM