2017-08-08 48 views
1

在我目前的應用中,APNS是並沒有問題運行。但是,我很困惑如何處理基於通知類型的某些有效負載。請參考下面的圖片:限制APNS,斯威夫特3

enter image description here

從上到下的UISwitches對應於:

  • 所有通知
  • 集團通知
  • 上傳通知
  • 內容通知
  • 評論通知

分別。

每個UISwitch的狀態供以後使用保存在UserDefaults。然而,我很難考慮如何正確地使用它來限制消息進入。

是否存在客戶端方法/限制傳入通知出現的方式(如果有效內容包含自定義鍵/價值信息? Ex // Payload包含{「type」:「comment」}。

編輯: 期望的效果,當一個UISwitch是「關」,是用於旗幟UI不顯示,聲音不觸發,而是允許對仍然被遞送該類型的有效載荷的信息(更新UITabBarController的徽章)。

看起來可能需要靜音通知的修改版本,因爲沒有任何有效載荷限制爲UITabBarController的徽章更新。任何參考或意見非常感謝。

+2

這樣做的一個客戶端解決方案將是非常浪費的,但如果你是一個客戶端,你都進不去,那麼你的想法後者是合理的API,我會用這種方法去。 – the4kman

回答

1

如果您有機會獲得API,服務器端解決方案是最好的。但是,如果您真的需要客戶端解決方案,那也是可以的。

您無法決定是否向用戶顯示推送通知,系統會自動提供非通知的推送通知並將其顯示給用戶,而不顯示靜默推送通知,僅傳送至應用程序。你不能改變這種行爲。

不過,至少有一個解決方法我現在可以考慮一下。以靜默方式發送所有推送通知,並根據用戶設置爲已啓用的通知發送本地通知,以立即複製靜默推送通知的內容。這樣,您可以在交付後根據其類別篩選通知。請記住,如果通知時間緊迫,這可能不是最好的方法,因爲推送通知和本地通知之間可能會稍微延遲。

+0

假設一個服務器端解決方案是合理的,合理的方式來處理這個'UISwitch'的選擇器功能,使API調用觸發一個標誌,啓用/禁用發送特定類型的消息的標誌? 我編輯了我的原始文章,更具體地解釋了這個應用程序功能的要求,這是我在原文中錯誤地沒有說明的。 – iMoment

+0

如果您仍然需要傳遞負載,那麼您應該切換通知的'content-available'屬性以在靜默和顯示通知之間切換。是的,您應該實現在切換切換時觸發的API調用。 –

+0

我想我明白了。只是要清楚:(1)我需要啓用應用程序設置 - > Capabilites - >背景模式 - >遠程通知。 (2)切換切換時實現API調用。 (3)讓API調整有效載荷的'content-available'屬性; 1爲安靜,0爲常規,與通知的特定「類型」有關。這樣,沒有UI顯示,聲音被禁用,但我仍然會收到有效負載,並能夠在後臺更新UI。如果我掩蓋了任何事情,請讓我知道。非常感謝。 – iMoment