繁体   English   中英

应用内购买二进制文件由于iOS7中的应用程序崩溃而被拒绝

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM