アプリがプッシュ通知を受け取った後、メインのいくつかのボタンのタイトルを変更したいと思いますViewController
。この動作を実現するために、アプリのデリゲートでメソッドを上書きし、ルート ビュー コントローラーとして更新したいコントローラーをapplication: didReceiveRemoteNotification:
再インスタンス化して、ボタンのタイトルを好きなように設定しました。UINavigationController
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.welcomeViewController];
[self.window setRootViewController:navController];
[self.welcomeViewController.buttonToUpdate setTitle: @"Updated Text" forState: UIControlStateNormal];
}
これは最善の解決策ではないかもしれませんが (おそらく をUIButtons
完全に忘れて、View Controller で を使用しUITableView
、その行をボタンとして機能させることはできますか?)、次のシナリオでは機能します。
1) フォアグラウンドでのアプリ。プッシュ通知アラートがポップアップし、ユーザーが [OK] をタップすると、ビューが正常に更新されます。
2) アプリがバックグラウンド/閉じている。デバイスがロック モードになっています。プッシュ通知が届き、ユーザーがデバイスのロックを解除し、アプリが読み込まれ、ビューも正常に更新されます。
たとえば、ユーザーが別のアプリを使用していて、プッシュ通知が届いたときに問題が発生したようですが、ユーザーはプッシュ通知ではなく、アプリのアイコンをタップしてアプリを開きます。その場合、application: didReceiveRemoteNotification:
呼び出されないようで、質問のビューは更新されません。
私の説明が明確であることを願っています。さまざまなアプローチに関する提案、または私のアプローチを使用して最後のシナリオを処理する方法については、オープンです。
ありがとう!