Wednesday, July 13, 2011

iOS In App Purchase 學習筆記 (3) : 如何從App Store取得商品資訊

在進入購買階段之前,
我們首先需要告訴使用者這個app提供了哪些商品(product)及這些商品的詳細功能描述.

Store Kit提供了統一的機制讓我們能從App Store獲得所需要的商品資訊.
步驟如下:
1. 產生一個SKProductsRequest的物件, 並且將我們想要取得的商品識別代號(product identifier)設定好.
2. 產生一個實作了SKProductsRequestDelegate的物件, 並將其註冊到SKProductsRequest物件身上.
3. 送出request
4. 當App Store收到這個request後, 它會將結果放在SKProductsResponse的物件中並且通知實作SKProductsRequestDelegate的物件


我們可以利用一個SKProductsRequest帶多個商品識別代號來查詢多筆商品資訊.
App Store會先將各別商品資訊包裝成SKProduct的格式再把它們放在SKProductsResponse裡.

以下是會用到的類別們:

SKProductsRequest

// 設定delegate
@property(nonatomic, assign) id delegate
// 設定一個或多個商品識別代號
- (id)initWithProductIdentifiers:(NSSet *)productIdentifiers


SKProductsRequestDelegate

// 繼承自SKProductsDelegate, 當request發生錯誤時會被呼叫
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error
// 繼承自SKProductsDelegate, 被呼叫即表示跟這個request相關的通訊已經結束
- (void)requestDidFinish:(SKRequest *)request
// 成功取得商品資訊
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response


SKProductsResponse

// 無效的產品識別代號
@property(nonatomic, readonly) NSArray *invalidProductIdentifiers
// 有效的商品資訊
@property(nonatomic, readonly) NSArray *products


App Store會將商品識別代號視為無效可能有以下幾個原因:
1. 商品識別代號拼錯
2. 商品被標示為無法販售
3. 在iTunes Connect上對商品的更動尚未被更新到App Store上

SKProduct

@property(nonatomic, readonly) NSString *productIdentifier
@property(nonatomic, readonly) NSString *localizedTitle
@property(nonatomic, readonly) NSString *localizedDescription
@property(nonatomic, readonly) NSLocale *priceLocale
@property(nonatomic, readonly) NSDecimalNumber *price


對於商品的多國語言設定需在iTunes Connect上完成.

No comments:

Post a Comment