簡體   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