iOS:App Store推广之推介促销

iOS:App Store推广之推介促销_第1张图片
图示

本文只说实现,不说好处。

步骤

一、iTunes Connect 配置流程:

我的app -> App内购买项目 -> 内购商品 -> 推介促销 -> 选择国家地区 -> 开始结束日期 -> 选择价格 -> 确认
注意:下图的 产品ID 即为测试里的 productId ,同时也是从App Store服务器请求内购参数列表的key。

iOS:App Store推广之推介促销_第2张图片
productId

二、代码实现

用到的代理:

SKPaymentTransactionObserver

用到以下代理方法,一般都是返回NO如果返回YES的话,会由苹果帮我们下单,但这往往不是我们期望的。一般的做法都是在这个方法里监听从App Store跳转到我们的应用,之后模态出一个控制器,用来展示我们App的特色,同时有一个用户试用一段时间,然后订阅的按钮。这个按钮就是我们代理方法返回NO的原因了。

- (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product NS_SWIFT_NAME(paymentQueue(_:shouldAddStorePayment:for:)) API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, macCatalyst, watchos);

需要在-application:didFinishLaunchingWithOptions:里注册监听,因为需要在从App Store跳转过来的时候就要监听。

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
三、测试
itms-services://?action=purchaseIntent&bundleId=bundleId&productIdentifier=productId

现在iPhone的相机已经支持扫码,所以我根据上面的规则用草料二维码生成二维码,直接用相机扫码。如果能跳转到我们的应用,并且能打开我们设置的控制器就算成功了。具体实现请看下面的示例。


示例:
- (BOOL)paymentQueue:(SKPaymentQueue *)queue shouldAddStorePayment:(SKPayment *)payment forProduct:(SKProduct *)product {
    // product里存放的有我们配置在App Store的产品ID,以及价格等等。
    if (![ShareUserManager isLogin]) {
        UIViewController *rootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
        if ([rootVC.presentedViewController isKindOfClass:[PromotionSalesVC class]]) {
            return NO;
        }
        
        PromotionSalesVC *vc = [[PromotionSalesVC alloc] init];
        vc.product = product;
        AddWeakSelf;
        vc.buyBlock = ^{
            weakSelf.unloginProduct = product;
            [weakSelf buyProduct:product];
        };
        [rootVC presentViewController:vc animated:YES completion:nil];
    }
    
    return NO;
}

你可能感兴趣的:(iOS:App Store推广之推介促销)