3

タイムライン アイテムのデザインのいくつかには複数の画像が必要ですが、すべてを確実に添付するのは困難です。timeline.insert 関数は 1 つの添付ファイルしか許可していないようで、タイムライン アイテムの挿入後に添付ファイルを挿入すると、画像がレンダリングされないことがあります。

また、タイムライン アイテム自体で setAttachments を使用してみましたが、アイテムを挿入するときに実際に添付ファイルをアップロードしているようには見えませんでした。以下のコードを使用すると、さまざまな結果が得られる傾向があります。機能する場合もあれば、画像のレンダリングに失敗する場合もあります。通知を受信して​​から表示するのを待つ時間と相関関係があるようです。表示が速すぎると、完全にレンダリングされません。

どうすればこれを克服できるか、または私が間違っていることを確認できるかについて、誰か考えや提案はありますか?

//CardFactory.java - Create TimelineItem with attachment list
public static TimelineItem getConceptCard(String conceptImage) {
    TimelineItem timelineItem = new TimelineItem();
    timelineItem.setHtml("<article class=\"photo\">\n <img src=\"attachment:0\" width=\"100%\" height=\"100%\">\n <div class=\"photo-overlay\"/>\n <section>\n <p class=\"text-auto-size\">Test</p>\n </section>\n</article>\n");
    List<Attachment> attachments = new ArrayList<Attachment>();
    Attachment img1 = new Attachment();
    img1.setId("backImage");
    img1.setContentType("image/jpeg");
    img1.setContentUrl(WebUtil.buildStaticImgUrl("cardconcepts/" + conceptImage + ".JPG"));
    attachments.add(img1);
    timelineItem.setAttachments(attachments);
    timelineItem.setNotification(new NotificationConfig().setLevel("DEFAULT"));
    return timelineItem;
}




//MainServlet.java - Send TimelineItem on button press
} else if (req.getParameter("operation").equals("insertConceptCard")) {
    TimelineItem timelineItem = CardFactory.getConceptCard(req.getParameter("conceptCard"));
    MirrorClient.insertTimelineCard(credential, timelineItem);




//MirrorClient.java - Insert TimelineItem with multiple attachments
public static void insertTimelineCard(Credential credential, TimelineItem item) throws IOException {
    Mirror.Timeline timeline = getMirror(credential).timeline();
    TimelineItem timelineItem = timeline.insert(item).execute();
    for(Attachment TAttach : item.getAttachments()){
        InputStreamContent mediaContent = new InputStreamContent(TAttach.getContentType(), new URL(TAttach.getContentUrl()).openStream());
        timeline.attachments().insert(timelineItem.getId(), mediaContent).execute();
    }
4

1 に答える 1

0

あなたの要件からそれが可能かどうかはわかりませんが、添付ファイルが公開画像である場合は、実際に添付する必要はありません。通常の http URL で img タグを使用できます。私の経験では、これらはかなり迅速にフェッチされ、頻繁に使用するとキャッシュされ、すぐにレンダリングされなくても正しくレンダリングされます。

(要件がこれらをよりプライベートに保つ必要がある場合でも、それらを添付しようとするのではなく、何らかのナンスを使用して標準の画像フェッチを使用することをお勧めします。これはあなたの質問に完全には答えていないことを認識していますが、有用な回避策になる可能性があります.)

于 2013-10-23T00:46:34.403 に答える