2013-04-29 53 views
0

我有三個應用程序的應用程序購買。一年多以來,第一個工作正常。我有這個例程:在應用程序購買崩潰偶爾

-(void)purchaseProUpgrade{ 
    SKPayment *payment = [SKPayment paymentWithProductIdentifier: inAppProductId]; 

    if ([SKPaymentQueue canMakePayments]) [[SKPaymentQueue defaultQueue] addPayment:payment]; 
    else [self purchaseFailedWithError:nil]; 
} 

但paymentWithProductIdentifier已折舊。因此,在接下來的兩個應用程序我把它改爲(代碼的其餘部分是相同的):

-(void)purchaseProUpgrade{ 
SKPayment *payment =[SKPayment paymentWithProduct: self.upgradeProduct]; 

    if ([SKPaymentQueue canMakePayments]) [[SKPaymentQueue defaultQueue] addPayment:payment]; 
    else [self purchaseFailedWithError:nil]; 
} 

其中「upgradeProduct」是由

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{ 
    NSArray *products = response.products; 
    if([products count]>0) self.upgradeProduct = products[0]; 

    // the user is warned if upgradeProduct not is set 
} 

// upgradeProduct is declared as Strong and I am using ARC. 

這正常在沙箱中,即使設置我試圖通過跳轉到購買視圖,取消購買等來挑動它。如果我從應用商店購買我的應用,它會起作用。由於有銷售登記,我似乎也爲大多數用戶工作。

但是,我幾乎每天都收到崩潰報告,說[[SKPaymentQueue defaultQueue] addPayment:payment]已經與'無效的產品標識符:(null)'一起墜毀。在某些情況下,似乎人們已經崩潰,立即重新啓動應用程序,並試圖再次購買和崩潰。

任何輸入表示讚賞。

回答

相關問題