我有一个同时拥有完整版和精简版(包括应用内购买版)的应用程序,当我购买应用程序时,精简版加载所有完整的东西,但当我关闭应用程序并打开它再次,它没有加载完整的菜单和所有的东西,包括完整版本。 正如我正在修改其他人所做的代码,我不太了解如何设置一些东西(如水平,图标或购买应用程序的特殊事物),而不是出现在精简版上,而是完整的。
我在app delegate中找到了这个:
-(void)setLite:(bool)value
{
lite = value;
[self saveUserDefaults];
}
-(void)loadUserDefaults
{
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
if(prefs)
{
wasExecuted = [[prefs objectForKey:@"wasExecuted"] boolValue];
lite = [[prefs objectForKey:@"lite"] boolValue];
if(!wasExecuted)
lite = YES;
// if(wasExecuted)
// lite = NO;
}
}
-(void)saveUserDefaults
{
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
if(prefs)
{
[prefs setObject:[NSNumber numberWithBool:executed] forKey:@"executed"];
[prefs setObject:[NSNumber numberWithBool:lite] forKey:@"lite"];
}
}
这就是它在交换机上的使用方式(例如):
case 7:
if(appDelegate.lite)
{
[self showSubInfo:@"xxxxx.png" btnClosePos:CGPointMake(0, 0)];
// [self xxxxxlite];
}
else
{
NSLog(@"xxxx");
storyBoardPage7 *xxxxx = [[xxxxx alloc]init];
xxxx.modalTransitionStyle = MODAL_TRANSITION_STYLE;
[rootViewController xxxx animated:YES];
[xxxx release];
}
这是IAP成功时触发的方法:
-(void) changeMenuToFull {
NSLog(@"Buy complete");
[appDelegate setLite:NO];
[self removeLiteMenu];
[self loadFullMenu];
}
但我不知道为什么关闭它时它不会保存菜单......
感谢阅读。
答案 0 :(得分:0)
看起来dev正在保存用户默认值中的bool值,无论是加载精简版还是完整版。
我唯一看到此代码可能出错的地方是wasExecuted
被返回为NO
,这就是为什么lite
设置为YES
因此正在加载精简版。
一旦完成IAP并重新打开应用程序,您能查看wasExecuted的值吗?
答案 1 :(得分:0)
这就是代码的样子:
-(void)setLite:(bool)value
{
lite = value;
[self saveUserDefaults];
}
-(void)loadUserDefaults
{
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
if(prefs)
{
wasExecuted = [[prefs objectForKey:@"wasExecuted"] boolValue];
lite = [[prefs objectForKey:@"lite"] boolValue];
if(!wasExecuted)
lite = YES;
// if(wasExecuted)
// lite = NO;
}
}
-(void)saveUserDefaults
{
NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults];
if(prefs)
{
[prefs setObject:[NSNumber numberWithBool:executed] forKey:@"wasExecuted"];
[prefs setObject:[NSNumber numberWithBool:lite] forKey:@"lite"];
[prefs synchronize];
}
}
现在,如果在用户默认值中将lite设置为YES,则在调用loadUserDefaults后它将为YES。