iOS应用内购买和订阅

真的很简单。 看一下下面的代码。

让我们来看看它。 一些关键概念是:

SKPaymentQueue保留所有事务以进行进一步处理的队列

SKProduct :在Itunes中声明的产品与所有可用信息联系在一起

SKPayment :购买产品的意图

SKPaymentTransaction :有关SKProduct的事件

SKProductRequest :请求获取有关提供产品ID的SKProducts的信息

SKProductResponse :包含所需产品的响应。 它由两个列表组成:产品和invalidProductIdentifiers。 第一个将包含成功获取的SKProducts,第二个将包含未能与SKProduct相关的所有标识符。 如果您获得无效的标识符,这是一个故障排除列表,可以帮助您。

  • 确保合同,税务和银行信息已完成
  • 确保正确拼写ProductID
  • 确保AppID是显式的(没有通配符(*))
  • 确保配置文件是正确的配置文件
  • 确保在产品说明中启用了待售清算选项
  • 确保产品处于批准状态
  • 确保不拒绝对App Store的最后一次App评论

现在,首先,通过以下几行,您可以轻松地创建一个SKProductRequest。

  let request = SKProductsRequest(productIdentifiers:productIDs) 
request.delegate =自我
request.start()

由于以下方法是回调,因此请确保实现SKProductsRequestDelegate。

  func productsRequest(_请求:SKProductsRequest,did接收响应:SKProductsResponse) 

在那里,您将获得适用于您的应用程序的所有SKProducts。 要进行购买并创建SKPayment。

 让付款= SKPayment(产品:产品) 
  SKPaymentQueue.default()。add(付款) 

确保在允许用户进行购买之前,始终要获取产品。 这些SKProducts将在其中局部化价格,因此您应该显示它。 这样可以确保您始终将应用程序中的数据始终保持最新,因为应用程序中的价格错误可能会导致Apple将其从App Store中删除。

您可能还会在流程中注意到“ 外部事件”部分。 交易可以在您的应用程序外部发生。 假设您的用户在系统设置中更改了其订阅类型,或者您的延期交易获得了用户父母的批准,那么除非您期望它们,否则您将无法告知。 因此,始终在AppDelegate中,在您的应用程序开始时,将该应用程序订阅到PaymentQueue。 这样,您将确保您不会错过任何事件。

现在,有时该帐户将无法使用。 通常,在首次购买后,您的控制台中会出现“无法连接到iTunes”错误。 Apple似乎偶尔会尝试根据真实iTunes验证您的帐户,否则,将完全使您的帐户无效。 因此,要解决此问题,只需继续并创建一个新的。 要爱苹果!

另外 ,沙盒服务器内部的时间移动速度更快,因此您只需等待几分钟即可续订。

包装全部

如果继续进行,则应该能够测试您的应用程序。 完成所有繁琐的工作后,剩下的就是让您解锁应用程序中的内容,并确保找到最合适的方法来吸引新用户试用您提供的服务,因为这只是成功的一半。 使订阅在技术上正常工作与在现实生活中工作不同。 但这是另一篇文章的主题。 祝您生意顺利!