簡體   English   中英

如何在iOS應用程序的前台同時出現多個推送通知時進行處理

[英]how to handle while multiple push notification comes at same time in foreground of app in iOS

我已經在應用程序的委托方法中向服務器發送了請求:(UIApplication *)application didReceiveRemoteNotification:但是當多個推送通知同時出現時,應用程序由於沒有而崩潰。 的請求轉到服務器。

在委托方法中,我編寫以下代碼:

 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請求和獲取響應之間需要多少時間(最長時間)?
  1. 對於到達您設備的每個推送通知,它將被調用一次,但是如果您一次將太多通知發送到同一設備,則APNS服務器可能只會將其中一些通知發送到設備。

  2. 那不是你應該依靠的東西。 您應該對服務器進行異步調用,以免掛起/崩潰您的應用程序。

  1. 每個通知一次,但僅在應用程序正在運行時 如果在通知到達時應用程序處於打開狀態(即用戶正在使用該應用程序),則iOS不會顯示通知消息,您需要使用application:(UIApplication *)application didReceiveRemoteNotification處理它。 否則(應用程序未運行),用戶可以選擇通過單擊任何推送通知來啟動應用程序。

  2. 同步HTTP往返時間可能花費太多時間。 避免在委托方法中進行同步調用。 您可以將請求排隊到持久性本地存儲中的服務器,然后在網絡連接可用時最終將它們異步發送到服務器。 看看如何通過移動后端平台 (如Parse.com或InnoQuant MOCA)解決此問題(我在InnoQuant工作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM