1. 程式人生 > >谷歌fireBase推送

谷歌fireBase推送

Firebase Cloud Messaging伺服器端包含兩個元件:

  • GCM 連線伺服器,由 Google 提供。這些伺服器從一個應用伺服器獲取訊息,並將其傳送至在裝置上執行的客戶端應用。Google 為 HTTP 和 XMPP 提供連線伺服器。
  • 一臺應用伺服器,您必須在您的環境中實現它。此應用伺服器通過選定的FCM連線伺服器,使用合適的 XMPP 或 HTTP 協議向客戶端應用傳送資料。

完整的 FCM 實現既需要客戶端實現,也需要伺服器實現。有關如何實現客戶端應用的詳細資訊,請參閱適合您的平臺(iOSAndroid 或 Chrome)的客戶端指南。

應用伺服器的作用

在您可以編寫使用 Firebase Cloud Messaging的客戶端應用之前,您必須擁有一個滿足以下標準的應用伺服器:

  • 能夠與您的客戶端通訊。
  • 能夠向FCM連線伺服器傳送格式正確的請求。
  • 能夠儲存伺服器金鑰和客戶端註冊令牌。注:絕對不要在任何客戶端程式碼中包含伺服器金鑰。
  • 對於 XMPP,伺服器必須能夠生成訊息 ID 來唯一地標識它傳送的每條訊息(GCM HTTP 伺服器生成訊息 ID 並在響應中返回相應 ID)。XMPP 訊息 ID 對於每個傳送者 ID 應唯一。

您需要決定使用哪個FCM連線伺服器協議來讓您的應用伺服器與FCM連線伺服器互動。請注意,如果您想從客戶端應用使用上游訊息傳遞,則必須使用 XMPP。有關更多詳細討論,請參閱

選擇FCM連線伺服器協議

選擇FCM連線伺服器協議

目前,FCM提供兩種連線伺服器協議:HTTP 和 XMPP。您的應用伺服器可以單獨或以串聯方式使用這些協議。XMPP 訊息傳遞與 HTTP 訊息傳遞具有以下差異:

  • 上游/下游訊息
    • HTTP:僅適用於雲端至裝置、最多 4KB 資料的下游訊息。
    • XMPP:適用於上游和下游(裝置至雲端、雲端至裝置)、最多 4 KB 資料的訊息。
  • 訊息傳遞(同步或非同步)
    • HTTP:同步。應用伺服器以 HTTP POST 請求的形式傳送訊息,並等待響應。此機制是同步的,並阻止了發件人在收到響應前傳送其他訊息。
    • XMPP:非同步。應用伺服器通過持續型 XMPP 連線,以全線速向/從所有裝置傳送/接收訊息。XMPP 連線伺服器非同步傳送確認或失敗通知(以 ACK 和 NACK JSON 編碼的特殊 XMPP 訊息形式)。
  • JSON
    • HTTP:JSON 訊息以 HTTP POST 的形式傳送。
    • XMPP:JSON 訊息封裝在 XMPP 訊息中。
  • 純文字
    • HTTP:純文字訊息以 HTTP POST 的形式傳送。
    • XMPP:不支援。
  • 向多個註冊令牌傳送多播下游訊息。
    • HTTP:支援 JSON 格式的訊息。
    • XMPP:不支援。

實現 HTTP 連線伺服器協議

本部分將介紹FCM HTTP 連線伺服器。連線伺服器是一種由 Google 提供的伺服器,它可以從應用伺服器接收訊息並將其傳送至裝置。

有關所有訊息引數以及可為其提供支援的連線伺服器的列表,請參閱伺服器參考

身份驗證

要傳送訊息,應用伺服器需發出 POST 請求。例如:

https://fcm.googleapis.com/fcm/send

某個訊息請求由兩部分組成:HTTP 標頭和 HTTP 正文。

HTTP 標頭必須包含以下標頭:

  • Authorization: key=YOUR_SERVER_KEY
  • Content-Typeapplication/json(JSON 格式);application/x-www-form-urlencoded;charset=UTF-8(純文字格式)。 如果省略 Content-Type,即視為純文字格式。

例如:

Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
  "data" : {
    ...
  },
}

HTTP 正文內容取決於您使用的是 JSON 還是純文字。有關 JSON 或純文字訊息中可能包含的所有引數列表,請參閱伺服器參考

檢查伺服器金鑰的有效性

如果您在傳送訊息時收到身份驗證錯誤,請檢查伺服器金鑰的有效性。例如,在 Android 上執行以下命令:

# api_key=YOUR_SERVER_KEY

# curl --header "Authorization: key=$api_key" \
       --header Content-Type:"application/json" \
       https://fcm.googleapis.com/fcm/send \
       -d "{\"registration_ids\":[\"ABC\"]}"

如果您收到 401 HTTP 狀態程式碼,則表示您的伺服器金鑰無效。或者,您應看到類似於如下內容:

{"multicast_id":6782339717028231855,"success":0,"failure":1,
"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

如果您想要確認註冊令牌的有效性,可以將"ABC"替換為註冊標記。

請求格式

本部分介紹如何格式化 JSON 和純文字請求。有關請求中可包含欄位的完整列表,請參閱伺服器參考

傳送至同步

以下是使用 JSON 格式的最小可能請求(不帶有任何引數且僅有一個接收者的訊息):

{"to":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."}

以下是使用純文字格式的同一個示例:

registration_id=42

帶有負載的訊息 — 通知訊息

以下是一個通知訊息:

{"notification":{"title":"Portugal vs. Denmark","text":"5 to 1"},"to":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."}
您可以同時有通知訊息和資料負載訊息。請參閱伺服器參考以瞭解通知負載所支援的金鑰。有關通知訊息和資料訊息選項的詳細資訊,請參閱訊息負載中的通知和資料

帶有負載的訊息 — 資料訊息

以下是帶有資料負載的訊息:

{"data":{"score":"5x1","time":"15:10"},"to":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."}

以下是設定所有可選欄位的訊息:

{"collapse_key":"score_update","time_to_live":108,"delay_while_idle":true,"data":{"score":"4x8","time":"15:16.2342"},"to":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."}

以下是使用純文字格式的同一條訊息:

collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.score=4x8&data.time=15:16.2342&registration_id=42
如果您的企業設有防火牆以限制向網際網路傳送或從其接收的流量,則需要將其配置為允許連線FCM才能讓您的 Firebase Cloud Messaging客戶端應用接收訊息。要開啟的埠為:5228、5229 和 5230。FCM通常僅使用 5228,但有時也會使用 5229 和 5230。FCM不提供具體的 IP,所以您的防火牆應設定為允許外部連線至 Google 15169 ASN 的封鎖 IP 列表中包含的所有 IP 地址。

響應格式

嘗試傳送訊息時可能有兩種結果:

  • 訊息處理成功。HTTP 響應有一個 200 狀態,正文包含訊息狀態的詳細資訊。
  • FCM伺服器拒絕請求。HTTP 響應包含一個非 200 狀態程式碼(例如 400、401 或 5xx)。

當 JSON 請求成功後(HTTP 狀態程式碼 200),返回的 JSON 物件包含 下游 HTTP 訊息響應正文。記錄所有訊息的訊息 ID 值,方便您通過 Google 支援或 GCM 診斷排除訊息故障。

如果 failure 和 canonical_ids 的值是 0,則無需分析響應的其餘部分。否則,我們建議您遍歷結果欄位,並對該列表中的每個物件執行以下操作:

  • 如果設定了 message_id,則檢查 registration_id
    • 如果設定了 registration_id,則將伺服器資料庫中的原始 ID 替換為新值(規範 ID)。請注意,原始 ID 並非結果的一部分,因此您需要從請求中傳送的 registration_ids 列表中獲取該 ID(使用相同索引)。
  • 否則,應獲取 error 的值:
    • 如果值是 Unavailable,您應重試在另一個請求中傳送。
    • 如果值是 NotRegistered,您應從伺服器資料庫中刪除註冊 ID,因為應用已從裝置中解除安裝,或客戶端應用未配置為接收訊息。
    • 否則,請求中傳送的註冊令牌將發生錯誤;這可能是一個不可恢復的錯誤,需要從伺服器資料庫中刪除註冊。請參閱下游訊息錯誤響應程式碼以瞭解所有可能的錯誤值。

如果純文字請求成功(HTTP 狀態程式碼 200),響應正文將包含 1 或 2 行鍵值對。第一行始終存在,其內容是 id=ID of sent message 或 Error=GCM error code。如果有第二行,其格式為 registration_id=canonical ID。第二行是可選項,僅在第一行不是錯誤時才能傳送第二行。建議採用 JSON 響應的類似處理方式來處理純文字響應:

  • 如果第一行以 id 開頭,則檢查第二行:
    • 如果第二行以 registration_id 開頭,則獲取其值,並替換伺服器資料庫中的註冊令牌。
  • 否則,應獲取 Error 的值:
    • 如果值為 NotRegistered,則從伺服器資料庫中刪除註冊令牌。
    • 否則,可能會發生不可恢復的錯誤(注意:純文字請求永遠不會返回錯誤程式碼 Unavailable,而是應返回 500 HTTP 狀態)。

響應示例

本部分介紹幾個表示訊息處理成功的響應示例。請參閱請求格式以瞭解這些響應所依據的請求。

以下是一個簡單的 JSON 訊息示例,該訊息成功傳送至一個接收者,且響應中不含規範 ID:

{"multicast_id":108,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"1:08"}]}

或者,如果請求是純文字格式:

id=1:08

以下是向 6 個接收者傳送 JSON 訊息的結果(ID 分別是 4、8、15、16、23 和 42),其中 3 條訊息處理成功,返回 1 個規範註冊令牌,還有 3 個錯誤:

{"multicast_id":216,"success":3,"failure":3,"canonical_ids":1,"results":[{"message_id":"1:0408"},{"error":"Unavailable"},{"error":"InvalidRegistration"},{"message_id":"1:1516"},{"message_id":"1:2342","registration_id":"32"},{"error":"NotRegistered"}]}

在本例中:

  • 第一條訊息:成功,不需要。
  • 第二條訊息:應重新發送(至註冊令牌 8)。
  • 第三條訊息:發生不可恢復錯誤(可能是資料庫中的值已損壞)。
  • 第四條訊息:成功,不需做任何處理。
  • 第五條訊息:成功,但應更新伺服器資料庫中的註冊令牌(從 23 更新為 32)。
  • 第六條訊息:應從伺服器資料庫中刪除註冊令牌 (42),因為應用已從裝置中解除安裝。

如果僅有上面的第三條訊息是以純文字格式傳送:

Error=InvalidRegistration

如果上面的第五條訊息也是以純文字格式傳送:

id=1:2342
registration_id
=32

實現 XMPP 連線伺服器協議

Cloud Connection Server (CCS) 是一個 XMPP 終點,可向 Google 伺服器提供持續的非同步雙向連線。連線可用於在伺服器與已連線FCM的使用者裝置之間傳送和接收訊息。

您可以繼續使用 HTTP 請求機制向與使用 XMPP 的 CSS 並行的 Firebase Cloud Messaging伺服器傳送訊息。CCS 的一些優點包括:

  • XMPP 的非同步特性讓您能夠用更少的資源傳送更多訊息。
  • 通訊是雙向的—不僅能讓您的伺服器向裝置傳送訊息,還能讓裝置將訊息返回您的伺服器。
  • 裝置可利用接收訊息所使用的相同連線返回訊息,從而延長電池壽命。

有關所有訊息引數以及可為其提供支援的連線伺服器的列表,請參閱伺服器參考

建立連線

CCS 僅使用 XMPP 作為已認證傳輸層,因此您可使用大多數 XMPP 庫來管理連線。

要優化 XMPP 連線伺服器的可靠性和雙向訊息傳遞能力,需要建立長期連線,而不要頻繁地斷開連線和重新連線。

CCS XMPP 終點運行於 fcm-xmpp.googleapis.com:5235。進行功能測試時(針對非生產使用者),您應改為連線至fcm-xmpp.googleapis.com:5236(注意埠不同)。在預生產環境(執行最新 CCS 的較小型環境)中進行常規測試將有助於隔離真實使用者與測試程式碼,以及提早檢測出異常行為更改。請注意,連線將收到發往FCM傳送者 ID 的上游訊息,無論其連線到哪種環境。因此,連線至 fcm-xmpp.googleapis.com:5236 的測試程式碼應使用不同的FCM傳送者 ID,以避免通過測試連線傳送來自生產通訊的上游訊息。

連線需要符合兩個重要條件:

  • 您必須啟用傳輸層安全 (TLS) 連線。請注意,CCS 目前不支援 STARTTLS 擴充套件
  • CCS 需要一個使用 <your_GCM_Sender_Id>@gcm.googleapis.com(GCM 傳送者 ID)和伺服器金鑰作為密碼的 SASL PLAIN 身份驗證機制,其中傳送者 ID 和伺服器金鑰是您在配置客戶端應用時獲得的值。請參閱您的平臺的客戶端文件以瞭解關於獲得這些憑據的資訊。

如有任何點連線失敗,您應立即重新連線。如果身份驗證後連線斷開,無需後退。

對於每個傳送者 ID,FCM允許 1000 個並行連線。

身份驗證

以下程式碼段說明如何在 CCS 中進行身份驗證。

客戶端

<stream:stream to="gcm.googleapis.com"
        version="1.0" xmlns="jabber:client"
        xmlns:stream="http://etherx.jabber.org/streams">

伺服器

<str:features xmlns:str="http://etherx.jabber.org/streams">
 <mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl">
   <mechanism>X-OAUTH2</mechanism>
   <mechanism>X-GOOGLE-TOKEN</mechanism>
   <mechanism>PLAIN</mechanism>
 </mechanisms>
</str:features>

客戶端

<auth mechanism="PLAIN"
xmlns="urn:ietf:params:xml:ns:xmpp-sasl">MTI2MjAwMzQ3OTMzQHByb2plY3RzLmdjbS5hb
mFTeUIzcmNaTmtmbnFLZEZiOW1oekNCaVlwT1JEQTJKV1d0dw==</auth>

伺服器

<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>

下游訊息

建立 XMPP 連線後,CCS 和您的伺服器即可使用標準 XMPP <message> 節來回傳送以 JSON 編碼的訊息。<message>正文必須為:

<gcm xmlns:google:mobile:data>
    JSON payload
</gcm>

常規FCM訊息的 JSON 負載類似於FCM http 終點使用的負載,不同之處在於:

  • 不支援多個接收者。
  • 使用 registration_ids 代替 to
  • CCS 新增欄位 message_id,此為必填欄位。此 ID 唯一標識 XMPP 連線中的訊息。來自 CCS 的 ACK 或 NACK 使用message_id 標識從應用伺服器傳送至 CCS 的訊息。因此,應注意,此 message_id 並非唯一(對於每個傳送者 ID),但始終存在。

除了常規FCM訊息外,還會發送控制訊息,此訊息由 JSON 物件中的 message_type 欄位表示。該值可以是"ack"或"nack",或"control"(參見以下格式)。您的伺服器可能會忽略任何帶有未知 message_type 的FCM訊息。

對於您的應用伺服器從 CCS 收到的每條裝置訊息,它均需要傳送一條 ACK 訊息。無需傳送 NACK 訊息。如果您不為訊息傳送 ACK,CCS 將在下次建立新的 XMPP 連線時重新發送,除非該訊息已過期。

CCS 還將對每一條伺服器至裝置訊息傳送一條 ACK 或 NACK 訊息。如果您未收到任何一種訊息,則表示 TCP 連線在執行過程中關閉,您的伺服器需要重新發送訊息。有關詳情,請參見流控制

有關所有訊息引數以及可為其提供支援的連線伺服器的列表,請參閱伺服器參考

請求格式

傳送至同步

以下是一個用於"傳送至同步"訊息的簡單的 XMPP 節:

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGISTRATION_ID",  // "to" replaces "registration_ids"
  }
  </gcm>
</message>

帶有負載的訊息 — 通知訊息

以下是一個用於通知訊息的 XMPP 節:

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGISTRATION_ID",  // "to" replaces "registration_ids"
     "notification": {
        "title": "Portugal vs. Denmark”,
        "text”: "5 to 1”
      },
      "time_to_live":"600"
}

  }
  </gcm>
</message>
您可以同時有通知訊息和資料負載訊息。請參閱伺服器參考以瞭解通知負載所支援的金鑰。另請參閱訊息負載中的通知和資料

帶有負載的訊息 — 資料訊息

以下是一個含有從應用伺服器傳送至 CCS 的 JSON 訊息的 XMPP 節:

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGISTRATION_ID",  // "to" replaces "registration_ids"
      "message_id":"m-1366082849205" // new required field
      "data":
      {
          "hello":"world",
      }
      "time_to_live":"600",
      "delay_while_idle": true/false,
      "delivery_receipt_requested": true/false
  }
  </gcm>
</message>

響應格式

CCS 響應可能有三種形式。第一種是常規"ack"訊息。但是,如果響應中包含錯誤,訊息可能有兩種不同形式,如下所述。

ACK 訊息

以下是一個包含從 CCS 傳送至應用伺服器的 ACK/NACK 訊息的 XMPP 節:

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "from":"REGID",
      "message_id":"m-1366082849205"
      "message_type":"ack"
  }
  </gcm>
</message>

NACK 訊息

NACK 錯誤是一種常規 XMPP 訊息,其中 message_type 狀態訊息為"nack"。NACK 訊息包含:

  • Nack 錯誤程式碼。
  • Nack 錯誤描述。

舉例如下。

錯誤註冊:

<message>
  <gcm xmlns="google:mobile:data">
  {
    "message_type":"nack",
    "message_id":"msgId1",
    "from":"SomeInvalidRegistrationId",
    "error":"BAD_REGISTRATION",
    "error_description":"Invalid token on 'to' field: SomeInvalidRegistrationId"
  }
  </gcm>
</message>

無效 JSON:

<message>
 <gcm xmlns="google:mobile:data">
 {
   "message_type":"nack",
   "message_id":"msgId1",
   "from":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
   "error":"INVALID_JSON",
   "error_description":"InvalidJson: JSON_TYPE_ERROR : Field \"time_to_live\" must be a JSON java.lang.Number: abc"
 }
 </gcm>
</message>

超出裝置訊息率:

<message id="...">
  <gcm xmlns="google:mobile:data">
  {
    "message_type":"nack",
    "message_id":"msgId1",
    "from":"REGID",
    "error":"DEVICE_MESSAGE_RATE_EXCEEDED",
    "error_description":"Downstream message rate exceeded for this registration id"
  }
  </gcm>
</message>

有關完整的 NACK 錯誤程式碼列表,請參閱伺服器參考。除非另有說明,否則不能重試 NACK 訊息。異常 NACK 錯誤程式碼的處理方式應與 INTERNAL_SERVER_ERROR 相同。

節錯誤

在某些情況下也可能會發生節錯誤。節錯誤包含:

  • 節錯誤程式碼。
  • 節錯誤描述(自由文字)。

例如:

<message id="3" type="error" to="[email protected]/ABC">
  <gcm xmlns="google:mobile:data">
     {"random": "text"}
  </gcm>
  <error code="400" type="modify">
    <bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    <text xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">
      InvalidJson: JSON_PARSING_ERROR : Missing Required Field: message_id\n
    </text>
  </error>
</message>

控制訊息

有時,CCS 需要關閉連線以執行負載平衡。在關閉連線之前,CCS 會發送一條 CONNECTION_DRAINING 訊息,以說明連線即將被排空,很快會關閉。"排空"是指阻止訊息流進入某連線,但允許已進入管道的訊息繼續執行。當您收到CONNECTION_DRAINING 訊息時,應立即開始向另一個 CCS 連線傳送訊息,如有必要,可開啟新的連線。但是,您應使原始連線保持開啟狀態,並繼續接收可能來自該連線的訊息(並對其進行確認 [ACK])— CCS 將在準備就緒後關閉連線。

CONNECTION_DRAINING 訊息如下所示:

<message>
  <data:gcm xmlns:data="google:mobile:data">
  {
    "message_type":"control"
    "control_type":"CONNECTION_DRAINING"
  }
  </data:gcm>
</message>

CONNECTION_DRAINING 是當前唯一支援的 control_type

接收送達回執

對於 Android 和 Chrome 客戶端應用,當裝置確認收到由 CCS 傳送的訊息後,您可獲得送達回執(從 CCS 傳送至您的應用伺服器)。

傳送至 iOS 裝置的訊息不支援送達回執。

要啟用此功能,應用伺服器傳送至 CCS 的訊息必須包含 delivery_receipt_requested 欄位。如果該欄位設定為true,則當裝置確認收到某特定訊息時,CCS 將傳送送達回執。

以下是一個含有 JSON 訊息的 XMPP 節,其中 "delivery_receipt_requested" 設定為 true

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to":"REGISTRATION_ID",
      "message_id":"m-1366082849205"
      "data":
      {
          "hello":"world",
      }
      "time_to_live":"600",
      "delay_while_idle": true,
      "delivery_receipt_requested": true
  }
  </gcm>
</message>

以下是 CCS 傳送的送達回執示例,用於告訴您的應用伺服器裝置已收到 CCS 向其傳送的訊息:

            
           

相關推薦

fireBase

Firebase Cloud Messaging伺服器端包含兩個元件: GCM 連線伺服器,由 Google 提供。這些伺服器從一個應用伺服器獲取訊息,並將其傳送至在裝置上執行的客戶端應用。Google 為 HTTP 和 XMPP 提供連線伺服器。一臺應用伺服器,您必須在您的環境中實現它。此

GCM()客戶端伺服器端開發全指南(伺服器篇)

由於谷歌雲推送GCM升級成為FCM,所以此部落格能容僅供參考 ————2016.12.2更新 今天我們按照之前所說的步驟介紹GCM雲推送服務端的開發,因為服務端的開發比客戶端的開發較簡單,遵從由易到難,一步一步攻破的原則,所以我先於客戶端講服務端的開發,話不多

java 後臺 如何實現 訊息

第一步:申請GOOGLE 訊息推送 KEY 第二步: 1、配置請求路徑和KEY 2、寫請求方法 import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.c

Android gcm所需要的埠

          如果有人做過谷歌gcm的推送功能,就會想知道,如果將註冊訪問谷歌網站的服務放到伺服器上,為了安全起見,就會要求只能開通對應的谷歌服務埠,經過一番查詢,記錄如下: I've fin

GCM()客戶端伺服器端開發全指南(客戶端)

由於谷歌雲推送GCM升級成為FCM,所以此部落格能容僅供參考 ————2016.12.2更新 最近因為手頭上的工作所以耽誤了一下指南客戶端篇的編寫,而且客戶端的功能實現是比較複雜的,處理的邏輯也是比較多的,所以也花了點時間去研究了一下。 沒有看我之前兩篇部落

全面屏!Pixel 2原來長成這樣

-1 搭載 北京時間 關於 其他 size 顯示 進行 alt   【手機中國 新聞】與蘋果不同,Google每年只會出現推出一個主要的硬件產品。今年的發布會將於北京時間10月5日淩晨進行,以目前的爆料來看,此次發布會上將發布Pixel 2系列手機,隨著發布會的臨近,關於兩

Android Firebase接入(五)-- Firebase通知(Cloud Message)

Firebase Cloud Message(FCM)可以幫助Android App實現訊息推送功能,並且可以在推送通知中攜帶引數,當用戶點選推送通知時,推送中攜帶的引數資訊將傳遞到主Activity的getIntent中。一、配置Android應用並下載google-ser

google firebase之大坑記錄

     當firebase推送的時候,是分當前應用在前後臺兩種情況的。當應用在前臺的時候,訊息到來的時候會響應onMessageReceived函式,你就可以在裡面想怎麼處理就怎麼處理了。當應用在後臺或者被殺掉的時候,這個函式是不會響應的,它會直接吧引數傳送到啟動的Act

firebase 教程

申請與新增android專案 這個證書建議使用debug的 Sha1這個是啥呢? 是keysotre的sha1呀,好像在eclipse裡直接能查這個debug的sha1. Android studio我沒找到。 一般來說windows上debug.keystore在: C

使用 FCM 關於無法接收的問題(Firebase

 問題:當 app 處於後臺和關閉時,無法接收 pushmessage 當app 處於後臺的無法收到push message的解決方法:我也不知道,後面是老大說配置錯了,然後改了之後,就可以接收了。 當 app 關閉的時候無法接收 push message 的解決方法:官方

FCM,需要grpc。grpc的配置

環境:Linux + php7 1、安裝grpc   1 pecl install grpc   編譯成功提示資訊 1 2 3 4 5

全球醫療廣告調查:AI,移動端投放和尺度加大

文|曾響鈴 來源|科技向令說(xiangling0815) 谷歌,這家全球最大搜索巨頭,越來越表現出它真實的樣子。 尤其是商業變現上,廣告業務一直都是谷歌重要的“現金流”。而2015年又是一個新的時間點,彼時,谷歌移動端的搜尋量超過了PC端,谷歌廣告業務的主陣地

Android系統使用官方GCM指南

本文旨在為所有Android系統手機普通使用者提供使用谷歌GCM推送的教程,注意這不是用於開發者的。雖名為指南,但多少是探索性的,因為一些細節筆者尚未搞清楚,希望各位指正。由於大部分國內應用沒有使用GCM推送服務,那麼如果你手機裡的應用幾乎沒有使用GCM服務的應用,那麼即使打通GCM也是沒有意義的。本文的適用

每日新聞:中國母嬰幼市場將達3萬億;基於記憶體計算技術的智慧晶片問世;圖片壓縮工具Squoosh;騰訊選定全球地圖資料提供商...

關注中國軟體網最新鮮的企業級乾貨聚集地趨勢洞察艾瑞諮詢:2020年中國母嬰童市場將達到3萬億元圖

Unity3D-接入Firebase(iOS,Mac端)

谷歌的Firebase確實超級好用,但是對於新手,一開始都不知道如何接入,特別是對原生開發不瞭解的情況下。我就是走了好多路,最後才發現,原來要接入FirebaseSDK,只需要在電腦上安裝了pod就可以了,然後跟著文件走就一切順利打包。 關於pod的安裝,坑也挺多的,不過好

BERT預訓練模型開源第一手解讀,NLPers的福利

BERT(Bidirectional Encoder Representations from Transformers),基於自注意力機制的雙向編碼表示模型(本質仍然是一種語言模型),是谷歌在今年10月份提出的一個新的預訓練語言表示模型,一經提出就刷爆NLP圈,因為此模型橫

Progressive Web Apps(PWA)核心技術-使用Firebase Cloud Messaging實現通知

Chrome目前使用Firebase雲訊息傳遞(FCM)作為其推送服務。 FCM最近採用了Web Push協議。 FCM是Google雲訊息傳遞(GCM)的後續產品,支援相同的功能和更多功能。 要使用Firebase雲訊息傳遞,您需要在Firebase上設定專

C# 模板

doc -1 ges cnblogs images title src target 個推 C#推送模板、安卓個推、消息推送 http://docs.getui.com/server/csharp/template/ C# 推送模板

消息二 之webSocket

還需 由於 else har 頁面 try window class logs 友情提示: 消息推送的介紹可以參考http://www.cnblogs.com/dahuandan/p/6816173.html 什麽是webSocket webSocket是為解決客

瀏覽器提示Adobe flash player不是最新版本的解決方法

png per style bsp pla 重啟 mage mrm 管家 參考資料 https://jingyan.baidu.com/article/a3a3f811c3d5058da2eb8a39.html 如果電腦裏面有安裝各種軟件管家助手之類的的可以直接在