我构建了一个包含IAP
(In App Purchase
)的应用。该应用使用UINavigationController
构建。当用户决定购买内容时,解锁功能解锁内容。然后用户点击后退按钮,然后将它们带回主菜单,然后他们可以访问应用程序的其余部分。所有这一切都很好。
我的问题是,当用户转到viewController
的解锁UINavigationController
时,然后返回主菜单页面,该应用已清除其内存用户的事实已购买解锁内容并且(我假设)使用此初始主菜单property.enabled = no;
的{{1}}方法中设置的viewDidLoad
属性在主页面重新锁定内容时重新加载。
所以,我的问题是如何让应用知道用户购买了应用内内容,并在用户偏离主菜单页面后保持内容解锁?
我想也许我可以在viewController
中声明BOOL appPurchased;
。然后,从新解锁的mainMenuViewController
中添加一个viewControllers
,将prepareForSegueMethod
设置为BOOL
,然后在YES
语句中启用所购买的内容。< / p>
这样的事情:
在if
BOOL appPurchased;
中声明mainMenuViewController.m
在@implementation
中实施以下方法:
mainMenuViewController.m
(void) viewWillAppear:(BOOL)animated {
if (appPurchased) {
[self enableLockedContent];
} else if (!appPurchased){
nil;
}
}
中,实施以下与UnlockedContentViewController
:UIButton
我无法弄清楚如何在上述(IBAction)toMainMenu:(id)sender {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *mainMenu = [mainStoryboard instantiateViewControllerWithIdentifier:@"cover"];
[self.navigationController pushViewController:mainMenu animated:YES];
}
方法中编写MainMenuViewController.appPurchase =YES;
。
这种配置是将(IBAction)toMainMenu:(id)sender
值发送回BOOL
任何接近工作的地方吗?还有更好的方法吗?
答案 0 :(得分:1)
您可以将UIViewController转换为MainMenuViewController(然后您将能够设置appPurchase属性):
- (IBAction)toMainMenu:(id)sender {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle:nil];
MainMenuViewController *mainMenu = (MainMenuViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"cover"];
mainMenu.appPurchase = YES;
[self.navigationController pushViewController:mainMenu animated:YES];
}
您还可以在某处保留购买信息(可能是NSUserDefaults?)并使MainMenuViewController自行检索此信息(在init或甚至viewDidLoad方法上)。