簡體   English   中英

當應用被殺死時,iOS不會收到推送通知

[英]iOS doesn't receive Push notification when the app is being killed

我在堆棧溢出中發現了類似的問題,但是沒有一個問題可以解決。

我正在使用Firebase Cloud Messaging在我的應用程序中發送推送通知。 我將收到的消息存儲在本地數據庫中。 當我的應用處於活動狀態或在后台時,我的應用能夠接收通知(調用正確的代理方法),但是如果應用被強制退出或不在內存中,則設備也將接收通知並坐在通知中心但是當圖標啟動應用程序時,不會調用任何委托方法。 如果用戶在通知中心中單擊“消息”,則將啟動該應用程序,但只會接收到所單擊的消息,而不會接收到所有消息(在收到多個通知的情況下)。 根據Apple的說法- 如果用戶強制退出應用程序,則系統不會自動啟動您的應用程序。 在這種情況下,用戶必須重新啟動您的應用程序或重新啟動設備,然后系統才會嘗試再次自動啟動您的應用程序

但是,即使用戶啟動了該應用程序,它仍然不會收到已接收並位於通知中心的通知。

以下是該應用程序遵循的要點:

  • 我的應用程序沒有VoIP功能。
  • 可用內容已設置為1。
  • 已啟用以接收后台遠程通知。
  • 所有發送的通知已收到並顯示在通知中心。

{
    aps =     {
        alert =         {
            body = "Push Notification Test Message";
            title = Push Notification;
        };
        badge = 1;
        "content-available" = 1;
        sound = default;
    };
    "gcm.message_id" = "0:1499340350307980%361a2e5b361a2e5b";
    m = "Push Notification Test Message";
    tag = m;
}
  1. 如果該應用被強制退出或未在內存中,則您的應用將不會收到靜默通知(即Content-available設置為1)。 在上述條件下僅接收推送通知。

  2. 如果用戶在通知中心中單擊“消息”,則會啟動應用程序,並且只有單擊該消息的消息才會在委托方法中接收。您無法訪問通知托盤中的所有消息。

您的應用不應依賴於推送通知的傳遞。 正如您所發現的,不能保證推送通知的傳遞。

即使您的應用沒有終止,您也可能不會收到所有通知; 例如,如果設備處於飛行模式,並且發送了多個通知,則當設備重新聯機時,只會傳遞最后一個通知。

您的應用在啟動或收到通知時應與服務器核對是否有新消息,以“趕上”。

您還可以考慮在靜默通知中包括消息有效負載。 如果您的應用程序終止以提示他們打開您的應用程序,它將顯示給用戶。

如果應用未運行,則無法獲取該應用的推送通知。 這是限制。 您只能獲取和清除本地通知。 因此,解決問題的另一種方法是在發送通知時將其保存在后端。 然后啟動應用程序后,您可以從服務器獲取通知列表,並將其與id匹配。 您可以在通知播放負載中發送所需的任何參數。

當您通過點擊任何通知打開應用程序時,您需要處理用於推送通知的方法。 一旦您點擊通知應用程序,它將喚醒並午餐。

在didFinishLaunchingWithOptions中,您需要輸入以下條件:

 if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) {
        NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithDictionary:[launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]];
    }

當點擊通知時,它也調用以下方法:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{
}

暫無
暫無

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

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