iOS内购购买代码示例 - 使用Objective-C实现
以下是一个简单的iOS内购购买的OC代码示例:
- 导入相关头文件
#import <StoreKit/StoreKit.h>
- 遵循SKPaymentTransactionObserver协议并实现相关方法
@interface ViewController () <SKPaymentTransactionObserver, SKProductsRequestDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 注册观察者
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
}
- (IBAction)purchaseButtonTapped:(id)sender {
// 购买产品的ID
NSString *productID = 'com.example.product';
if ([SKPaymentQueue canMakePayments]) {
// 创建产品请求
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:productID]];
request.delegate = self;
[request start];
} else {
NSLog('用户禁止应用内购买');
}
}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
NSArray *products = response.products;
if (products.count > 0) {
// 获取产品
SKProduct *product = products.firstObject;
// 创建支付
SKPayment *payment = [SKPayment paymentWithProduct:product];
// 添加到支付队列
[[SKPaymentQueue defaultQueue] addPayment:payment];
} else {
NSLog('无法获取产品信息');
}
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchased:
// 完成交易
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
// 交易失败
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
// 恢复交易
[self restoreTransaction:transaction];
break;
default:
break;
}
}
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction {
// 完成交易后的操作,例如向服务器验证购买凭据
// 完成交易后移除交易
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
- (void)failedTransaction:(SKPaymentTransaction *)transaction {
if (transaction.error.code != SKErrorPaymentCancelled) {
NSLog('交易失败: %@', transaction.error.localizedDescription);
}
// 失败后移除交易
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
- (void)restoreTransaction:(SKPaymentTransaction *)transaction {
// 恢复交易后的操作
// 恢复交易后移除交易
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
@end
这是一个简单的内购购买示例,你需要替换'com.example.product'为你自己的产品ID,并根据需求在各个方法中添加自定义的操作。同时,记得在应用的iTunes Connect中配置好相应的内购产品。
原文地址: https://www.cveoy.top/t/topic/qyt4 著作权归作者所有。请勿转载和采集!