6

我是Android新手,我正在使用Google GCM發送純文本消息。是否可以發送圖片文件作爲流或通過其他方法?GCM發送圖片而不是消息

Java - 服務器

Android - Client。

Message message = new Message.Builder() 
       .collapseKey("1") 
       .timeToLive(3) 
       .delayWhileIdle(true) 
       .addData("TEST", 
         "Hello Android") 
       .build(); 

這裏明確的信息是.addData("TEST","Hello Android")

回答

5

我寫了一篇關於如何做到這兩個博客的帖子:

Tutorial: Using AirBop to Send Images in the Message Payload它展示瞭如何通過將圖像編碼的base64做到這一點。

Tutorial: Using AirBop to Push Images for BigPictureStyle Notifications它向您展示瞭如何推送圖像網址,然後下載圖像。

這兩個教程都使用AirBop作爲應用程序服務器,但客戶端代碼與該服務器代碼是分開的,可以一般使用。

+0

第二個鏈接似乎被打破。 – secureboot 2013-11-12 23:30:44

+1

這裏是更新的鏈接:BigPictureStyle:http://blog.andromo.com/2012/tutorial-using-airbop-to-push-images-for-bigpicturestyle-notifications/和圖片在有效載荷中:http://blog.andromo .com/2012/tutorial-using-airbop-to-send-images-in-the-message-payload /我希望有幫助! – selsine 2013-11-21 19:31:07

+0

更新斷開的鏈接 – 2015-05-31 05:20:09

2

您只能發送非常小的圖像,因爲數據有效載荷被限制爲4kB。你也需要以某種方式對它進行編碼。

16

您只能發送總大小高達4096字節的鍵/值對。 即使您設法在字符串參數中對圖像進行編碼,它也會是一個很小的圖像。 另一種方法是發送一個引用圖像位置的字符串,或者是設備上的本地文件名,或者是處理通知時可以訪問以下載圖像的URL。

1

好的,讓我們來思考這裏的大局。大家都說過,使用gcm發送圖像是非常困難或不可能的,除非你有一個很小的圖像。另一種技術是將它分成幾部分,但嘿,這是令人討厭的,沒有人願意全部編碼。我的建議是編碼服務器以存儲可以發送到設備的密碼和圖像憑證。設備隨後使用憑證向服務器查詢以獲取圖像下載。這種技術類似於使用push來通知設備新服務器上有新數據的理論。它最初被用來製作一個儘可能小的推送服務器,但在這種情況下,它被用作發送大數據的佔位符。