3

昨天Google宣佈了一組新的Firebase工具,其中一個是通知功能,可以將通知從服務器發送到正在使用我的應用的設備。通過Firebase發送推送通知

但是,我們現在可以在用戶收到新消息時通知用戶嗎?

如果不是,是否有辦法實現這一目標?

+2

如果您的意思是來自其他用戶的新消息,那麼我也想知道這一點。看看文檔,它看起來像這仍然不可能自動。我認爲你需要讓另一臺服務器檢查每條發送的消息,然後創建一個標有收件人用戶標識的通知。然後您將收件人訂閱到它自己的用戶標識標籤。檢查[link](https://firebase.google.com/docs/notifications/android/console-topics#receive_topic_messages_on_an_android_client_app) – user2997154

+1

在docs @ user2997154中尋找巨大狩獵。如果你把它寫成答案,我會贊成。 :-) –

回答

5

看看文檔,這似乎目前不可能自動。下面是完成它的一種可能方式 「手動」 與其他服務器:

  1. 用戶訂閱它自己的用戶ID

在安卓

FirebaseMessaging.getInstance().subscribeToTopic("InsertUserIDHere"); 

在IOS

[[FIRMessaging messaging] subscribeToTopic:@"/topics/InsertUserIDHere"]; 
  1. 設置外部服務器檢查每發送一條消息。發送郵件時,服務器應創建一個通知,其中包含收件人的用戶標識作爲主題。

請看here瞭解更多信息。

+0

輝煌!我有兩個問題,如果我可以。首先,我們如何使用其他服務器發送通知,Firebase只允許通過控制檯發送通知。其次,如果我有很多用戶,它會高效嗎?文檔中提到「在控制檯中顯示新主題之前可能會延遲多達一天」。謝謝。 – Khaled

+0

不理我最後的評論。看看[這裏](https://firebase.google.com/docs/cloud-messaging/topic-messaging),瞭解更多有關通過服務器發送消息而不使用控制檯的信息。如果您不使用控制檯,我不確定延遲是否仍然適用。 – user2997154

1

您可以將消息發送給用戶組(定位特定「主題」)或發送到單個設備(定位到Firebase雲消息傳遞令牌)。

要訂閱一個設備到主題使用:

FirebaseMessaging.getInstance().subscribeToTopic("topicName"); 

要獲得設備令牌使用(* 1):

FirebaseInstanceId.getInstance().getToken(); 

然後你可以使用火力地堡Notificaitons Web控制檯,或FCM服務器API,如果你想從你的服務器發送消息。
見:https://firebase.google.com/docs/cloud-messaging/downstream#sending_topic_messages_from_the_server


注:

[1] getToken()可以返回null如果令牌是尚未公佈。
您可以使用回調onTokenRefresh()在令牌可用時以及令牌旋轉時進行通知。
請參閱:https://firebase.google.com/docs/cloud-messaging/android/client#sample-register