App Store 促销

内购官方文档

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

AppStore 内购促销开发

App Store 促销开发

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

AppStore 内购促销开发

该提示项目中并没有去完成 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