위 챗 공식 계 정 개발 튜 토리 얼 의 그림 과 글 소식 전 공략

머리말 및 내용 개요
이미 몇 명의 독자 가"류 봉 은 텍스트 메 시 지 를 예시 로 만 사용 하고 그림 메 시 지 를 언급 하지 않 았 으 며 그림 메 시 지 를 어떻게 사용 해 야 할 지 몰 랐 다"고 불평 했다.그래,내 가 잘 못 했 어.기본 API 를 포장 하고 프레임 워 크 를 구축 한 다음 에 텍스트 메시지 의 사용 예 시 를 제시 하면 모두 가 고양 이 를 따라 호 랑 이 를 그 릴 수 있 을 거 라 고 생각 했 는데 내 회화 실력 이 너무 떨 어 졌 기 때 문 일 수도 있다.그 려 진 고양 이 는 원래 고양이 같 지 않 은 데..
본 편 은 주로 위 챗 공식 계 정 개발 에서 그림 메시지 의 사용 과 그림 메시지 의 몇 가지 표현 형식 을 소개 한다.제목 은'그림 메시지 전 공략'이 라 고 지 었 는데 이것 은 절대 제목 당 이 아니 라 이 기 회 를 빌려 그림 메시지 와 관련 된 문제,의심,장 애 를 모두 제거 하려 는 것 이다.
그림 메시지 의 주요 매개 변수 설명
위 챗 공식 메시지 인터페이스 안내 서 를 통 해 그림 메시지 에 대한 매개 변수 소 개 를 볼 수 있 습 니 다.아래 그림 과 같 습 니 다.

그림 에서 알 수 있 듯 이:
  • 그림 메시지 의 개 수 는 10 으로 제한 된다.즉,그림 에서 ArticleCount 의 값(그림 메시지 의 개 수 는 10 개 이내 로 제한 된다)
  • 4.567917.다 중 그림 메시지 에 대해 첫 번 째 그림 과 글 의 그림 은 큰 그림 으로 나타 나 고 다른 그림 과 글 의 그림 은 작은 그림 으로 나타난다
  • 첫 번 째 그림 의 그림 크기 는 640*320 이 고 다른 그림 의 그림 크기 는 80*80 이 어야 합 니 다
  • 그림 과 글 소식 의 다양한 표현 형식.
    다음은 코드 를 통 해 그림 메시지 의 가장 주요 한 다섯 가지 표현 형식의 용법 을 직접 보 여 줍 니 다.소스 코드 는 다음 과 같 습 니 다.
    
    package org.liufeng.course.service;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
    import org.liufeng.course.message.resp.Article;
    import org.liufeng.course.message.resp.NewsMessage;
    import org.liufeng.course.message.resp.TextMessage;
    import org.liufeng.course.util.MessageUtil;
    /**
     *      
     * 
     * @author liufeng
     * @date 2013-07-25
     */
    public class CoreService {
     /**
     *          
     * 
     * @param request
     * @return
     */
     public static String processRequest(HttpServletRequest request) {
     String respMessage = null;
     try {
     // xml    
     Map<String, String> requestMap = MessageUtil.parseXml(request);
     //      (open_id)
     String fromUserName = requestMap.get("FromUserName");
     //     
     String toUserName = requestMap.get("ToUserName");
     //     
     String msgType = requestMap.get("MsgType");
     //          
     TextMessage textMessage = new TextMessage();
     textMessage.setToUserName(fromUserName);
     textMessage.setFromUserName(toUserName);
     textMessage.setCreateTime(new Date().getTime());
     textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
     textMessage.setFuncFlag(0);
     //   href           ,             ,     
     textMessage.setContent("    <a href=\"http://blog.csdn.net/lyq8479\">     </a>!");
     //           xml   
     respMessage = MessageUtil.textMessageToXml(textMessage);
     //     
     if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
     //              
     String content = requestMap.get("Content");
     //       
     NewsMessage newsMessage = new NewsMessage();
     newsMessage.setToUserName(fromUserName);
     newsMessage.setFromUserName(toUserName);
     newsMessage.setCreateTime(new Date().getTime());
     newsMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);
     newsMessage.setFuncFlag(0);
     List<Article> articleList = new ArrayList<Article>();
     //      
     if ("1".equals(content)) {
      Article article = new Article();
      article.setTitle("          Java ");
      article.setDescription("  ,80 ,          4  。        ,        ,             !");
      article.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg");
      article.setUrl("http://blog.csdn.net/lyq8479");
      articleList.add(article);
      //         
      newsMessage.setArticleCount(articleList.size());
      //              
      newsMessage.setArticles(articleList);
      //           xml   
      respMessage = MessageUtil.newsMessageToXml(newsMessage);
     }
     //      ---    
     else if ("2".equals(content)) {
      Article article = new Article();
      article.setTitle("          Java ");
      //          QQ  、    
      article.setDescription("  ,80 ," + emoji(0x1F6B9)
      + ",          4  。        ,          ,             !

    12 , 、 、 、QQ 、 。

    , : 、 、 。"); // article.setPicUrl(""); article.setUrl("http://blog.csdn.net/lyq8479"); articleList.add(article); newsMessage.setArticleCount(articleList.size()); newsMessage.setArticles(articleList); respMessage = MessageUtil.newsMessageToXml(newsMessage); } // else if ("3".equals(content)) { Article article1 = new Article(); article1.setTitle("
    "); article1.setDescription(""); article1.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg"); article1.setUrl("http://blog.csdn.net/lyq8479/article/details/8937622"); Article article2 = new Article(); article2.setTitle(" 2
    "); article2.setDescription(""); article2.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg"); article2.setUrl("http://blog.csdn.net/lyq8479/article/details/8941577"); Article article3 = new Article(); article3.setTitle(" 3
    "); article3.setDescription(""); article3.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg"); article3.setUrl("http://blog.csdn.net/lyq8479/article/details/8944988"); articleList.add(article1); articleList.add(article2); articleList.add(article3); newsMessage.setArticleCount(articleList.size()); newsMessage.setArticles(articleList); respMessage = MessageUtil.newsMessageToXml(newsMessage); } // --- else if ("4".equals(content)) { Article article1 = new Article(); article1.setTitle(" Java "); article1.setDescription(""); // article1.setPicUrl(""); article1.setUrl("http://blog.csdn.net/lyq8479"); Article article2 = new Article(); article2.setTitle(" 4
    "); article2.setDescription(""); article2.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg"); article2.setUrl("http://blog.csdn.net/lyq8479/article/details/8949088"); Article article3 = new Article(); article3.setTitle(" 5
    "); article3.setDescription(""); article3.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg"); article3.setUrl("http://blog.csdn.net/lyq8479/article/details/8952173"); Article article4 = new Article(); article4.setTitle(" 6
    "); article4.setDescription(""); article4.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg"); article4.setUrl("http://blog.csdn.net/lyq8479/article/details/8967824"); articleList.add(article1); articleList.add(article2); articleList.add(article3); articleList.add(article4); newsMessage.setArticleCount(articleList.size()); newsMessage.setArticles(articleList); respMessage = MessageUtil.newsMessageToXml(newsMessage); } // --- else if ("5".equals(content)) { Article article1 = new Article(); article1.setTitle(" 7
    "); article1.setDescription(""); article1.setPicUrl("http://0.xiaoqrobot.duapp.com/images/avatar_liufeng.jpg"); article1.setUrl("http://blog.csdn.net/lyq8479/article/details/9141467"); Article article2 = new Article(); article2.setTitle(" 8
    "); article2.setDescription(""); article2.setPicUrl("http://avatar.csdn.net/1/4/A/1_lyq8479.jpg"); article2.setUrl("http://blog.csdn.net/lyq8479/article/details/9157455"); Article article3 = new Article(); article3.setTitle(" , xiaoqrobot !"); article3.setDescription(""); // article3.setPicUrl(""); article3.setUrl("http://blog.csdn.net/lyq8479"); articleList.add(article1); articleList.add(article2); articleList.add(article3); newsMessage.setArticleCount(articleList.size()); newsMessage.setArticles(articleList); respMessage = MessageUtil.newsMessageToXml(newsMessage); } } } catch (Exception e) { e.printStackTrace(); } return respMessage; } /** * emoji (hex -> utf-16) * * @param hexEmoji * @return */ public static String emoji(int hexEmoji) { return String.valueOf(Character.toChars(hexEmoji)); } }
    상기 코드 가 실현 하 는 기능 은 사용자 가 숫자 1-5 를 보 낼 때 각각 다섯 가지 서로 다른 표현 형식의 그림 과 글 메 시 지 를 사용자 에 게 답장 하 는 것 이다.다음 과 같다.
    a)사용자 가 1 을 보 내 고 답장 메시지.참조 코드 68~81 줄,운행 효 과 는 다음 과 같 습 니 다.

    b)사용자 가 2 를 보 내 고 답장 메시지---그림 이 포함 되 지 않 습 니 다.참조 코드 82~96 줄,운행 효 과 는 다음 과 같 습 니 다.

    설명:그림 메시지 의 제목,설명 은 QQ 표정,기호 표정 을 포함 할 수 있 습 니 다.
    c)사용자 가 3 을 보 내 고 다 중 그림 메시지 에 답 합 니 다.참조 코드 97~123 줄,운행 효 과 는 다음 과 같 습 니 다.

    설명:다 중 그림 메시지 에 대한 설명 은 표시 되 지 않 으 며 제목 에 줄 바 꿈 자 를 사용 하여 표 시 를 더욱 아름 답 게 할 수 있 습 니 다.
    d)사용자 가 4 를 보 내 고 다 중 그림 메시지 에 답 합 니 다-첫 번 째 메 시 지 는 그림 을 포함 하지 않 습 니 다.참고 코드 124~158 줄,운행 효 과 는 다음 과 같 습 니 다.

    e)사용자 가 5 를 보 내 고 다 중 그림 메시지 에 답 합 니 다-마지막 메 시 지 는 그림 을 포함 하지 않 습 니 다.참조 코드 159~186 줄,운행 효 과 는 다음 과 같 습 니 다.

    이 를 통 해 알 수 있 듯 이 그림 과 글 소식 은 풍부 한 내용 과 다양한 표현 형식 을 가지 고 있 으 므 로 각자 의 특징 과 실제 사용 수요 에 따라 합 리 적 으로 활용 하 시기 바 랍 니 다.
    마지막 으로 실천 경험 에 따라 저 는 그림 과 글 소식 에 대해 사용 정 리 를 합 니 다.
    1)그림 메시지 의 Url 속성 에 값 을 부여 해 야 합 니 다.단일 그림 이 든 다 중 그림 이 든 그림 이 없 는 그림 이 든 사용자 가 클릭 할 수 있 습 니 다.Url 이 비어 있 으 면 사용자 가 클릭 하면 빈 페이지 를 엽 니 다.이것 은 사용자 에 게 매우 나 쁜 경험 을 줍 니 다.
    2)단일 그림 의 설명 만 표시 되 고 다 중 그림 의 설명 은 표시 되 지 않 습 니 다.
    3)그림 메시지 의 제목,설명 에서 QQ 이모 티 콘 과 기호 이모 티 콘 을 사용 할 수 있다.이모 티 콘 을 합 리 적 으로 활용 하면 소식 을 더욱 생동감 있 게 할 수 있다.
    4)그림 메시지 의 제목,설명 에서 줄 바 꿈 자 를 사용 할 수 있 습 니 다.줄 바 꿈 부 호 를 합 리 적 으로 사용 하면 내용 구 조 를 더욱 뚜렷하게 할 수 있다.
    5)그림 메시지 의 제목,설명 에 하이퍼텍스트 링크(html 의태그)가 지원 되 지 않 습 니 다.기술적 으로 만 실현 되 지 않 는 것 이 아니 라 논리 적 으로 도 말 이 통 하지 않 는 다.그림 메시지 의 어떤 위치 가 클릭 되 더 라 도 위 챗 에 내 장 된 브 라 우 저 로 Url 을 열 것 이다.제목,설명 에 하이퍼링크 를 몇 개 더 넣 으 면 어느 페이지 를 열 어야 할 지 모른다.왜 여러 명의 학우 들 이 모두 이 문 제 를 묻 고 있 는 지 모 르 겠 지만,설마 많은 그림 과 글 로 설계 하 는 것 이 좋 지 않 은 가?6)그림 메시지 의 링크,그림 링크 는 외부 도 메 인 이름 의 자원 을 사용 할 수 있다.예 를 들 어 이 예 에서 류 펑 의 두상,블 로그 의 링크 는 모두 CSDN 사 이 트 를 가리 키 는 자원 이다.인터넷,심지어 위 챗 공식 커 뮤 니 케 이 션 그룹 에서 그림 메시지 의 Url,PicUrl 은 외부 체인 을 사용 할 수 없다 고 생각 하 는 사람 이 많 습 니 다.이 소문 이 어디서 시작 되 었 는 지 모 르 겠 습 니 다.실천 은 진 리 를 검증 하 는 유일한 기준 입 니 다!7)지정 한 크기 의 그림 을 사용 합 니 다.첫 번 째 그림 의 그림 크기 는 640*320 이 고 다른 그림 의 그림 크기 는 80*80 이 좋 습 니 다.사용 하 는 그림 이 너무 크 면 로드 가 느 리 고 데이터 소모 가 느 립 니 다.사용 한 그림 이 너무 작 으 면 표시 후 스 트 레 칭 되 어 일 그 러 져 보기 흉 하 다.8)각 그림 메시지 의 그림 은 1-4 개 로 제어 하 는 것 을 권장 합 니 다.이렇게 하면 절대 다수의 단말기 에 한 화면 이 표시 되 고 사용자 가 한 번 훑 어보 면 메시지 의 주요 내용 을 대충 알 수 있 기 때문에 사용자 가 클릭 하고 읽 을 수 있다.이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기