1

我在我的应用程序中实现了应用内购买。我需要在我的应用程序中使用应用内购买购买产品。为此,我将我的产品 app_id 添加到我的 iTunes 空调中。

这是我的代码参考,

代码:

视图控制器.m

NSMutableArray *featuredappidArray; 


- (void)viewDidLoad 
{
[super viewDidLoad];
featuredappidArray=[[NSMutableArray alloc]init];

 }

-(void)parseRecentPosts:(NSString*)responseString
{
    NSString *app_store_id = [NSString stringWithFormat:@"%@",[post   objectForKey:@"app_store_id"]];
            NSLog(@"Recent Post app_store_id: %@",app_store_id);
            [featuredappidArray addObject:app_store_id];
            indexvalue=ndx;
 }

 - (void)buttonTapped:(UIButton *)sender
 {

     [detailview Receivedappidurl:featuredappidArray idx:indexvalue];

 }

DetailViewController.h

-(void)Receivedappidurl:(NSMutableArray*)recentappidArray idx:(int)index;

细节视图控制器.m

NSMutableArray *appidArray;

-(void)Receivedappidurl:(NSMutableArray*)recentappidArray idx:(int)index
{
      NSLog(@"recentappidArray:%@",recentappidArray);
      appidArray=recentappidArray;
}

现在我的控制台窗口从我的 Web 服务接收所有 app_id。

我在我的项目中添加了应用内购买所需的类,例如 IAPHelper、InAppRageIAPHelper、MBProgressHUD、Reachability 类。

-(IBAction)purchaseButton
{

   NSLog(@"appidarray:%@",appidArray);
   NSLog(@"pdt index:%d",productIndex);
   NSLog(@"APPLe indentifier:%@",[[appidArray objectAtIndex: productIndex] objectForKey:  @"app_store_id"]);
    [InAppRageIAPHelper sharedHelper].productIndex = productIndex;
    [[InAppRageIAPHelper sharedHelper] buyProductIdentifier:[[appidArray objectAtIndex: productIndex] objectForKey: @"app_store_id"]];

    self.hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
    _hud.labelText = @"Buying Book...";
    [self performSelector:@selector(timeout:) withObject:nil afterDelay:60*5];
}

在这里,当我点击购买按钮时,我的应用程序崩溃并出现以下错误,“由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因:'-[__NSCFString objectForKey:]: unrecognized selector sent to instance 0x9154ad0'”

我参考了很多教程。如何使用这个购买?请帮我解决这个问题。任何帮助将不胜感激。提前致谢。

4

1 回答 1

1

这使您的代码崩溃

[[appidArray objectAtIndex: productIndex] objectForKey:  @"app_store_id"]

这很可能是因为[appidArray objectAtIndex: productIndex]返回一个字符串,而不是字典。

第一步:您需要像这样从商店加载商品:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
SKProductsRequest *productsRequest = [[[SKProductsRequest alloc] initWithProductIdentifiers:yourProductIdentifiers autorelease]; 
productsRequest.delegate = self;
[productsRequest start]; 

PS。您可以在网络上的“管理应用内购买”部分中找到您的产品标识符

完成此操作后,您将收到一份产品清单,并购买其中任何一种:

SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
于 2012-08-30T09:46:11.087 回答