ios - iOS - 如果应用程序本身已被购买,则在应用程序购买中恢复
问题描述
iOS 应用程序最初是付费应用程序,后来通过应用程序内购买选项变得免费。
对于已经购买了该应用程序的用户来说,restore
下面的代码实际上会恢复它吗?还是仅将应用程序专门恢复为应用程序内购买?
如果仅针对应用内购买,我如何确保实际为应用付费的用户也被“恢复”:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
NSLog(@"Purchased Case");
[defaultQueue finishTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
NSLog(@"Failed Case");
[defaultQueue finishTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
NSLog(@"Restored Case");
[defaultQueue restoreCompletedTransactions];
break;
default:
break;
}
}
}
我使用以下方式获得应用内购买的产品本身:
- (void) getProductInfo
{
if ([SKPaymentQueue canMakePayments])
{
NSSet *productID = [NSSet setWithObject:@"myoneoffid"];
SKProductsRequest *request = [[SKProductsRequest alloc]initWithProductIdentifiers:productID];
request.delegate = self;
[request start];
}
}
谢谢。
解决方案
不,您不能使用“恢复购买”功能来授予在添加应用内购买之前最初购买了您的非免费应用的用户的访问权限。当然,对于购买应用内购买的新用户,您需要在更新后的应用中使用该功能。
要处理您的应用程序的早期购买者的情况,您需要进行收据验证。您可以获得收据并检查原始购买版本。如果该版本比您通过应用内购买免费切换到的任何版本旧,那么您可以授予用户访问这些功能的权限,而无需让他们支付任何费用。
有关更多详细信息,请参阅将付费应用更改为免费,但要了解用户之前是否购买过。
推荐阅读
- sql - 使用 JOIN 和 UNNEST 从 BigQuery 选择嵌套字段时修复重复行
- python - 将日期时间转换为另一种格式
- c# - c# postAsync 即使在设置 UseProxy = False 后也很慢
- c# - 初始化包含数组的嵌套对象
- python - 在 python 中使用 plotly 时程序不显示图形
- php - 正则表达式未从唯一的 img id 捕获 src
- symfony - symfony 表单不处理我的搜索过滤器
- ios - 苹果无法连接到“aaa.com”
- swift - WidgetKit @StateObject 不更新视图
- angular - TS2564:属性 'signupForm' 没有初始化程序,并且未在构造函数中明确分配