1

application:(UIApplication *)application didReceiveRemoteNotification:のデリゲート メソッドでサーバーにリクエストを送信しまし たが、複数のプッシュ通知が同時に来ると、no が原因でアプリがクラッシュします。のリクエストがサーバーに送信されます。

デリゲート メソッドでは、以下のコードを記述します。

 if (!downloadInboxQueue) {
                    downloadInboxQueue = [[NSOperationQueue alloc] init];
                    downloadInboxQueue.maxConcurrentOperationCount=1;
                }

            NSNumber *ischatnumber=[[NSNumber alloc] initWithInt:0]; 
                operationObject=[[Operation_Inbox alloc] init];   

                NSInvocationOperation *operation22= [[NSInvocationOperation alloc] initWithTarget:operationObject selector:@selector(getEventFromServer:) object:ischatnumber];
                [downloadInboxQueue addOperation:operation22]; 
                operation22=nil;
                NSInvocationOperation *operation2= [[NSInvocationOperation alloc] initWithTarget:operationObject selector:@selector(getEventFromServer:) object:ischatnumber];
                [downloadInboxQueue addOperation:operation2];   
                operation2=nil;

//getEventFromServer: リクエストを送信してレスポンスを取得するメソッド....

それを処理する方法を教えてください。

  1. 複数のプッシュ通知が来たときにデリゲートメソッドが呼び出された回数は?
  2. http リクエストを送信してからレスポンスを取得するまでに必要な時間 (最大時間) は?
4

2 に答える 2

1
  1. 通知ごとに 1 回、ただしアプリが実行中の場合のみ。通知が届いている間にアプリが開いている (つまり、ユーザーがアプリを使用している) 場合、iOS は通知メッセージを表示しませんapplication:(UIApplication *)application didReceiveRemoteNotification。それ以外の場合 (アプリが実行されていない場合)、ユーザーはプッシュ通知をクリックしてアプリを起動することを選択できます。

  2. 同期 HTTP ラウンドトリップ時間に時間がかかりすぎる可能性があります。デリゲート メソッドでの同期呼び出しは避けてください。永続的なローカル ストレージ内のサーバーへの要求をキューに入れ、ネットワーク接続が利用可能になったときに最終的にサーバーに非同期で送信することができます。これがParse.com や InnoQuant MOCA (私は InnoQuant で働いています) などのモバイル バックエンド プラットフォームによってどのように解決されるかをご覧ください。

于 2013-05-23T21:12:16.537 に答える