iOS 应用内购买的推介优惠、促销优惠的处理

使用场景:(以自动订阅为例)

新老用户的解释:新用户是指当前Appleid 从未订阅过的、老用户是指曾经订阅过或者现在仍在订阅中的。这个新老,只跟用户支付账户Appleid有关,跟登录App的账号完全无关。

一般来说促销优惠是针对老用户,推介优惠是针对新用户的。

假如需求是对所有用户的折扣优惠,可能要两者一起综合设置。但是在支付逻辑的代码中,就涉及到一个SKProductDiscounty要不要配置的问题。一般来说,新用户不需要配置,老用户需要配置。


那么问题来了,如何判断新老用户:

NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];

NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];

if (receiptData) {

//拿receiptData丢给后端去调验单接口(当然也可以前端自己调),Apple会返回历史所有的订单记录,查找一下有没有订阅过即可。

} else {

}

新装的App,receiptData即使有过订单,也可能为空。最好在Appdelegate里面先写上代理方法,获取receiptData。

- (void)setReceiptData {

NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];

NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];

if (receiptData) {

} else {

//通过代理方法,请求receiptDatas数据。请求成功后,在需要的地方再次调用此方法,即可获取到receiptData。

SKReceiptRefreshRequest *request = [[SKReceiptRefreshRequest alloc] init]; request.delegate = self;

[request start];

}

}

// SKRequestDelegate 方法

- (void)requestDidFinish:(SKRequest *)request {

NSLog(@"Receipt refreshed");

}


根据后端查询返回的新老用户标识,来确定要不要配置SKProductDiscounty。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容