【问题标题】:Cancel event for [[SKPaymentQueue defaultQueue] restoreCompletedTransactions][[SKPaymentQueue defaultQueue] restoreCompletedTransactions] 的取消事件
【发布时间】:2019-10-26 08:37:52
【问题描述】:

Apple 发布了 StoreKit,当用户输入他/她的电子邮件和密码时,我们甚至无法收到任何关于取消事件的回调:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]

此事件不应与 在取消购买时按下取消相混淆。

我们感兴趣的事件是在尝试恢复交易时推动取消

对于用户按下取消,甚至按下 OK 按钮,没有回调。

您获得的唯一回调是来自服务器的信息返回,表明它是否成功。不可接受。

【问题讨论】:

    标签: objective-c storekit


    【解决方案1】:

    试试这个:

    @protocol SKPaymentTransactionObserver <NSObject>
    
    ....
    
    @optional
    
    // Sent when an error is encountered while adding transactions from the user's purchase history back to the queue.
    - (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
    
    
    @end
    

    【讨论】:

    • 如果有人想知道如何从 paymentQueue:restoreCompletedTransactionsFailedWithError: 中区分取消和连接问题,那么您应该查看 error.code。我注意到当我取消还原时出现错误代码 2,当还原期间出现连接问题时出现错误代码 -1009。这两个错误都包含相同的本地化描述:“无法连接到 iTunes Store”。我不确定其他错误代码。如果它是代码 2,我所做的是静默结束请求,否则显示一般错误消息。
    • 我必须补充一点,检查值 2 是不明智的,检查 developer.apple.com/library/ios/#documentation/StoreKit/… 中提供的错误代码会更安全,对于取消,您需要比较错误SKErrorPaymentCancelled 的代码。
    • ...现在恰好等于 2(在&lt;StoreKit/StoreKitDefines.h&gt; 定义的未命名枚举中的第三个索引),但当然这可能会改变。与SKErrorPaymentCancelled 比较似乎是最明智的做法。
    • 取消时收到错误代码 0 (SKErrorUnknown)。在此处发布新问题:stackoverflow.com/q/11537053/433373
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2011-05-08
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多