AppStore 内购促销开发

2,639 阅读2分钟

App Store 促销

内购官方文档

App Store 促销是指在 App Store 上浏览 App 内购买项目,甚至在下载 App 之前就能开始购买这些项目.

image.png

App Store 促销开发

在项目中支持内购的基础上,增加 App Store 促销功能配置,一般情况下会提示你,无法在 App Store 上推广.

image.png

该提示项目中并没有去实现 paymentQueue:shouldAddStorePayment:forProduct: 这个代理方法,导致无法直接使用 App Store 促销功能,所以需要开发者在项目中去实现这个代理方法.

官方文档

这个方法会返回商品信息,返回值 YES 则交给苹果处理该订单,直接调起支付流程,如果返回 NO 的话,则不会调起支付流程,在里面我们可以增加自己的一些逻辑代码,比如判断当前用户是否已经登录了等等操作

/// AppStore 从促销点击购买处理
- (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product {
    
    // 直接返回 NO,不交给苹果处理
    NSString *productID = product.productIdentifier;
    NSLog(@"AppStore 促销点击购买: productIdentifier - %@", productID);
    
    // 记录当前事件
    [APPDELEGATE.appReqTools dealAppStoreBuyWithProductID:productID];
    // 判断当前是否登录
    BOOL result = [LBLoginHandler checkLogin];
    if (result == YES) {
        // 当前已登录直接处理
        NSLog(@"当前已登录,直接处理当前事件");
        [APPDELEGATE.appReqTools dealAllEvent];;
    } else {
        // 当前未登录
        NSLog(@"当前未登录,待登录成功后,处理跳转购买会员页面");
    }
    
    return NO;
}

这样就完成了 AppStore 内购促销开发

测试

该代码未上线,所以不能直接在 AppStore 进行测试,只有当该代码上线之后,才能在 App Store Connect 去设置 AppStore 促销功能,但是我们需要在开发过程中去测试该功能,可以使用以下方法

测试推广的 App 内购项目

生成的 URL 类似如下:

itms-services://?action=purchaseIntent&bundleId=com.example.app&productIdentifier=product_name