6

私は Android 初心者で、Google GCM を使用してプレーン テキスト メッセージを送信しています。画像ファイルをストリームとして、または他の方法で送信することはできますか?

Java - サーバー

Android - クライアント。

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

ここでプレーンなメッセージは.addData("TEST","Hello Android").

4

4 に答える 4

16

合計サイズが最大 4096 バイトのキーと値のペアのみを送信できます。文字列パラメーター内で画像をエンコードできたとしても、それは小さな画像になります。別の方法として、画像の場所を参照する文字列 (デバイス上のローカル ファイル名、または通知を処理するときに画像をダウンロードするためにアクセスできる URL) を送信することもできます。

于 2013-03-15T15:53:07.243 に答える
5

これを行う方法について、次の 2 つのブログ投稿を書きました。

チュートリアル: AirBop を使用してメッセージ ペイロードで画像を送信する。これは、画像を base64 でエンコードする方法を示しています。

チュートリアル: AirBop を使用して BigPictureStyle 通知用の画像をプッシュする では、画像の URL をプッシュしてから画像をダウンロードする方法を示します。

どちらのチュートリアルでも AirBop をアプリケーション サーバーとして使用しますが、クライアント コードはそれとは別のものであり、一般的に使用できます。

于 2013-03-15T15:58:13.180 に答える
2

データ ペイロードが 4kB に制限されているため、非常に小さな画像しか送信できませんでした。また、何らかの方法でエンコードする必要があります。

于 2013-03-15T15:52:29.813 に答える
1

さて、ここで全体像について考えてみましょう。誰もが言っているように、小さな画像がない限り、gcm を使用して画像を送信することは非常に困難または不可能です。もう 1 つの方法は、それを分割して送信することですが、これは面倒なことです。私の提案は、デバイスに送信できるパスキーとイメージ資格情報を格納するようにサーバーをコーディングすることです。次に、デバイスは資格情報を使用してサーバーにクエリを実行し、イメージのダウンロードを取得します。この手法は、サーバーで新しいデータが利用可能になったことをプッシュを使用してデバイスに通知する理論に似ています。もともとは、プッシュをできるだけ少なく使用するサーバーを作成するために使用されていましたが、この場合、ビッグデータを送信するためのプレースホルダーとして採用されています.

于 2015-03-07T16:58:44.103 に答える