以下是一个简单的iOS内购购买的OC代码示例:

  1. 导入相关头文件
#import <StoreKit/StoreKit.h>
  1. 遵循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中配置好相应的内购产品。

iOS内购购买代码示例 - 使用Objective-C实现

原文地址: https://www.cveoy.top/t/topic/qyt4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录