【发布时间】:2011-06-08 13:06:23
【问题描述】:
我正在尝试将应用内购买添加到我的 iPhone 应用中。但是当我运行我的应用程序或尝试购买商品时,我的应用程序崩溃并显示下一个错误:
警告:无法读取 /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;
@end
StorePurchase.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];
我希望有人可以帮助我解决这个问题...
【问题讨论】:
标签: iphone objective-c xcode in-app-purchase