我正在尝试在我的应用上添加Inapp产品。
但是......当我启动应用程序时,我无法验证此设备是否已购买此产品。
我正在使用MKStore类,它具有验证产品是否已经购买的功能:
if([[NSUserDefaults standardUserDefaults] boolForKey:@"Myproduct1"]){
NSLog(@"Already Purchased");
}
但我总是收到假的。
如果我打开应用程序,然后按下按钮再次购买此产品,我会收到一条警告,例如“您已购买此产品,请按OK下载。”。
付款确实没问题,但我不知道如何验证...我想禁用应用启动时购买的产品上的“付费”按钮。
修改
解决了!但是......如果我卸载应用程序,则会重新启动standardUserDefaults并且我不知道已经购买了哪些产品...如果产品已经购买,有一些方法可以询问Apple吗?
答案 0 :(得分:1)
似乎您实际上没有设置用户默认密钥。
完成购买后,您需要在用户默认设置中设置相应的密钥,如下所示:
- (void)product1WasPurchased
{
// Remember that product 1 was purchased.
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Myproduct1"];
// If you want to be sure that the preferences are saved immediately
// you need to call:
[[NSUserDefaults standardUserDefaults] synchronize];
// Do some other stuff.
...
}
只有在您实际设置了bool后,您的支票才能成功:
if([[NSUserDefaults standardUserDefaults] boolForKey:@"Myproduct1"]){
NSLog(@"Already Purchased");
}
答案 1 :(得分:1)
我知道这样做的唯一方法是将收据对象发送到您的服务器,并将其存储在数据库中。
这样,您可以管理购买,至少在逐个设备的基础上进行管理,您可以获得额外的好处,即能够在应用代码之外使用Apple验证购买收据,而不是很容易被黑了。
下行是您必须维护服务器和网络服务,并且您的应用需要互联网连接来验证其购买。