Apple建议您存储和验证服务器上的所有收据。
(OR)
RMStore代表交易的持久性和提供了用于存储在钥匙串或在交易NSUserDefaults的两个可选的参考实施方式。您可以实现您的交易,使用库提供的参考实现,或者在非消耗品和自动更新订阅的情况下,直接从收据中获取交易。
-(void) startProductPurchase{
[[RMStore defaultStore] requestProducts:[NSSet setWithArray:_products] success:^(NSArray *products, NSArray *invalidProductIdentifiers) {
_productsRequestFinished = YES;
NSLog(@"Product Request Finished");
[self buyApplication:products];
} failure:^(NSError *error) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Products Request Failed", @"")
message:error.localizedDescription
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", @"")
otherButtonTitles:nil];
[alertView show];
}];
刷新收据通知(iOS的7+只)
- (void)storeRefreshReceiptFailed:(NSNotification*)notification;
{
NSError *error = notification.rm_storeError;
}
- (void)storeRefreshReceiptFinished:(NSNotification*)notification { }
收据验证
RMStore默认不执行接收的验证,但提供的参考实现。您可以实施自己的自定义验证或使用库提供的参考验证器。
两个选项概述如下。欲了解更多信息,请查看wiki。
参考verificators
RMStore经由RMStoreAppReceiptVerificator提供收据验证(针对iOS 7或更高)andRMStoreTransactionReceiptVerificator(iOS设备6或更低)。要使用它们中的任何一个,请将RMStore/Optional中相应的文件添加到项目中,并在启动时设置验证程序委托(receiptVerificator)。例如:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
const BOOL iOS7OrHigher = floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1;
_receiptVerificator = iOS7OrHigher ? [[RMStoreAppReceiptVerificator alloc] init] : [[RMStoreTransactionReceiptVerificator alloc] init];
[RMStore defaultStore].receiptVerificator = _receiptVerificator;
// Your code
return YES;
}
欲了解更多详情,请点击以下链接。
iOS In-App purchases made easy
A lightweight iOS library for In-App Purchases
欢迎。
希望它能帮到你.............