WxMessageRouter消息路由器,不知道你們理解了多少,接下來(lái)還是詳細(xì)講解一下需要注意的細(xì)節(jié)。
提到這個(gè)路由器,就要說(shuō)說(shuō)另一個(gè)東西:WxMessageRouterRule。簡(jiǎn)稱(chēng)規(guī)則(Rule)。
定義規(guī)則,用于對(duì)來(lái)自微信服務(wù)器的消息進(jìn)行過(guò)濾和篩選,只針對(duì)有效消息進(jìn)行處理,提高服務(wù)器處理效率。
通過(guò)鏈?zhǔn)脚渲寐酚梢?guī)則(Rule),根據(jù)規(guī)則把來(lái)自微信的消息交給handler處理。
//初始化一個(gè)路由器,把wxService傳入。
WxMessageRouter router = new WxMessageRouter(wxService);
//新建路由規(guī)則,通過(guò)rule()方法創(chuàng)建新的規(guī)則,然后鏈?zhǔn)教顚?xiě)過(guò)濾條件。MSG_TYPE等參數(shù)填入WxConst中的常量,這里不作展示,可以查看WxConst代碼或官方文檔,有注釋。
router.rule().msgType("MSG_TYPE").event("EVENT").eventKey("EVENT_KEY").content("CONTENT").matcher(matcher).interceptor(interceptor, ...).handler(handler, ...).end()
.rule().msgType("MSG_TYPE")...//另外一個(gè)匹配規(guī)則.end();
// 將WxXmlMessage交給消息路由器,處理后得到結(jié)果。
WxXmlOutMessage xmlOutMsg = router.route(wxXmlMessage);
//正則表達(dá)式:^[0-9]*$只接受數(shù)字消息,其他消息過(guò)濾。
router.rule().rContent("^[0-9]*$").handler(new DemoHandler()).end();
去除多余消息,高效處理爭(zhēng)對(duì)性消息,真是好用又簡(jiǎn)單。
至此,如果你跟著做,并且都成功了話(huà)。你已經(jīng)入門(mén)了wx-tools了。以后無(wú)非就是根據(jù)用戶(hù)需求添加路由規(guī)則,并添加處理器去處理,入門(mén)教程就到此結(jié)束了。
DEMO的源碼下載地址: music_collector
其實(shí)DEMO里還有關(guān)鍵字搜索并推送圖文消息給用戶(hù)的功能. 文檔里沒(méi)演示出來(lái).有興趣的同學(xué)可以查閱源代碼.
此外, 關(guān)于如何使用IService里的接口,會(huì)在第三節(jié)詳細(xì)提供demo用法,各位大大有需要可以去看看。
其實(shí)最終的效果是這樣的:
更多建議: