0

リッチプッシュメッセージで、使用されているhtml形式を知っています.質問は、特定のサーバーサービスを利用できないことです.特定のサーバーでホストせずにメッセージに画像を表示する方法はありますか.つまり、方法はありますかhtmlで画像を表示するための画像タグ以外のhtmlで?コンテンツはhtmlページ自体にローカルに保存されていますか?または他の可能な方法はありますか?

言語 :オブジェクト C

4

1 に答える 1

0

画像を html (リッチ テキスト メッセージ) と一緒にインラインで送信します。これにより、受信トレイをオフラインで読むことができます。

使用しているプログラミング言語を指定しなかったので、php で取得したものを示します。

/**
 * htmlReportImageFromUrl - Takes a url to an image (png), return a html inline image in a <div/>
 *
 * @author Kent Behrends, kent@bci.com, 2012-04-12
 * @param string $url to a png image   
 * @param string $imageFormat and format that Imagick supports, default to 'png'
 * @param int $resizeImage in pixels, defualt to 48
 * @param string $altText for the image 
 * @return string html <div/> string with image data or <div>Bad Image</div>
 */
function htmlReportImageFromUrl($url, $imageFormat = "png", $resizeImage = "48", $altText = "image") {
    $image = new Imagick ();
    $f = fopen ( $url, 'rb' );
    $status = $image->readImageFile ( $f );
    fclose ( $f );
    if (! $status) return '<div>Bad Image</div>';
    $image->setImageFormat ( $imageFormat );
    $image->resizeImage ( $resizeImage, 0, imagick::FILTER_LANCZOS, - 1 );
    $encoded = base64_encode ( $image->getImageBlob () );
    return '<div><img src="data:image/png;base64,' . $encoded . '" alt="'.$altText.'"></div>';
}

この関数の使用例とその出力。

$kentsImage = 'http://www.gravatar.com/avatar/6376f5c874dd475857c1b4c082f2e665?s=128&d=identicon&r=PG';
$message = '<html><body>';
$message .= '<h4>Sample image from gravatar.com</h4>';
$message .= '<table><tr><td>Kent</td><td>'.htmlReportImageFromUrl($kentsImage).'</td></tr></table>';
$message .= '</body></html>';
print $message;

$message をペイロードとして Urban Airships AirMail の URL に送信します。

フォーマットされた出力である src="data:image/png... は切り捨てられています。

<html>
  <body>
    <h4>Sample image from gravatar.com</h4>
    <table>
      <tr>
        <td>Kent</td>
        <td>
          <div><img src="data:image/png;base64,iVBORw0KGgoAAAANS ...</div>
        </td>
      </tr>
    </table>
  </body>
</html>
于 2012-06-20T06:09:22.463 に答える