2014-04-02 67 views
0

我已經通過論壇,並且仍然無法理解爲什麼我的SKProductsRequestDelegate永遠不會被調用。謝謝你的幫助。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]); 
} 
+0

[同樣的問題ANS] - > http://stackoverflow.com/questions/2923409/skproductsrequest-delegate-methods-are-never-called?rq=1 –

回答

0

只需設置request.delegate = self

好運

1

這可能是因爲你沒有設置其委託。

確保將委託添加到您的.h

@interface ViewController : UIViewController <SKProductsRequestDelegate> 

然後設置委託在您的m

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

試試這個;

- (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"; 
} 
+0

非常感謝 – user2720747

+0

歡迎您。 :) – Rashad

+1

@ user2720747如果我的回答對你有幫助,那麼你應該接受我的回答。 – Rashad