App以非标准方式启动In App Purchase流程

kil*_*ilj 1 in-app-purchase ios

Apple拒绝了我的申请,理由如下:"app以非标准方式启动In App Purchase流程.

在用户点击确定后,应用程序首先要求登录,而不是首先显示项目描述并要求登录,这是不正确的顺序."

我检查了我的代码,但它与我的其他应用程序相同,其中应用程序内购买工作正常.然后我更改了包ID和productID(从我的其他应用程序设置包ID),它工作正常!

我觉得这很奇怪.有人有这个问题吗?你能帮助我吗?

UPD:

在调试器中,我看到此错误:

"完成交易期间出现意外异常:无法完成购买交易"

它发生在代码中:

    @try 
    {
        [[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 
    }
    @catch (NSException *exception) 
    {
        NSLog(@"Unexpected exception during finish transaction: %@", exception);
    }
Run Code Online (Sandbox Code Playgroud)

Cap*_*uff 7

您的错误消息似乎表明您正在尝试完成状态为的事务SKPaymentTransactionStatePurchasing.

您应首先检查交易状态,[transaction transactionState]以确保交易是:

SKPaymentTransactionStateFailed

SKPaymentTransactionStatePurchased

SKPaymentTransactionStateRestored

有关进一步说明,请参阅Apple文档:

您的应用程序应从收到付款队列通知的事务观察器中调用此方法.调用finishTransaction:对事务将其从队列中删除.只有在成功处理完交易并解锁用户购买的功能后,您的应用程序才应调用finishTransaction:

调用finishTransaction:对SKPaymentTransactionStatePurchasing状态中的事务抛出异常.