使用 StoreKit 时获取 Apple UIAlertController 完成

Posted

技术标签:

【中文标题】使用 StoreKit 时获取 Apple UIAlertController 完成【英文标题】:Get Apple UIAlertController completion when using StoreKit 【发布时间】:2015-10-12 10:09:01 【问题描述】:

我正在实现一个支付视图控制器,每当 StoreKit 获取一些数据时,我想在其中呈现一个加载视图(微调器)。我在单击“购买”按钮时添加加载视图,并在调用 func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) 时将其删除。

问题是 loadingView 仍在运行,而“登录 iTunes Store”(以及其他)仍然显示。有什么方法可以获取/覆盖 Apple 生成的 UIAlertControllers 的完成块?

【问题讨论】:

【参考方案1】:

我可以建议使用MKStoreKit吗?

我在使用 StoreKit 时遇到了问题,但继续使用 MKStoreKit 编写这样的代码。

let notification = NSNotificationCenter.defaultCenter()
func purchase() 
    MKStoreKit.sharedKit().initiatePaymentRequestForProductWithIdentifier("YOURIDENTIFIER")
    self.notification.addObserverForName(kMKStoreKitProductPurchaseFailedNotification, object: nil, queue: NSOperationQueue()) 
        (note) -> Void in
        // It failed for some reason
        self.hideLoadingView() 
    

    self.notification.addObserverForName(kMKStoreKitProductPurchasedNotification, object: nil, queue: NSOperationQueue()) 
        (note) -> Void in
        // It was purchased
        self.hideLoadingView() 
    

    self.notification.addObserverForName(kMKStoreKitProductPurchaseDeferredNotification, object: nil, queue: NSOperationQueue()) 
        (note) -> Void in
        // It was canceled 
        self.hideLoadingView()         
    


func hideLoadingView() 
    // Do whatever you need to

让事情变得更容易管理

【讨论】:

以上是关于使用 StoreKit 时获取 Apple UIAlertController 完成的主要内容,如果未能解决你的问题,请参考以下文章

StoreKit 框架 - 更改 iTunes 商店以进行应用内购买时未调用回调

iOS15之StoreKit 2

如何使用 AppStoreReceiptUrl 在 Xamarin.iOS 中验证 StoreKit 交易

iOS Auto Renewable Subscription 最低功能和 StoreKit 之外的免费试用

连接到 Apple Music

StoreKit.framework 从库目录中删除