AppStore 内购促销开发

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