Apple 建议您在服务器上存储并验证所有收据。
(或者)
RMStore 委托事务持久性并提供两个可选的参考实现,用于将事务存储在 Keychain 或 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。
参考验证器
RMStore 通过 RMStoreAppReceiptVerificator(适用于 iOS 7 或更高版本)和 RMStoreTransactionReceiptVerificator(适用于 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 应用内购买变得简单
用于应用内购买的轻量级 iOS 库
欢迎。
希望对你有帮助............