0

在丰富的推送消息中,我知道它使用的 html 格式。问题是我没有任何可用的特定服务器服务。是否有一些方法可以在消息中显示图像而不将其托管在特定服务器上。换句话说,有什么方法在除图像标签之外的 html 中以在 html 中显示图像?内容存储在 html 页面本身本地的位置?或者还有其他可能的方法吗?

语言:Obj 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 回答