【问题标题】:<In App Purchase> how to generate a SKProduct directly<In App Purchase>如何直接生成SKProduct
【发布时间】:2012-10-16 22:44:02
【问题描述】:

最近我在 IAP 工作。 如您所知,当您要发送付款请求时,您应该调用

+ (id)paymentWithProduct:(SKProduct *)product

但我发现获取产品的唯一方法是使用SKProductsRequest,有没有办法直接生成SKProduct? 就像不推荐使用的一样,

+ (id)paymentWithProductIdentifier:(NSString *)identifier

事实是我想要一个新的SKProduct 直接使用产品 ID 的对象。

BR,罗杰

【问题讨论】:

  • 如果可以的话,您不需要向ITunesConnect 插入新产品,Apple 无法跟踪已售出的产品。也许您可以将答案标记为正确,因为没有其他方法可以做到这一点

标签: ios in-app-purchase app-store-connect


【解决方案1】:

您可以创建SKMutablePayment 而不是SKPayment

let payment = SKMutablePayment()
payment.productIdentifier = <#ProductIdentifier#>
SKPaymentQueue.default().add(payment)

【讨论】:

    【解决方案2】:

    如果您想创建一个SKProduct 用于单元测试,您可以扩展该类并设置标识符:

    extension SKProduct {
        convenience init(identifier: String, price: String, priceLocale: Locale) {
            self.init()
            self.setValue(identifier, forKey: "productIdentifier")
            self.setValue(NSDecimalNumber(string: price), forKey: "price")
            self.setValue(priceLocale, forKey: "priceLocale")
        }
    }
    

    【讨论】:

    • 一种不符合苹果建议的hacky方式。
    【解决方案3】:

    我用它来购买产品而不从 iTunes 获取所有产品:

      - (void)buyProductIdentifier:(NSString *)productIdentifier 
    {
        SKMutablePayment *payment = [[SKMutablePayment alloc] init] ;
        payment.productIdentifier = productIdentifier;
        [[SKPaymentQueue defaultQueue] addPayment:payment];
    }
    

    【讨论】:

      【解决方案4】:

      没有这样的机制。您必须让 Apple 批准您的应用内购买并使用 SKProductsRequest API 来检索定价信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-15
        • 2013-08-18
        • 2014-02-13
        • 2016-11-23
        • 2016-03-15
        • 2019-07-22
        • 1970-01-01
        相关资源
        最近更新 更多