我在我的应用程序中实现了应用程序内购买。我需要在我的应用程序中使用应用程序内购买产品。为此,我用我的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'”
我提到了很多教程。如何用这个购买?请帮我解决这个问题。任何帮助将不胜感激。提前谢谢。
答案 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];