我有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];
}
答案 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];