Unity 集成原生IOS IAP功能2——异常处理与调试

当IAP的功能实现了基本流程,还需要大部分的时间来处理异常操作。

连续多次点击购买

处理一:可以判断当前PaymentQueue中是否已经有了购买请求(是只当前未处理完成的)

        __block BOOL bFind = NO;
        [[[SKPaymentQueue defaultQueue] transactions] enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(SKPaymentTransaction* obj, NSUInteger idx, BOOL *stop) {
            if ([obj.payment.productIdentifier  isEqualToString:pID]) {
                
                *stop = YES;
                bFind = YES;
            }
        }];
        
        if (bFind == NO){
            NSLog(@"new Buying");
            SKPayment * payment = [SKPayment paymentWithProduct:product];
            [[SKPaymentQueue defaultQueue] addPayment:payment];
        }

处理二:UI也可以加入防止多次点击的处理,比如,转圈等待处理中。。。

网络异常

App启动后就没有联网

中间也要支持中间过程重新连接。

未完成购买流程

这种情况不太好模拟,目前找到了一个比较好模拟测试过程:

1. 可以在弹出购买框后,关闭当前Debug进程

2. 取消或者完成购买框。

3. 重新启动Debug进程,来调试,恢复购买的流程。这时可能收到以下几个消息:

SKPaymentTransactionStateFailed

SKPaymentTransactionStatePurchased

SKPaymentTransactionStatePurchasing(框一直不点击)

猜你喜欢

转载自blog.csdn.net/FeiBin2013/article/details/83542146