我開發了一款免費遊戲,但提供了應用內購買。這在測試中工作得很好,但自遊戲發佈(第一次初次發佈)以來,試圖購買任何IAP導致崩潰。我使用Ray Wenderlich IAP tutorial作爲此代碼的基礎。在應用程序購買失敗的生產應用程序
當在模擬器上運行時,在嘗試獲取產品列表時出現 - didFailWithError
處理程序,錯誤的錯誤代碼爲2
。我甚至不能用模擬器來測試IAP。
當運行在手機上的實際生產應用(從商店)的崩潰日誌指出以下幾點:
0 CoreFoundation 0x2e9cfe8b 0x2e8fb000 + 872075
1 libobjc.A.dylib 0x38ccd6c7 objc_exception_throw + 38
2 CoreFoundation 0x2e9cfdcd 0x2e8fb000 + 871885
3 StoreKit 0x310e69d9 0x310e4000 + 10713
4 60 Seconds 0x000b77df -[IAPHelper buyProduct:] (IAPHelper.m:53)
5 60 Seconds 0x000b7091 -[UpgradeViewController Buy5000Squares] (UpgradeViewController.m:199)
6 UIKit 0x3118a55f 0x3114a000 + 263519
所以我知道它正確接收的產品列表,以及對ITC的名字時,雙重檢查是正確的(實際上我知道他們是因爲我總是用商店發送給我的內容填充我的內部產品代碼)
所以真正的問題是怎麼回事?爲什麼它會崩潰,爲什麼我的模擬器甚至不讓我嘗試測試它?
的代碼一些有用比特
-(void)Buy5000Squares
{
if (![SKPaymentQueue canMakePayments])
{
// show alert box
return;
}
[[SecondsIAPHelper sharedInstance] buyProduct:squares5000Product];
}
- (void)buyProduct:(SKProduct *)product {
NSLog(@"Buying %@...", product.productIdentifier);
SKPayment * payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
編輯
原來,根據本question/answer的XCode 5防止測試在應用內購買在模擬器(I開發了這個上的XCode的GM這種情況很令人驚訝),但它至少爲該部分提供瞭解釋。仍不能確定爲什麼它wouldnt我的設備上工作,但