XYIAPKit
示例
要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install
命令。
需求
安装
XYIAPKit 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'XYIAPKit'
功能
1、内购的基本功能,产品列表查询、添加购买、恢复购买
2、票据校验、自动续费订阅过期检测
3、交易记录保存
使用方法
1、查询在线商品
/**
请求在线商品,并存储于内存中
@param identifiers 产品id
*/
- (void)requestProducts:(NSSet*)identifiers
success:(void (^)(NSArray *products, NSArray *invalidProductIdentifiers))successBlock
failure:(void (^)(NSError *error))failureBlock;
#########################################################################################################
NSSet *set = [[NSSet alloc] initWithArray:@[@"1", @"2", @"3", @"4", @"5", @"6"]];
[[XYStore defaultStore] requestProducts:set
success:^(NSArray *products, NSArray *invalidProductIdentifiers)
{
} failure:^(NSError *error) {
}];
2、添加购买
[[XYStore defaultStore] addPayment:productId
success:^(SKPaymentTransaction *transaction)
{
} failure:^(SKPaymentTransaction *transaction, NSError *error) {
}];
3、恢复内购
[[XYStore defaultStore] restoreTransactionsOnSuccess:^(NSArray *transactions) {
NSLog(@"restore === %@", transactions);
} failure:^(NSError *error) {
NSLog(@"restore error === %@", error);
}];
4、添加票据校验
1)、外部票据校验(可以通过信任的服务器进行校验)
创建校验对象(建议创建单例对象,以便监听),遵守XYStoreReceiptVerifier协议
- (void)verifyTransaction:(SKPaymentTransaction *)transaction
success:(void (^)(void))successBlock
failure:(void (^)(NSError *))failureBlock
{
__weak typeof(self) weakSelf = self;
[[XYStore defaultStore] base64Receipt:^(NSString *base64Data) {
[[XYStore defaultStore] fetchProduct:transaction.payment.productIdentifier
success:^(SKProduct *product)
{
//外部校验请求
[weakSelf callBackApple:product
receiptData:base64Data
success:successBlock
failure:failureBlock];
} failure:failureBlock];
} failure:failureBlock];
}
在`- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions `中注册票据校验
// 在此设置内购的票据校验,防止掉单问题的发生
[[XYStore defaultStore] registerReceiptVerifier:[XYAppReceiptVerifier shareInstance]];
2)、APP内部校验
podfile中添加`pod 'XYIAPKit/iTunesReceiptVerify', '~> 0.8.0'`
引入票据校验的sdk
在`- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions `中注册票据校验
// 在此设置内购的票据校验,防止掉单问题的发生
[[XYStore defaultStore] registerReceiptVerifier:[XYStoreiTunesReceiptVerifier shareInstance]];
XYStoreiTunesReceiptVerifier中提供对自动续期产品的订阅过期的判断
/**
@ 适用自动续期订阅
判断是否已订阅
若果是非自动续费型商品,直接返回NO
@param productId 自动续期订阅产品id
@return YES: NO:未订阅或者订阅过期
*/
- (BOOL)isSubscribedWithAutoRenewProduct:(NSString *)productId;
也提供 针对持续有效的产品,Apple返回的票据记录中会一直保留其票据信息,可以通过票据记录判断是否有效
/**
针对持续有效的产品,Apple返回的票据记录中会一直保留其票据信息,可以通过票据记录判断是否有效
支持:1、非续期订阅 2、非消耗型项目
注:消耗型项目一旦完成,不会长期保留在票据信息中
@param productId 产品id
@return YES:消费有效 NO:无效
*/
- (BOOL)isValidWithPersistentProductId:(NSString *)productId;
5、添加交易记录存储 1)、在Podfile中添加pod 'XYIAPKit/UserDefaultPersistence', '~> 0.8.0'
在`- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions `中注册票据校验
// 在此设置内购的票据校验,防止掉单问题的发生
[[XYStore defaultStore] registerTransactionPersistor:[XYStoreUserDefaultsPersistence shareInstance]];
2)、存储于Keychain中
podfile中添加`pod 'XYIAPKit/KeychainPersistence', '~> 0.8.0'`
在`- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions `中注册票据校验
// 在此设置内购的票据校验,防止掉单问题的发生
[[XYStore defaultStore] registerTransactionPersistor:[XYStoreKeychainPersistence shareInstance]];
作者
1073605877, [email protected]
许可证
XYIAPKit允许根据MIT许可证使用。更多信息请参阅LICENSE文件。