Apple应用内购买。如何拉出可用的产品?

时间:2014-07-30 15:48:37

标签: ios objective-c

我有一个课程,我建议用户购买应用内购买。如果用户点击"购买"我正在尝试启动购买流程。但我不知道从哪里获得他们应该购买的产品对象。

我有这样的方法:

- (IBAction)makePurchase:(id)sender
{    
    [[PlanIAPHelper sharedInstance] buyProduct:product];
}

但我在哪里以及如何拉动产品对象?

2 个答案:

答案 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
   }
 }