谷歌fireBase推送
Firebase Cloud Messaging伺服器端包含兩個元件:
- GCM 連線伺服器,由 Google 提供。這些伺服器從一個應用伺服器獲取訊息,並將其傳送至在裝置上執行的客戶端應用。Google 為 HTTP 和 XMPP 提供連線伺服器。
- 一臺應用伺服器,您必須在您的環境中實現它。此應用伺服器通過選定的FCM連線伺服器,使用合適的 XMPP 或 HTTP 協議向客戶端應用傳送資料。
完整的 FCM 實現既需要客戶端實現,也需要伺服器實現。有關如何實現客戶端應用的詳細資訊,請參閱適合您的平臺(iOS、Android 或 Chrome)的客戶端指南。
應用伺服器的作用
在您可以編寫使用 Firebase Cloud Messaging的客戶端應用之前,您必須擁有一個滿足以下標準的應用伺服器:
- 能夠與您的客戶端通訊。
- 能夠向FCM連線伺服器傳送格式正確的請求。
- 能夠儲存伺服器金鑰和客戶端註冊令牌。注:絕對不要在任何客戶端程式碼中包含伺服器金鑰。
- 對於 XMPP,伺服器必須能夠生成訊息 ID 來唯一地標識它傳送的每條訊息(GCM HTTP 伺服器生成訊息 ID 並在響應中返回相應 ID)。XMPP 訊息 ID 對於每個傳送者 ID 應唯一。
您需要決定使用哪個FCM連線伺服器協議來讓您的應用伺服器與FCM連線伺服器互動。請注意,如果您想從客戶端應用使用上游訊息傳遞,則必須使用 XMPP。有關更多詳細討論,請參閱
選擇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_KEYContent-Type
:application/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®istration_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 如果電腦裏面有安裝各種軟件管家助手之類的的可以直接在