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文件。