ios - 解锁 UINavigationController 中的内容

标签 ios uinavigationcontroller in-app-purchase

我构建了一个包含 IAP(应用内购买)的应用。该应用程序是使用 UINavigationController 构建的。当用户决定购买内容时,解锁功能会解锁该内容。然后,用户点击后退按钮,他们将返回主菜单,然后可以访问应用程序的其余部分。所有这些都运行良好。

我的问题是,当用户转到属于 UINavigationController 一部分的未锁定的 viewController,然后返回主菜单页面时,应用程序已清除其内存用户已购买解锁内容并且(我假设)使用在此初始的 viewDidLoad 方法中设置的 property.enabled = no; 属性主菜单viewController用于在重新加载主页时重新锁定内容。

所以,我的问题是如何让应用知道用户已经购买了应用内内容,并在用户偏离主菜单页面后保持内容解锁?

我想也许我可以在 mainMenuViewController 中声明 BOOL appPurchased;。然后,从新解锁的 viewControllers 中,包含一个将 BOOL 设置为 YESprepareForSegueMethod,这将依次启用if 语句中购买的内容。

像这样:

  1. @implementation之后的mainMenuViewController.m中声明BOOL appPurchased;

  2. mainMenuViewController.m中实现以下方法:

(void) viewWillAppear:(BOOL)animated {
    if (appPurchased) {
        [self enableLockedContent];
    } else if (!appPurchased){
        nil;
    }    
}
  1. UnlockedContentViewController中,实现以下连接到UIButton的方法:
(IBAction)toMainMenu:(id)sender {
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController *mainMenu = [mainStoryboard instantiateViewControllerWithIdentifier:@"cover"];
    [self.navigationController pushViewController:mainMenu animated:YES];
}

我不知道如何在上面的 (IBAction)toMainMenu:(id)sender 方法中编写 MainMenuViewController.appPurchase =YES;

这种将 BOOL 值发送回 mainViewController 的配置是否接近工作?有没有更好的办法?

最佳答案

您可以将 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 方法上)。

关于ios - 解锁 UINavigationController 中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765771/

相关文章:

ios - 在隐藏的导航栏上具有不同行为的 ViewController

ios - 如何让navigation Bar平滑的移动到它的位置之上,

iphone - 在 iTunes Connect 中进行应用内购买。如何进行应用内购买 "Cleared for sale"?

ios - 缺少 IAP Apple 拒绝

iphone - Objective-C:继承和动态类型?

ios - 如何根据其中的 UILabel 使 UIView 自动高度?

ios - 使用捏合手势;我怎样才能放大到用户手指实际 "pinch"的位置?

iphone - 带有 UIActivityIndi​​cator 的 UIAlertView 显示得太晚/线程问题

objective-c - 尝试为 viewController 转换 iOS4 设置自定义动画时出错

ios - 应用内购买在 Apple Store 中不起作用,但在沙盒中起作用