这是我第一次与应用程序购买工作,我不知道我做错了什么。该SKProductsRequest
是可以正常使用,但是当试图与SIGABRTIAP导致SIGABRT
购买,应用程序崩溃在AppDelegate中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
MKStoreObserver *observer = [[MKStoreObserver alloc] init];
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];
return YES;
}
ViewController.m
- (void)viewDidLoad
{
if ([SKPaymentQueue canMakePayments])
{
[self requestProductData];
}
else {
}
[super viewDidLoad];
}
- (IBAction)buyButton:(id)sender
{
SKPayment *payment = [SKPayment paymentWithProduct:kMyFeatureIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];
//When this button is touched the app crashes
}
- (void)requestProductData
{
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:kMyFeatureIdentifier]];
request.delegate = self;
[request start];
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
NSArray *myProduct = response.products;
if (myProduct.count) {
SKProduct *thisProduct = [myProduct objectAtIndex:0];
productTitle.text = [NSString stringWithFormat:@"%@", thisProduct.localizedTitle];
productPrice.text = [NSString stringWithFormat:@"For only $%@", thisProduct.price];
}
}
MKStoreObserver.m
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[ self completeTransaction: transaction ];
break;
case SKPaymentTransactionStateFailed:
[ self failedTransaction: transaction ];
break;
case SKPaymentTransactionStateRestored:
[ self restoreTransaction: transaction ];
break;
default:
break;
}
}
}
- (void)completeTransaction: (SKPaymentTransaction *)transaction
{
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void)failedTransaction: (SKPaymentTransaction *)transaction
{
if (transaction.error.code != SKErrorPaymentCancelled)
{
// Optionally, display an error here.
}
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void)restoreTransaction: (SKPaymentTransaction *)transaction
{
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
当buyButton按下是当应用程序崩溃
这?
GNU GDB 6.3.50-20050815(苹果版GDB-1708)(周五09月16日六点56分50秒UTC 2011)版权所有2004自由软件基金会,公司GDB 是免费软件,由GNU覆盖通用公共许可证,并欢迎您在某些 条件下更改和/或分发它的副本。输入“show copying”查看条件。对于GDB,绝对不存在 。请输入“显示保修”以了解详情。 这个GDB被配置为“--host = i386-apple-darwin
--target = arm-apple-darwin”.tty/dev/ttys000 target remote-mobile /tmp/.XcodeGDBRemote-4242-20 Switching to remote-macosx protocol mem 0x1000 0x3fffffff cache mem 0x40000000 0xffffffff none mem 0x00000000 0x0fff none [切换到进程7171线程0x1c03] [切换到 进程7171线程0x1c03] sharedlibrary apply-load-rules全部 2011-12-12 21 :39:11.082 inAppTest [171:707] - [__ NSCFSet productIdentifier]:无法识别的选择器发送到实例0x134e70 2011-12-12 21:39:11.091 inAppTest [171:707] ***终止应用程序由于 未捕获异常“NSInvalidArgumentExce ption”,原因: ' - [__ NSCFSet 产品识别]:无法识别的选择发送到实例0x134e70'
***第一掷调用堆栈:(0x344298bf 0x346791e5 0x3442cacb 0x3442b945 0x34386680 0x3251b2ed 0x2c9d 0x34383435 0x377ed9eb 0x377ed9a7 0x377ed985 0x377ed6f5 0x377ee02d 0x377ec50f 0x377ebf01 0x377d24ed 0x377d1d2d 0x30c04df3 0x343fd553 0x343fd4f5 0x343fc343 0x3437f4dd 0x3437f3a5 0x30c03fcd 0x37800743 0x2a41 0x29d8)终止 叫做抛出异常(GDB)
但什么的崩溃日志,我的好男人? – CodaFi
什么是崩溃日志? – user975134