EasyIAPs 0.1.3

EasyIAPs 0.1.3

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2016年5月
SPM支持 SPM

Alvin Varghese 维护。



EasyIAPs 0.1.3

EasyIAPs

功能

  • [x] 支持消耗型内购
  • [x] 服务器端内购与收据验证
  • [ ] 测试用的收据验证服务器 [将于 0.1.5 版本中提供]。
  • [ ] 非消耗型、自动续订订阅、免费订阅、不会续订的订阅 [将于 0.1.5 版本中提供]。

要求

iOS 9.0+ Xcode 7.3+

通信

  • 如果您需要帮助,请发起问题。
  • 如果您想问一个一般性问题,请发起问题。
  • 如果您发现了一个错误,请发起问题。
  • 如果您有功能请求,请发起问题。
  • 如果您想要贡献,提交拉取请求。

安装

CocoaPods

EasyIAPs 通过 CocoaPods 提供。CocoaPods 是 Cocoa 项目的依赖管理器。要安装它,请在终端应用程序中运行以下命令。 构建 EasyIAPs 0.1.0 需要 CocoaPods 1.0.0

gem install cocoapods

然后,从您的项目目录中运行以下命令以初始化 CocoaPods。

$ pod init

要使用 CocoaPods 将 EasyIAPs 集成到您的项目中,只需在 Podfile 中添加 pod 'EasyIAPs'。

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'

target 'YourApp' do

  use_frameworks!
  pod 'EasyIAPs'

  target 'YourAppTests' do
    inherit! :search_paths
  end

  target 'YourAppUITests' do
    inherit! :search_paths
  end

end

然后,运行以下命令。

$ pod install

用法

这是您在 ViewController 中调用 EasyIAP 的方式。输入您的产品名称和收据验证服务器 URL,如果没有,您可以只需将其放入 https://sandbox.itunes.apple.com/verifyReceipt

EasyIAP().startProductRequest("BuyMoreCoins", receiptValidatingServerURL: "https://yourReceiptValidatingURL.com", loaderRingColor : UIColor.greenColor() , restore: false) { (success, error) in

            if let properError = error
            {
                print(properError.description)
            }
            else
            {
                print(success)
            }
        }

收据验证服务器应始终从键“receipt-data”中获取数据,将以如下所示的 HTTP POST 结构发送。

HTTPBody = { "receipt-data" : base64EncodedReceiptData }
HTTPHeaderField = application/json : Content-Type
HTTPHeaderField = base64EncodedReceiptDataLength : Content-Length // Put your NSData() length in this header
HTTPHeaderField = application/json : Accept

始终检查错误是否为空,如果不是空,您可以通过调用错误描述来获得对其的正确解释。请参见下表中的所有错误。

此外,您无需担心添加加载器。EasyIAP 会负责此操作。请在函数调用中输入您最喜欢的颜色作为加载器颜色。

错误

错误代码 错误类型 错误描述
21000 CouldNotReadJSON 应用商店无法读取您提供的JSON对象
21002 数据格式错误或缺失 在receipt-data属性中的数据格式错误或缺失
21003 无法验证 收据验证失败
21004 共享密钥不匹配 您提供的共享密钥与账户文件中的共享密钥不匹配
21005 收据服务器不可用 收据服务器目前不可用
21006 订阅已过期 此收据有效,但订阅已过期。
21007 测试环境收据 此收据来自测试环境,但已发送到生产环境进行验证。应将其发送到测试环境。
21008 生产环境收据 此收据来自生产环境,但已发送到测试环境进行验证。应将其发送到生产环境。
100 无产品 没有可用产品
101 未找到产品 无法在iTunesConnect中找到所请求的产品名称
102 无法进行支付 您无法进行支付
103 无效的收据URL 无效的URL,请检查您的收据验证服务器URL
104 未进行任何支付 您未进行任何支付
105 无法恢复 无法恢复所需产品
106 产品请求失败 产品请求失败
107 无法从收据服务器解析JSON 无法解析从收据服务器接收到的JSON
108 状态键在JSON中不存在 状态键在收据响应的JSON中不存在
109 无法将收据URL转换为NSData 无法将收据URL转换为NSData
110 收据URL不存在 收据URL不可访问
111 从服务器无响应 服务器无响应
500 无错误 :) 只是想告诉您没有错误-您不会使用此功能
501 无法在模拟器中运行 请在真实设备上运行该应用,而不是在iOS模拟器上

此外,如果您正在使用自己的收据验证URL,并且如果没有有效的SSL安装,应将您的域名添加到 App Transport Security Settings。只需将此内容复制粘贴到您的info.plist文件中。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.yourdomain.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>
</plist>

EasyIAP在iOS模拟器上不会工作,您应该在真实设备上运行它。

鸣谢

Swift Coder Club, http://swiftcoder.club

作者

Alvin Varghese, [email protected]

许可

EasyIAPs可在MIT许可下获得。有关更多信息,请参阅LICENSE文件。