[英]in-App-Purchase-Binary Rejected due to application crash in iOS7
我已經在appstore上上傳了app,它在io6上可以正常工作,但是當我在蘋果商店上載時,由於iOS7中的應用程序崩潰而被拒絕了。當我在xcode 4.5上運行它時,它可以正常工作,並且我收到了購買alertview消息,但是我無法獲得它在xcode5和ios7上。這是我的源代碼。
- (IBAction)buy {
activityIndicator.hidden = NO;
SKMutablePayment *payment = [[[SKMutablePayment alloc] init] autorelease];
payment.productIdentifier = @"com.test.app.V3";
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
if ([SKPaymentQueue canMakePayments]) {
NSLog(@"Parental-controls are disabled");
SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"com.test.app.V3"]];
productsRequest.delegate = self;
[productsRequest start];
}
else {
NSLog(@"Parental-controls are enabled");
}
}
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
SKProduct *validProduct = nil;
int count = [response.products count];
if (count > 0) {
validProduct = [response.products objectAtIndex:0];
}
else if (!validProduct) {
NSLog(@"No Products Available");
}
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
//// Stuff Here ////
break;
case SKPaymentTransactionStatePurchased:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
//// Stuff Here ////
activityIndicator.hidden = YES;
int coins1 = [money.text intValue];
coins1 += 1500;
money.text = [NSString stringWithFormat:@"%d.00", coins1];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasBalance"];
[[NSUserDefaults standardUserDefaults] setObject:money.text forKey:@"Balance"];
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"ThankYou"];
[self exitIAP];
break;
case SKPaymentTransactionStateRestored:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
if (transaction.error.code != SKErrorPaymentCancelled) {
NSLog(@"An Error Encountered");
}
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
//// Stuff Here ////
activityIndicator.hidden = YES;
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"StopThankYou"];
[self exitIAP];
break;
}
}
}
- (void)exitIAP {
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
}
appreciate for any kind of help.
thanks in advance
crash report
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Triggered by Thread: 0
Last Exception Backtrace:
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x3a13d1fc __pthread_kill + 8
libsystem_pthread.dylib 0x3a1a6a2e pthread_kill + 54
2 libsystem_c.dylib 0x3a0edff8 abort + 72
3 libc++abi.dylib 0x3941ccd2 abort_message + 70
4 libc++abi.dylib 0x394356e0 default_terminate_handler() + 248
5 libobjc.A.dylib 0x39b7e91e _objc_terminate() + 190
6 libc++abi.dylib 0x394331c4 std::__terminate(void (*)()) +
7 libc++abi.dylib 0x39432a18 __cxa_throw + 112
8 libobjc.A.dylib 0x39b7e77e objc_exception_throw + 246
9 CoreFoundation 0x2f30b8e2 -[NSObject(NSObject)
10 CoreFoundation 0x2f30a1c6 ___forwarding___ + 702
11 CoreFoundation 0x2f2594d4 _CF_forwarding_prep_0 + 20
12 DubstepSlots 0x0017cdce 0x90000 + 970190
13 StoreKit 0x31a0cdc8 __NotifyObserverAboutChanges
14 CoreFoundation 0x2f23b656 CFArrayApplyFunction + 34
15 StoreKit 0x31a0cd64 -[SKPaymentQueue _no
16 StoreKit 0x31a0d646 -[SKPaymentQueue
17 StoreKit 0x31a0dd1c -[SKPaymentQueue
18 StoreKit 0x31a0d80a __45-[SKPaymentQueue
19 libdispatch.dylib 0x3a061d18
20 libdispatch.dylib 0x3a061d04 _dispatch_client_callout + 20
22 CoreFoundation 0x2f2d2814
23 CoreFoundation 0x2f2d10e8 __CFRunLoopRun + 1296
24 CoreFoundation 0x2f23bc22 CFRunLoopRunSpecific + 518
25 CoreFoundation 0x2f23ba06 CFRunLoopRunInMode + 102
26 GraphicsServices 0x33f3c27e GSEventRunModal + 134
27 UIKit 0x31adf044 UIApplicationMain + 1132
28 DubstepSlots 0x000a2aaa 0x90000 + 76458
29 DubstepSlots 0x00092674 0x90000 + 9844
Thread 1 name: Dispatch queue: com.apple.libdispatch-manager
Thread 1:
0 libsystem_kernel.dylib 0x3a12a83c kevent64 + 24
1 libdispatch.dylib 0x3a06b210 _dispatch_mgr_invoke + 228
2 libdispatch.dylib 0x3a06af96
Thread 2:
0 libsystem_kernel.dylib 0x3a13dc7c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x3a1a3dc6 _pthread_wqthread + 306
2 libsystem_pthread.dylib 0x3a1a3c80 start_wqthread + 4
Thread 3 name: WebThread
Thread 3:
0 libsystem_kernel.dylib 0x3a12aa8c mach_msg_trap + 20
1 libsystem_kernel.dylib 0x3a12a888 mach_msg + 44
2 CoreFoundation 0x2f2d27be __CFRunLoopServiceMachPort +
3 CoreFoundation 0x2f2d0ee4 __CFRunLoopRun + 780
4 CoreFoundation 0x2f23bc22 CFRunLoopRunSpecific + 518
5 CoreFoundation 0x2f23ba06 CFRunLoopRunInMode + 102
6 WebCore 0x3742b266 RunWebThread(void*) + 414
7 libsystem_pthread.dylib 0x3a1a5c1a _pthread_body + 138
8 libsystem_pthread.dylib 0x3a1a5b8a _pthread_start + 98
9 libsystem_pthread.dylib 0x3a1a3c8c thread_start + 4
Thread 4 name: Dispatch queue: com.apple.root.low-priority
Thread 4:
0 libsystem_kernel.dylib 0x3a12aadc semaphore_wait_trap + 8
1 libdispatch.dylib 0x3a069428 _dispatch_semaphore_wait_slow + 172
2 CFNetwork 0x2eecc6e0 CFURLConnectionSendSynchronousRequest + 264
3 Foundation 0x2fc947ae +[NSURLConnection
4 Foundation 0x2fc648c6 -[NSData(NSData)
5 Foundation 0x2fc647f6 +[NSData(NSData)
6 DubstepSlots 0x000f5ea0 0x90000 + 417440
7 DubstepSlots 0x000f5d4e 0x90000 + 417102
8 libdispatch.dylib 0x3a061d18 _dispatch_call_block_and_release + 8
9 libdispatch.dylib 0x3a068d6c _dispatch_root_queue_drain + 216
10 libdispatch.dylib 0x3a068f54 _dispatch_worker_thread2 + 52
11 libsystem_pthread.dylib 0x3a1a3dbc _pthread_wqthread + 296 12 libsystem_pthread.dylib 0x3a1a3c80 start_wqthread + 4
正如rckeones所說,沒有符號化的崩潰報告將很難追蹤到這一點,但是鑒於我們掌握的信息,這些行引起了我的興趣:
12 DubstepSlots 0x0017cdce 0x90000 + 970190
13 StoreKit 0x31a0cdc8 __NotifyObserverAboutChanges
14 CoreFoundation 0x2f23b656 CFArrayApplyFunction + 34
15 StoreKit 0x31a0cd64 -[SKPaymentQueue _no
在我看來,這意味着SKPaymentQueue正在呼喚它的觀察者(其中一個是您的DubstepSlots項目中的東西),在其中它崩潰了。
查看您的代碼,您正在將該類添加為觀察者:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
該方法具有簽名
- (void)addTransactionObserver:(id<SKPaymentTransactionObserver>)observer
這意味着您的self
對象必須符合SKPaymentTransactionObserver協議。 幸運的是,您具有必需的方法- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
在您的代碼中。 我很確定這是崩潰的方法。 但是,如果您在此方法的開頭設置斷點並逐步執行,我相信您會發現問題所在。
我不確定,但似乎
8 libobjc.A.dylib 0x39b7e77e objc_exception_throw + 246
9 CoreFoundation 0x2f30b8e2 -[NSObject(NSObject)
表示您正在調用的方法可能不存在於該方法的對象上。
沒有帶符號的報告,很難判斷出什么地方出了問題(我們甚至不知道它崩潰的路線是什么!)這至少應該使您開始尋找問題出在哪里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.