我已經構建了一個包含IAP
(In App Purchase
)的應用程序。該應用程序使用UINavigationController
構建。當用戶決定購買內容時,解鎖功能解鎖內容。用戶然後點擊後退按鈕,然後他們被帶回到主菜單,然後他們可以訪問應用程序的其餘部分。所有這些工作正常。解鎖UINavigationController中的內容
我的問題是,當用戶轉到UINavigationController
的一部分解鎖的viewController
,然後返回到主菜單頁面,應用程序已清除了用戶已購買解鎖內容和(我假設)使用在初始主菜單viewController
的viewDidLoad
方法中設置的property.enabled = no;
屬性在主頁重新加載時重新鎖定內容。
所以,我的問題是,如何讓應用知道用戶已購買應用內內容,並在用戶偏離主菜單頁面後保持內容解鎖?
我在想,也許我可以在mainMenuViewController
中聲明BOOL appPurchased;
。然後從新解鎖的viewControllers
中,包含一個prepareForSegueMethod
,它將BOOL
設置爲YES
,這將依次啓用if
語句中的購買內容。
事情是這樣的:
在
mainMenuViewController.m
聲明BOOL appPurchased;
後@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]; }
我不能找出如何在上述(IBAction)toMainMenu:(id)sender
方法寫MainMenuViewController.appPurchase =YES;
。
這種配置發送BOOL
值返回到mainViewController
接近工作的任何地方?有沒有更好的辦法? (NSUserDefaults的可能?)
- (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];
}
你也可以堅持某處購買信息,並:
如何使用恢復購買功能的非消耗品? http://stackoverflow.com/questions/7761556/restore-already-bought-in-app-purchases-on-iphone –
我不希望用戶每次回到主菜單時都必須恢復內容。我需要找到一種方法,讓內容始終保持解鎖狀態,除非設備被關閉或類似的東西。 – RunnerGirl