我正在尝试在我的iPhone应用程序中添加In。但是,当我运行我的应用程序或试图购买一个项目时,我的应用程序会崩溃,并显示下一个错误:
/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.3 (8J2)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib警告:无法读取
符号(未找到文件)。(gdb)
我把StoreKit代码放在一个NSObject类中,看下面的代码。
StorePurchase.h
#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>
@interface StorePurchase : NSObject <SKProductsRequestDelegate, SKPaymentTransactionObserver> {
}
- (void)loadStore;
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
- (void)purchase;
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response;
@endStorePurchase.m
#import "StorePurchase.h"
@implementation StorePurchase
- (void)loadStore {
if ([SKPaymentQueue canMakePayments]) {
NSLog(@"Parental-controls are disabled");
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"testding2"]];
request.delegate = self;
[request start];
}
else {
NSLog(@"Parental-controls are enabled");
}
}
- (void)purchase {
SKPayment *payment = [SKPayment paymentWithProductIdentifier:@"testding2"];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
SKProduct *validProduct = nil;
int count = [response.products count];
if (count > 0) {
validProduct = [response.products objectAtIndex:0];
NSLog(@"Products found, joepie!!!");
} else if (!validProduct) {
NSLog(@"No products available");
}
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
break;
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
if (transaction.error.code != SKErrorPaymentCancelled) {
NSLog(@"An error encounterd");
}
else {
NSLog(@"Cancelled!");
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
}
}
}
@end我将该方法称为"loadStore“,如下所示:
StorePurchase *classStorePurchase = [[StorePurchase alloc] init];
[classStorePurchase loadStore];我希望有人能帮我.
发布于 2011-06-08 13:12:11
您添加了StoreKit框架引用了吗?
发布于 2014-09-01 12:25:47
您可以避免一般的UIAlertView
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex并将代码放在
if ([SKPaymentQueue canMakePayments]) {
...
...
..
[tmp show];
}直接在你用来管理每一张照片的程序上。
跟着这个
- (BOOL)canMakePurchases
{
return [SKPaymentQueue canMakePayments];
}
- (void)purchaseMyProduct:(SKProduct*)product{
if ([self canMakePurchases]) {
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
else{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
@"Purchases are disabled in your device" message:nil delegate:
self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
[alertView show];
}
}
-(IBAction)purchase:(id)sender{
[self purchaseMyProduct:[validProducts objectAtIndex:0]];
purchaseButton.enabled = NO;
}诚挚的问候
https://stackoverflow.com/questions/6279154
复制相似问题