3

我有几个在 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
}
4

1 回答 1

-2

我没有看到同步的意义,但更好的替代 NSUserDefaults 是:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:forKey stringsArray2a:@"1"];

我不确定问题出在 NSUser 默认值上,因为我没有足够的运气拥有 iPad 3。

一个好主意是不要将应用内购买数据存储在 NSUserDefaults 中,因为您可以修改 plist 文件以使其看起来像您购买了它......

于 2012-04-07T02:25:52.800 回答