开源了自己封装 Mac In-App Purchase 的 Sw

作者: ITJason | 来源:发表于2016-08-31 00:32 被阅读776次

    相信做过的朋友都知道, 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

    var productIdentifiers = Set<ProductIdentifier>()
    productIdentifiers.insert("product_id_1")
    productIdentifiers.insert("product_id_2")
    
    IAP.requestProducts(productIdentifiers) { (response, error) in
        if let products = response?.products where !products.isEmpty {
            // Get the valid products
           
        } else if let invalidProductIdentifiers = response?.invalidProductIdentifiers {
            // Some products id are invalid
           
        } else if error?.code == SKErrorPaymentCancelled {
            // User cancelled
           
        } else {
            // Some error happened
        }
    }
    

    Purchase Product

     IAP.purchaseProduct(productIdentifier, handler: { (productIdentifier, error) in
        if let identifier = productIdentifier {
            // The product of 'productIdentifier' purchased.
             
        } else if error?.code == SKErrorPaymentCancelled {
            // User cancelled
             
        } else {
            // Some error happened
        }
    })
    

    Restore

     IAP.restorePurchases { (productIdentifiers, error) in
         if !productIdentifiers.isEmpty {
            // Products restored
           
         } else if error?.code == SKErrorUnknown {
            // NOTE: if no product ever purchased, will return this error.
           
         } else if error?.code == SKErrorPaymentCancelled {
            // User cancelled
           
         } else {
            // Some error happened
         }
    }
    

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

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

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

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

    相关文章

      网友评论

      • ITJason:目前尚未涉足 iOS 开发…
      • o1xhack:同求 ios 的iap啊啊啊啊啊啊啊
      • lvcloud:请问楼主哪里有swift iOS的IAP教程啊?苹果的范例代码都是OC的,为了做这个要回去学OC有点太蛋疼。网上搜到的swift IAP教程一个也不能用,也定位不到问题出在哪,这个坑我实在是迈不过去了,求指点迷津!
        ITJason:@lvcloud 总共都没几行代码,竟然还有 48 个报错,Swift 3 太可怕…确实,目前 IAPHelper 尚未适配 Swift 3;等适配了,我会更新到 GitHub 上的。
        lvcloud:@ITJason 呃,现在IAPHelper在xcode8中似乎完全不能运行,改了一晚上还有48个报错…… 官方文档仍然是老的oc版,好大坑。现在感觉学swift好像太激进了,Apple自己吹捧半天swift,却连文档都舍不得更新…… 不过找到一个可以用的教程,虽然不知道是哪个版本的swift,但是改一下就可以正常运行,起码看到一丝希望。
        如果可能的话,您可以更新一下IAPHelper来支持Swift3吗? :pray:
        ITJason:@lvcloud 你有尝试 IAPHelper 吗?做了哪些操作、哪一步出了问题、什么问题?
      • 阿琴姑娘:沙发
        ITJason:@阿琴姑娘 欢迎使用 IAPHelper :)

      本文标题:开源了自己封装 Mac In-App Purchase 的 Sw

      本文链接:https://www.haomeiwen.com/subject/onjqettx.html