I have uploaded app on appstore.its working fine on io6 but when I uploaded on apple store its rejected due to application crash in iOS7.When I am run it on xcode 4.5 its working fine and I got purchase alertview message but I could not get it on xcode5 and ios7.here is my source code.
- (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
As rckeones says, it will be difficult to track this down without a symbolicated crash report, but given the information we have, these lines intrigue me:
12 DubstepSlots 0x0017cdce 0x90000 + 970190
13 StoreKit 0x31a0cdc8 __NotifyObserverAboutChanges
14 CoreFoundation 0x2f23b656 CFArrayApplyFunction + 34
15 StoreKit 0x31a0cd64 -[SKPaymentQueue _no
It implies to me that the SKPaymentQueue is calling out to its observers (one being something in your DubstepSlots project), in which it is crashing.
Looking at your code, you are adding this class as an observer:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
That method has the signature
- (void)addTransactionObserver:(id<SKPaymentTransactionObserver>)observer
Which means that your self
object must conform to the SKPaymentTransactionObserver protocol. Luckily, you have the required method - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
in your code. I'm pretty sure that this is the method where it is crashing. But if you set a breakpoint at the beginning of this method and step through, I'm sure you'll find out what is wrong.
I don't know for sure, but it seems like the lines
8 libobjc.A.dylib 0x39b7e77e objc_exception_throw + 246
9 CoreFoundation 0x2f30b8e2 -[NSObject(NSObject)
indicate that you might be calling a method that does not exist on an object in that method.
Without the symbolicated report, it is hard to judge what exactly is going wrong (we don't even know what line its crashing on!) That should at least get you started in finding where things are going wrong.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.