UDN-企业互联网技术人气社区

板块导航

浏览  : 1319
回复  : 0

[其它] 开源了自己封装 Mac In-App Purchase 的 Swift 库: IAPHelper

[复制链接]
哥屋恩的头像 楼主
发表于 2016-10-24 18:29:39 | 显示全部楼层 |阅读模式
  相信做过的朋友都知道, Mac App Store 是个坑,而 In-App Purchase 则是坑中之坑…

  刚开始做 Mac 应用内支付时,看苹果的示例都是 OC 、而不是 Swift 的,于是偷懒直接用了 SwiftyStoreKit 确实省了不时间,但也确实有些坑。关键是,出现问题之后,都不知道是这个库本身的问题,还是 Apple 的问题。再加上很多朋友在 iPic 升级遇到的无法升级、无法恢复等等诡异的问题,实在是头大。

  在 iPic 1.2.0 新版中,痛定思痛,我还是决定啃啃 IAP 这个骨头。哪怕是踩坑,也要踩自己挖的坑,而不是掉进别人的…

  啃完之后,不敢说对 IAP 对多深的了解,但也足够来开发了。想着这样无趣的过程,第位开发者都要经历一遍,便觉得更无趣。于是,就把自己做的库 开源出来给大家用,取名 IAPHelper ,希望能节约大家一点点时间。

  ------------------- 好长的序 -------------------

  What's IAPHelper

  IAPHelper simply wraps the API of Apple's In-App Purchase using Swift. Very lightweight and easy to use.

  IAPHelper Usage

  Request Product List


  1.   var productIdentifiers = Set()

  2.   productIdentifiers.insert("product_id_1")

  3.   productIdentifiers.insert("product_id_2")

  4.   IAP.requestProducts(productIdentifiers) { (response, error) in

  5.   if let products = response?.products where !products.isEmpty {

  6.   // Get the valid products

  7.   } else if let invalidProductIdentifiers = response?.invalidProductIdentifiers {

  8.   // Some products id are invalid

  9.   } else if error?.code == SKErrorPaymentCancelled {

  10.   // User cancelled

  11.   } else {

  12.   // Some error happened

  13.   }

  14.   }
复制代码


  Purchase Product

  1.   IAP.purchaseProduct(productIdentifier, handler: { (productIdentifier, error) in

  2.   if let identifier = productIdentifier {

  3.   // The product of 'productIdentifier' purchased.

  4.   } else if error?.code == SKErrorPaymentCancelled {

  5.   // User cancelled

  6.   } else {

  7.   // Some error happened

  8.   }

  9.   })
复制代码


  Restore

  1.   IAP.restorePurchases { (productIdentifiers, error) in

  2.   if !productIdentifiers.isEmpty {

  3.   // Products restored

  4.   } else if error?.code == SKErrorUnknown {

  5.   // NOTE: if no product ever purchased, will return this error.

  6.   } else if error?.code == SKErrorPaymentCancelled {

  7.   // User cancelled

  8.   } else {

  9.   // Some error happened

  10.   }

  11.   }
复制代码


  ------------------- 尾巴 -------------------

  目前,这一库应用在我的 图床神器 iPic 中,主要在 macOS 10.11 和 10.12 (Sierra Beta 6) 中测试。

  可以明显的感觉, macOS 10.11 和 10.12 在逻辑细节上有不同。在今年的 WWDC 上, Apple 也说了秋季新的订阅模式会上线,相信 10.12 正式上线后,和 Beta 版还是会有些微的不同。没办法,在问题中长经验、继续改进呗。届时, IAPHelper 也会相应地更新。

  最后,希望 IAPHelper 别成你的坑…

原文作者:ITJason  来源:开发者头条
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部