【问题标题】:SKProductsRequestDelegate never gets calledSKProductsRequestDelegate 永远不会被调用
【发布时间】:2014-04-02 16:44:05
【问题描述】:

我浏览了论坛,但似乎仍然无法理解为什么我的 SKProductsRequestDelegate 从未被调用过。感谢您的帮助。

- (void)getProductID:(PortViewController *)viewController {
    _homeViewController = viewController;
    //retrieve product info from iTunes connect;
    if ([SKPaymentQueue canMakePayments]) {
        SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:self.productID]];
        //NSLog(@"Description: %@", request.);
        NSLog(@"ProductID: %@", self.productID);
        NSLog(@"Title: %@", self.title);
        [request start];

    } else
        _productDescription.text = @"Please enable in app purchase in your settings";
}

#pragma mark _
#pragma mark SKProductsRequestDelegate

-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
    NSArray *products = response.products;

    NSLog(@"Recieved Product Response %@",response.products);
    if (products.count !=0) {
        _product = products[0];
        _buyButton.enabled = YES;
        _productTitle.text = _product.localizedTitle;
        _productDescription.text = _product.localizedDescription;

    } else {
        _productTitle.text = @"Product Not Found";
    }
    products = response.invalidProductIdentifiers;

    for (SKProduct *product in products) {
        NSLog(@"Product not Found: %@", product);
    }

}

- (void)requestDidFinish:(SKRequest *)request {
    NSLog(@"purchase request finished");
}

- (void)request:(SKRequest *)request didFailWithError:(NSError *)error {
    NSLog(@"%@", [error description]);
}

【问题讨论】:

标签: ios xcode delegates


【解决方案1】:

这可能是因为你没有设置它的委托。

确保将委托添加到您的 .h

@interface ViewController : UIViewController <SKProductsRequestDelegate>

然后在你的 .m 中设置委托

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:self.productID]];
request.delegate = self;

【讨论】:

    【解决方案2】:

    只需设置request.delegate = self

    祝你好运

    【讨论】:

      【解决方案3】:

      试试这个;

      - (void)getProductID:(PortViewController *)viewController {
          _homeViewController = viewController;
          //retrieve product info from iTunes connect;
          if ([SKPaymentQueue canMakePayments]) {
              SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:self.productID]];
              request.delegate = self
              NSLog(@"ProductID: %@", self.productID);
              NSLog(@"Title: %@", self.title);
              [request start];
      
          } else
              _productDescription.text = @"Please enable in app purchase in your settings";
      }
      

      【讨论】:

      • @user2720747 如果我的回答对您有帮助,那么您应该接受我的回答。
      猜你喜欢
      • 2012-10-27
      • 2013-10-12
      • 2012-03-27
      • 2013-08-29
      • 2013-11-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2015-10-15
      相关资源
      最近更新 更多