iphone sdk应用内购买错误

时间:2012-08-30 09:40:10

标签: iphone ios in-app-purchase

我在我的应用程序中实现了应用程序内购买。我需要在我的应用程序中使用应用程序内购买产品。为此,我用我的iTunes a / c添加了我的产品app_id。

这是我的代码参考,

代码:

ViewController.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;

DetailViewController.m

NSMutableArray *appidArray;

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

现在我的控制台窗口从我的网络服务接收所有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:]:无法识别的选择器发送到实例0x9154ad0'”

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

1 个答案:

答案 0 :(得分: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。您可以在网络上的“管理InApp购买”部分

中找到您的产品标识符

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

SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];