簡體   English   中英

使用 Firebase 雲消息發送通知特定登錄用戶

[英]Send Notification specific logged User Using Firebase Cloud Messeging

在我的 android 應用程序上有很多用戶,但我想只發送適合的特定用戶的通知。 我不想發送所有用戶。 如果用戶已經登錄應用程序通知將在屏幕上彈出。

需要幫助,建議將不勝感激。

當設備 firebase 初始化時,它會返回一個設備令牌,我們通常將它發送到后端,因此它將與用戶 id 一起存儲在后端數據庫中,然后可以用於您的目的。

當用戶首次運行您的應用程序時,Firebase 會為該用戶及其設備生成一個令牌。 每次用戶刪除應用程序並重新安裝時,它都會重新生成此令牌。 當然,這也包括新設備,因為這就像有史以來的第一次安裝一樣。

我所做的是我使用了 Firebase 實時數據庫,我在其中為我擁有的每個用戶存儲了這個令牌。 然后,當我需要向該用戶發送通知時,我只需獲取該令牌並將其發送到我的應用程序中。 這是關於我如何做到這一點的一個老例子:

OkHttpClient client = new OkHttpClient();                
Logger.getLogger(OkHttpClient.class.getName()).setLevel(Level.FINE);
JSONObject json = new JSONObject();                    
JSONObject notifJson = new JSONObject();
JSONObject dataJson = new JSONObject();
notifJson.put("text", body);
notifJson.put("title", title);
dataJson.put("customId", "02");
json.put("notification", notifJson);
json.put("data", dataJson);
json.put("to", firebase_token);
RequestBody body = RequestBody.create(MediaType.parse("application/json"), json.toString());
        .header("Authorization", "key="+server_key)
        .url("https://fcm.googleapis.com/fcm/send")
        .post(body)
        .build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) { //do something if notification is sent successfully }

您可以使用您的代碼向特定用戶發送通知來執行此操作。 當然,如果您想從您的代碼發送通知。 如果您想使用服務器或其他東西,您可以在此處查看文檔: https://firebase.google.com/docs/cloud-messaging/android/send-multiple

我在這個例子中使用的:

  • notifJson - 通知部分
  • dataJson - 通知的數據部分
  • body - 我的通知正文
  • title - 我的通知的標題
  • firebase_token - 我正在向其發送通知的用戶的令牌,這是之前使用 Firebase 實時數據庫檢索到的
  • server_key - 來自 Firebase 配置的服務器密鑰

在下面的IF statement中,如果響應成功,我會將一些數據添加到我的實時數據庫中,但您可以做任何您想做的事情。

暫無
暫無

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

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