向我的应用添加分析后,我发现很多用户尝试在我的应用中购买产品时遇到错误。并非所有失败。
。我所有用户中的.03%达到错误我的.002%用户成功购买了该产品
我很难调试,因为当我使用不同的设备和不同的Apple帐户进行测试时,购买始终会成功。
[可以找到0个SKProducts(它们必须没有互联网吗?),或者当他们尝试购买时,交易记录为SKPaymentTransactionStateFailed的错误事件将被调用。
我的问题是,我应该如何进行调试?未购买产品的正常用户百分比是多少(可能是他们的iCloud设置不正确,或者是付款被拒)。我仍然可以从IAP获得相对正常的收入,因此很显然它对某些人有用。我是否真的由于错误而错过了所有这些购买,还是发生了其他事情?
我的购买代码如下所示。我正在使用一个名为IAPHelper的pod。我非常怀疑pod是问题所在,因为我将其切换出并获得了相同的结果。
- (void)makePurchase {
SKProduct* product =[[IAPShare sharedHelper].iap.products objectAtIndex:0];
[[IAPShare sharedHelper].iap buyProduct:product
onCompletion:^(SKPaymentTransaction* trans){
if(trans.error){
[self showErrorPurchasing:trans.error];
} else if(trans.transactionState == SKPaymentTransactionStatePurchased) {
[[IAPShare sharedHelper].iap provideContentWithTransaction:trans];
[self purchaseSucceeded];
} else if(trans.transactionState == SKPaymentTransactionStateFailed) {
[self showErrorPurchasing:trans.error];
} else if(trans.transactionState == SKPaymentTransactionStateDeferred) {
[self hideHud];
} else if(trans.transactionState == SKPaymentTransactionStateRestored) {
[self purchaseSucceeded];
}
}];
}
谢谢
我无法直接回答您的问题,但是就代码而言,这可能会有所帮助。当你做
SKProduct* product =[[IAPShare sharedHelper].iap.products objectAtIndex:0];
objectAtIndex
将在数组为空时崩溃。测试阵列以确保其具有乘积,或使用firstObject
,然后测试firstObject
是否为nil
。所以总而言之
SKProduct * product = [... firstObject];
if ( product )
{
... your code ...
}
else
{
... unable to read products / no connection ...
}