SubscriptionMonitor 1.0.9

SubscriptionMonitor 1.0.9

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2016年11月
SwiftSwift 版本3.0
SPM支持 SPM

Paul Wilkinson 维护。



  • 作者:
  • paulw

SubscriptionMonitor

一个用于监控iOS自动续订订阅的框架

SubscriptionMonitor自动执行验证自动续订订阅的应用内购买收据的任务。它将定期刷新应用收据,并与您的服务器进行验证。
通过一个NSNotification(和可选的闭包调用)通知您的应用收据已被刷新,应检查订阅的变化。

特性

  • 可插拔的架构允许您定义自己的收据验证类
  • 支持沙盒和生产收据验证
  • 支持“免费”产品;启用基本功能,这些功能可以由付费订阅覆盖,从而允许您以一致的方式启用功能

要求

SubscriptionMonitor支持iOS 9及以上版本。您的项目必须用Swift 3编写,以集成SubscriptionMonitor。需要一个外部网络服务器以与App Store服务器通信并执行收据验证。

安装

SubscriptionMonitor可以通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile中

pod "SubscriptionMonitor"

使用SubscriptionMonitor

使用SubscriptionManager非常直接

  • 创建一个ReceiptValidator实例 - SimpleReceiptValidator与下面的示例php脚本是兼容的(见下文)
let validator = SimpleReceiptValidator(serverBase: "https://yourserver.yourdomain.com/iTunesReceiptValidator.php", 
    targetBundle:"com.yourdomain.yourapp")
  • 创建一个使用验证器的SubscriptionMonitor实例 - 这个实例应该在不会释放的地方,比如在UIApplicationDelegate类的一个属性中
self.subscriptionMonitor = SubscriptionMonitor(validator: validator, 
         refreshInterval: 3600, useSandbox: false)
  • 您需要定义自动续订订阅的产品组和产品,并将这些添加到SubscriptionMonitor中。重要的是产品ID和产品等级应与iTunesConnect中定义的一致。
    您还可以将一个“免费”产品添加到产品组。在这种情况下,在iTunesConnect中不会有匹配的产品。如果ProductGroup中包含免费的,那么在产品组中没有其他活跃订阅时,免费产品将是'活跃的'。
let productGroup = ProductGroup(name: "First Product Group")
let product1 = Product(productID: "com.mydomain.myProduct1", productLevel: 1, duration: .year)
let product2 = Product(productID: "com.mydomain.myProduct2", productLevel: 1, duration: .month)
let freeProduct = FreeProduct(productID: "com.mydomain.freeproduct", productLevel: 99)

productGroup.add(product: product1)
productGroup.add(product: product2)
productGroup.add(product: FreeProduct)

self.subscriptionMonitor.add(productGroup: productGroup)
  • 当收据和订阅数据更新时添加一个将要执行的闭包
self.subscriptionMonitor.setUpdateCallback { (receipt, subscriptions, error) -> Void in
    if error != nil {
       print("There was an error: \(error)")
    }
    //  Note that even after an error there may be active `subscriptions` if you have free products defined
    for subscription in subscriptions {
       print("Active product: \(subscription.product.productID)")
    }
}
  • 您还可以订阅 SubscriptionMonitorRefreshNotification NSNotification。这个通知的 userInfo 可能包含“错误”、“活跃”和“收据”的键,取决于验证结果。

  • 调用 startRefreshing 开始收据和订阅信息的基于时间的刷新

self.subscriptionMonitor.startRefreshing()
  • 可以通过 refreshNow 触发手动收据验证和刷新
self.subscriptionMonitor.refreshNow()

服务器端脚本

Apple建议您使用服务器来在您的应用程序和他们的收据验证服务器之间提供一个接口,这样可以让您在过程中构建额外的安全性和信任级别。SubscriptionMonitor 中的 SimpleReceiptValidator 类设计成与在 repo 的 php 目录中可以找到的 iTunesReceiptValidator.php 脚本一起工作。需要修改此脚本以包含可以从iTunesConnect检索的共享密钥。

作者

paulw, [email protected]

许可协议

SubscriptionMonitor受MIT许可协议保护。有关更多信息,请参阅LICENSE文件。