我有一个课程,我建议用户购买应用内购买。如果用户点击"购买"我正在尝试启动购买流程。但我不知道从哪里获得他们应该购买的产品对象。
我有这样的方法:
- (IBAction)makePurchase:(id)sender
{
[[PlanIAPHelper sharedInstance] buyProduct:product];
}
但我在哪里以及如何拉动产品对象?
答案 0 :(得分:2)
您必须获取应用内购买商店标识符。你可以:
您无法使用StoreKit框架加载它们,因此您必须在某个时候查看iTunes Connect。
使用商店标识符,您可以制作SKProductsRequest
。
SKProductsRequest* request = [[SKProductsRequest alloc] initWithProductIdentifiers:identifiers];
request.delegate = self;
[request start];
然后,您可以在委托对象中处理响应:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray * skProducts = response.products;
for (SKProduct * skProduct in skProducts)
{
NSLog(@"Found product: %@ %@ %0.2f",
skProduct.productIdentifier,
skProduct.localizedTitle,
skProduct.price.floatValue);
[[PlanIAPHelper sharedInstance] buyProduct:skProduct];
}
}
在这种情况下很难说PlanIAPHelper
做了什么,但是产品的代码肯定不存在。
以下链接将帮助您了解应用内购买如何在iOS上运行:
答案 1 :(得分:1)
您肯定需要在应用中的某个位置(例如,在plist中)保留您在iTunes Connect中声明的产品标识符。从那里开始,在视图控制器中实现将显示可用产品的SKProductsRequestDelegate protocol。一些可能的代码片段是:
// Put your product identifiers in an NSSet and perform the appropriate product request (i.e in viewDidLoad)
NSSet *productIdentifiersForPurchase = [NSSet setWithObjects:@"product_id_1",@product_id_2",...nil];
SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiersForPurchase];
productRequest.delegate = self;
[productRequest start];
并实现委托方法,例如
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
if (!response.products) {
NSLog(@"Error: Could not find matching products");
return;
}
for (SKProduct *product in response.products) {
// Do something with the retrieved products
}
}