【发布时间】:2026-02-19 17:35:01
【问题描述】:
我构建了一个包含IAP (In App Purchase) 的应用程序。该应用程序是使用UINavigationController 构建的。当用户决定购买内容时,解锁功能解锁内容。然后用户点击后退按钮,他们将返回主菜单,然后他们可以访问应用程序的其余部分。所有这些都可以正常工作。
我的问题是,当用户转到作为UINavigationController 一部分的解锁viewController,然后返回主菜单页面时,应用程序已经清除了用户购买解锁的事实的记忆内容和(我假设)使用在此初始主菜单viewController 的viewDidLoad 方法中设置的property.enabled = no; 属性在重新加载主页时重新锁定内容。
那么,我的问题是如何让应用知道用户已购买应用内内容,并在用户偏离主菜单页面后保持内容解锁?
我在想也许我可以在mainMenuViewController 中声明BOOL appPurchased;。然后从新解锁的viewControllers 中包含一个prepareForSegueMethod,将BOOL 设置为YES,这将反过来在if 语句中启用购买的内容。
类似这样的:
在
mainMenuViewController.m在@implementation之后声明BOOL appPurchased;在
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]; }
上面的(IBAction)toMainMenu:(id)sender方法我不知道怎么写MainMenuViewController.appPurchase =YES;。
这种将BOOL 值发送回mainViewController 的配置是否接近工作?有没有更好的办法?
【问题讨论】:
-
非消耗品使用恢复购买功能怎么样? *.com/questions/7761556/…
-
我不希望用户每次返回主菜单时都必须恢复内容。我需要找到一种方法让内容始终保持解锁状态,除非设备已关闭或类似情况。
标签: ios uinavigationcontroller in-app-purchase