使用场景:(以自动订阅为例)
新老用户的解释:新用户是指当前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。