5

我在iOS上遇到了無聲通知問題。針對iOS的Firebase FCM靜默推送通知

當我的應用程序在後臺時,我沒有收到由FCM發送的安靜通知。但是如果我嘗試直接發送到APNS,則通知已成功接收。

這是JSON發送到FCM:

{ 
"to" : "<token>", 
"priority": "high", 
"content_available": true, 
"data" : { 
    "<key>" : "<string>", 
    "<key2>" : "<string>" 
} 

}

這是JSON直接發送到APNS:

{ 
    "aps": { 
    "content-available": 1 
    }, 
    "<key>": "<string>", 
    "<key>": "<string>" 
} 

我已經試圖刪除 「優先」因爲我看到有人說如果「content_available」已經設置,我不應該設置優先級。它沒有工作。

  1. 我在XCode> Capabilities中啓用了「推送通知」。
  2. 我在XCode> Capabilities中的背景模式中檢查了「遠程通知」。
  3. 當應用程序處於前臺並且有時應用程序處於後臺時,FCM通知正常工作。

回答

2

我找到了解決方法。我在「通知」字段中爲「聲音」設置了一個空值,即使應用程序在後臺,也會傳遞無聲通知。

{ 
    "to" : "...", 
    "priority": "high", 
    "notification": { 
     "sound": "" 
    }, 
    "data" : { 
     .... 
    } 
} 

我的直覺是,蘋果不允許沉默通知與「高」優先並以某種方式「通知」:{「聲音」:「」}招數APNS,這個通知不是一種無聲的一個。

+1

在您設置通知對象之後,它就成爲正常的推送通知。這不是一個無聲的推送通知。 –

+0

如何通過FCM消息控制檯發送無聲通知? – Moxarth

1

請按照documentation for server side的說明進行json的設置,如文檔中所述。我早些時候遇到類似的問題,並解決了這個文檔的問題。

{ 
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 
    "priority" : "high", 
    "notification" : { 
    "body" : "This week's edition is now available.", 
    "title" : "NewsMagazine.com", 
    "icon" : "new" 
    }, 
    "data" : { 
    "volume" : "3.21.15", 
    "contents" : "http://www.news-magazine.com/world-week/21659772" 
    } 
} 

您錯過了通知密鑰。 apns使用它來獲取背景通知。

+3

但我不希望用戶在收到通知中心的通知。我只想要一個無聲通知,它會在「didReceiveRemoteNotification」中執行一些代碼。這就是「無聲通知」的意思。 – vladiulianbogdan

3

刪除「通知」鍵值對,並添加「content_available」:真

它看起來像這樣

{ 
    "to" : "...", 
    "priority": "high", 
    "content_available": true, 
    "data" : { 
     .... 
    } 
} 

這應該使它成爲一個沉默的APNS,你需要處理與相應的APNS委託方法。

您將需要通過委託來處理這個 轉寄此火力文檔細節:https://firebase.google.com/docs/cloud-messaging/concept-options