0

私は常にクラウドをポーリングし、利用可能なデータがあるかどうかを確認し、更新されたアイコンで更新されたナビゲーション項目の左バー ボタンをユーザー (アプリ) に通知する必要がある状況があります。

フローは次のようになります。Appdelegate には、クラウドからメタデータをロードするために 1 分ごとに起動する NStimer オブジェクトがあります。メタデータが読み込まれると、データの読み込みが成功したことが通知されます。その通知は、ViewController スタックで表示されているビュー コントローラーによって監視されます。

質問: a) このパターンは持続可能でスケーラブルですか? ここでは、クラウドに依存したくありません。b) この戦略を改良してスケーラブルにするために何ができるか? c) これを達成するために利用できる代替戦略は何ですか?

誰かが問題にさらに興味を持っている場合は、コードを投稿します。

4

1 に答える 1

1

左ボタンを更新するためのコード スニペットを提供します。明らかに、ここでさまざまな変数を変更できるので、これを例として取り上げます。

-(void) configureLeftBarButtonItem
 {
    UIButton * leftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 11.5, 15)];
    [leftButton setBackgroundImage:[UIImage imageNamed:@"backarrow.png"] forState:UIControlStateNormal];
    [leftButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
    // you can obviously do any image name and any selector and any view, button is just a classic example
    UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
     // this is so that the button is not right up against the side
     UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
                                   initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                                   target:nil action:nil];
     negativeSpacer.width = 10;

     self.navigationItem.hidesBackButton = YES;
     self.navigationItem.leftBarButtonItems = [NSArray
                                          arrayWithObjects:negativeSpacer, leftButtonItem, nil];
 }

スケーラビリティに関しては、私はこの分野の専門家ではありませんが、サーバー駆動型のアプリケーションをいくつか作成しており、1 分に 1 回サーバーを要求することは、特定のサーバーにそれほど負担をかけず、基本的に合理的だと思います。10 ~ 15 秒ごとにサーバーを要求しましたが (準メッセージング アプリ)、問題ありませんでした。常に変化するナビゲーション フローがユーザーを混乱させる可能性があるため、サーバーから毎分ランダムにナビゲーション アイテムを更新しても、最高のユーザー エクスペリエンスは得られないと思います。そうは言っても、あなたの特定のニーズが何であるかはわかりませんので、これ以上コメントすることはできません.

于 2013-09-03T03:20:21.737 に答える