我有几个已获批准并可在iTunes中使用的应用。我在带有iOS 5.0的iPad 2上测试过它们。它们是通过这些应用中的应用内购买解锁的一些功能。一旦用户成功购买某个功能,我会检查以确保交易成功并通过设置NSUserDefaults变量来解锁。
最近,我的一些iPad 3用户一直在抱怨他们购买了一项功能,但仍未解锁。我不拥有iPad 3,所以我测试了iPad 2上发布的代码,它运行得很好。
还有其他人遇到过与iPad 3相同的问题吗?在iOS 5.1中是否存在NSUserDefaults的错误或问题?
这是代码
NSArray *stringsArray2a = [[NSArray alloc] initWithObjects: @"1", nil];
[[NSUserDefaults standardUserDefaults] setObject:stringsArray2a forKey:@"MyAppWeatherPackStr"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后我像这样检查它
NSArray *purchasedAppArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyAppWeatherPackStr"];
NSString *purchasedAppStr = [purchasedAppArray objectAtIndex:0];
if([purchasedAppStr isEqualToString:@"1"])
{
//all good keep checking weather
}
else
{
//can't check weather
}
答案 0 :(得分:-2)
我没有看到同步点,但更好的替代NSUserDefaults是:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:forKey stringsArray2a:@"1"];
我不确定问题出在NSUser的默认设置上,因为我不幸拥有iPad 3。
一个好主意是不在NSUserDefaults中存储应用内购买数据,因为您可以修改plist文件,使其看起来像您购买的那样......