应用内购买,部分使用信用

时间:2012-10-22 21:17:03

标签: ios in-app-purchase credits

我有IAP问题。基本上,我的应用程序需要计算用户使用某个功能的次数,我想相应收费。我可能会在每次使用该功能时收取1美分左右的费用,因此如果IAP最低为1美元,那么可以归功于100次使用。

现在我的问题是我应该选择哪种类型的IAP:消耗品,非消耗品,订阅。

问题的第二部分是: 如果用户为IAP支付1美元,他/她可以使用该功能100次。我应该如何跟踪使用时间以及临时存储使用价值的位置?我知道我可以在沙箱中写入/读入/读出文件,这是安全的吗?用户可以使用10次并退出并返回继续。我需要为用户提供另外90次使用的信用。

我是否必须按照您购买IAP的方式享受所有时间。通过这种方式,我必须将IAP价格设置得更高,并且吸引更少的购买。

有什么想法吗? 谢谢!

我的代码似乎有问题。用户可以重新安装并再次获得完整的初始学分。

 initialCredit = 500;

 defaults = [NSUserDefaults standardUserDefaults];
 if (![defaults objectForKey:theAppCrediteKey]) {
      [defaults setObject:[NSNumber numberWithFloat:initialCredit]               forKey:theAppCrediteKey];
 }
 readingCredits = [defaults objectForKey:theAppCrediteKey];
 if ([readingCredits floatValue] < 0) {
 readingCredits = [NSNumber numberWithFloat:0];
 }

1 个答案:

答案 0 :(得分:1)

这绝对是一种消费品购买 - 如果他们用掉了100个积分,他们可以再购买100个积分,再购买1个积分。

为什么不在你的用户偏好中实现一个计数器 - 在购买$ 1 IAP时你向计数器添加100个学分,并在每次调用该函数时减少它?

[编辑] 例如这是一个快速而苛刻的解决方案,假设一切都发生在同一个模块中,并且不检查商店收据或其他任何内容。

确保密钥在标准用户默认值中可用:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (![defaults objectForKey:@"Credits"])
    [defaults setObject:[NSNumber numberWithInt:0] forKey:@"Credits"];

NSNumber *credits = [defaults objectForKey:@"Credits"];

当减量行动发生时:

credits = [NSNumber numberWithInt:[credits intValue]-1];

或在IAP上:

credits = [NSNumber numberWithInt:[credits intValue]+100];

在适当的时候将值保存为用户默认值:

[defaults setObject:credits forKey:@"Credits"];
[defaults synchronize];