IAP( )を含むアプリを作成しましたIn App Purchase。アプリはUINavigationController. ユーザーがコンテンツの購入を決定すると、ロック解除機能によってコンテンツのロックが解除されます。ユーザーが [戻る] ボタンをタップすると、メイン メニューに戻り、アプリの残りの部分にアクセスできます。これはすべて正常に機能します。
私の問題は、ユーザーがのviewController一部であるロック解除UINavigationControllerされたページに移動してからメインメニューページに戻ると、ユーザーがロック解除されたコンテンツを購入したという事実のメモリをアプリがクリアし、(私は推測しています)メイン ページがリロードされたときにコンテンツを再度ロックするために、この初期メイン メニューproperty.enabled = no;のメソッドで設定される属性。viewDidLoadviewController
それで、私の質問は、ユーザーがアプリ内コンテンツを購入したことをアプリに知らせ、ユーザーがメインメニューページから離れた後もコンテンツのロックを解除したままにするにはどうすればよいですか?
で宣言できるのではないかと考えてBOOL appPurchased;いmainMenuViewControllerます。次に、新しくロック解除された から、ステートメントで購入したコンテンツを有効にする を に設定するをviewControllers含めます。prepareForSegueMethodBOOLYESif
このようなもの:
後
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値をmainViewControllerどこにでも送り返すというこの構成は機能していますか? より良い方法はありますか?