Ios <;应用内购买>;如何直接生成产品

Ios <;应用内购买>;如何直接生成产品,ios,in-app-purchase,app-store-connect,Ios,In App Purchase,App Store Connect,最近我在做IAP。 如您所知,当您想要发送付款请求时,您应该致电 + (id)paymentWithProduct:(SKProduct *)product 但我发现获取产品的唯一方法是使用SKProductsRequest,有没有直接生成SKProduct的方法? 就像不推荐的一样 + (id)paymentWithProductIdentifier:(NSString *)identifier 事实上,我想要一个新的SKProduct对象,直接使用产品id BR,罗杰没有这样的机制。您必

最近我在做
IAP
。 如您所知,当您想要发送付款请求时,您应该致电

+ (id)paymentWithProduct:(SKProduct *)product
但我发现获取产品的唯一方法是使用
SKProductsRequest
,有没有直接生成
SKProduct
的方法? 就像不推荐的一样

+ (id)paymentWithProductIdentifier:(NSString *)identifier
事实上,我想要一个新的
SKProduct
对象,直接使用产品id


BR,罗杰

没有这样的机制。您必须获得苹果公司批准的应用程序内购买,并使用SKProductsRequest API检索定价信息。

我使用此功能购买产品,而无需从iTunes获取所有产品:

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

如果您想要创建一个用于单元测试的
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")
    }
}

您可以创建
SKMutablePayment
而不是
SKPayment

let payment=SKMutablePayment()
payment.productIdentifier=
SKPaymentQueue.default().add(付款)

如果可能的话,您就不需要在ITunesConnect中插入新产品,苹果也无法跟踪销售的产品。也许你可以将答案标记为正确,因为没有其他方法可以做到这一点——一种不符合苹果建议的黑客方式。