簡體   English   中英

iOS推送通知服務擴展不一致工作

[英]iOS Push Notification Service Extension Not Consistent Work

  • 在我們的應用程序中,我們使用“推送”通知來通知用戶,但是如果用戶未收到推送(例如,用戶的設備處於脫機狀態),則會向他發送短信。
  • 由於APN不提供送達報告,因此我們實現了自己的使用Service Extension將報告發送到后端服務器的方法:

    • 當應用收到推送通知時,它會在Service Extension的方法中向后端發送一個http請求-

      didReceive(_ request:UNNotificationRequest,withContentHandler contentHandler:@轉義(UNNotificationContent)->無效)

只能在30秒內進行提取作業或發出http請求。

但是,有時用戶會抱怨同時接收SMS和PUSH。

當我們檢查數據庫中的日志時,這些設備沒有PUSH傳遞報告。

我的問題是:

  1. 服務擴展是否有可能無法啟動?
  2. 關於如何解決此類錯誤的任何建議?

在您的應用中,您可能已在應用的目標功能中啟用了后台模式遠程通知以及服務擴展 因此,發生的是,當您收到推送通知時,您的應用程序處於激活狀態約30秒。 此時,您的交付服務將被調用並更新您的服務器。 由於通知不包含任何媒體,因此顯示通知會花費一些時間。

但是,一旦您收到郵件,服務器就會向用戶發送SMS。 因此,這就是為什么您同時獲得APN和SMS的原因。

修復:在您的服務器上增加大約1分鍾的發送SMS延遲。 以免發生沖突。

在服務擴展內打電話回家的想法存在缺陷,因為如果由於某種原因HTTP調用在擴展內失敗(例如,不良的信元接收,服務器打ic等),您將無法阻止傳遞通知:

服務擴展[..]無權刪除此通知或阻止其顯示。

如本WWDC 17演講中所述: 最佳做法和用戶通知中的新增功能

更好的方法是將靜默通知發送給用戶。 這將在用戶設備的后台喚醒您的應用,從而允許您進行HTTP調用。 如果呼叫成功,您可以安排本地通知。 如果失敗(或者從未發送過靜默通知),則用戶處於脫機狀態,您可以發送短信。

請記住:Apple將靜默通知視為低優先級,因此,要防止通過發送SMS 發送的靜默通知來調度本地通知,您應該實現某種API調用,您的應用程序可用於查詢是否是否尚未發送短信。

暫無
暫無

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

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