위 챗 공식 계 정 개발 튜 토리 얼 의 그림 과 글 소식 전 공략
이미 몇 명의 독자 가"류 봉 은 텍스트 메 시 지 를 예시 로 만 사용 하고 그림 메 시 지 를 언급 하지 않 았 으 며 그림 메 시 지 를 어떻게 사용 해 야 할 지 몰 랐 다"고 불평 했다.그래,내 가 잘 못 했 어.기본 API 를 포장 하고 프레임 워 크 를 구축 한 다음 에 텍스트 메시지 의 사용 예 시 를 제시 하면 모두 가 고양 이 를 따라 호 랑 이 를 그 릴 수 있 을 거 라 고 생각 했 는데 내 회화 실력 이 너무 떨 어 졌 기 때 문 일 수도 있다.그 려 진 고양 이 는 원래 고양이 같 지 않 은 데..
본 편 은 주로 위 챗 공식 계 정 개발 에서 그림 메시지 의 사용 과 그림 메시지 의 몇 가지 표현 형식 을 소개 한다.제목 은'그림 메시지 전 공략'이 라 고 지 었 는데 이것 은 절대 제목 당 이 아니 라 이 기 회 를 빌려 그림 메시지 와 관련 된 문제,의심,장 애 를 모두 제거 하려 는 것 이다.
그림 메시지 의 주요 매개 변수 설명
위 챗 공식 메시지 인터페이스 안내 서 를 통 해 그림 메시지 에 대한 매개 변수 소 개 를 볼 수 있 습 니 다.아래 그림 과 같 습 니 다.
그림 에서 알 수 있 듯 이:
다음은 코드 를 통 해 그림 메시지 의 가장 주요 한 다섯 가지 표현 형식의 용법 을 직접 보 여 줍 니 다.소스 코드 는 다음 과 같 습 니 다.
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 개 로 제어 하 는 것 을 권장 합 니 다.이렇게 하면 절대 다수의 단말기 에 한 화면 이 표시 되 고 사용자 가 한 번 훑 어보 면 메시지 의 주요 내용 을 대충 알 수 있 기 때문에 사용자 가 클릭 하고 읽 을 수 있다.이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!