亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android 第三方應(yīng)用接入微信平臺(tái)研究情況分享(二)

 更新時(shí)間:2013年01月06日 15:39:11   作者:  
微信平臺(tái)開放后倒是挺火的,許多第三方應(yīng)用都想試下,這里把我的整個(gè)研究情況給出來,希望可以共同學(xué)習(xí),感興趣的朋友可以了解下

微信平臺(tái)開放后倒是挺火的,許多第三方應(yīng)用都想試下,畢竟可以利用微信建立起來的關(guān)系鏈來拓展自己的應(yīng)用還是挺不錯(cuò)的,可以節(jié)約很多在社交方面的開銷,我最近由于實(shí)習(xí)需要也在研究這個(gè)東西,不過發(fā)現(xiàn)網(wǎng)上的相關(guān)資料還是挺少的,這里把我的整個(gè)研究情況給出來,希望可以共同學(xué)習(xí)。

第三方應(yīng)用接入微信平臺(tái)(1)

二、第三方應(yīng)用與微信通信的時(shí)序圖

2、接收微信的請(qǐng)求信息


前面四步和之前的“1、向微信發(fā)送消息”是一樣的,不需要重復(fù)執(zhí)行,這里給出來只是為了

流程的整體性。當(dāng)我們注冊(cè)后,應(yīng)用圖標(biāo)會(huì)出現(xiàn)在微信聊天的列表中,點(diǎn)擊加號(hào)即可去添加,

添加后,如果聊天時(shí)點(diǎn)擊應(yīng)用圖標(biāo)將會(huì)回調(diào)第三方應(yīng)用,如上面時(shí)序圖所示。這里補(bǔ)充一點(diǎn),

當(dāng)我們向微信發(fā)消息的媒體類型是appdata類型,即WXAppExtendObject對(duì)象時(shí),好友在

收到消息時(shí)點(diǎn)擊消息,會(huì)出現(xiàn)類似的回調(diào)過程,需要修改的就是此時(shí)onReq被調(diào)用時(shí),type

為ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX而不是ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX 。

當(dāng)我們?cè)趏nReq方法中接到ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX

類型的消息時(shí),如果想要把響應(yīng)發(fā)回微信,可用如下代碼段來實(shí)現(xiàn)


可以發(fā)現(xiàn)響應(yīng)的消息對(duì)象和發(fā)請(qǐng)求是一樣的,下面看看效果圖

這是聊天窗口,前提是你已經(jīng)點(diǎn)擊加號(hào)將應(yīng)用添加到下面的列表中


此時(shí),如果點(diǎn)擊第三方應(yīng)用,會(huì)回調(diào)我們?cè)O(shè)置好的界面


這個(gè)界面是自己定義的,你可以在接到微信的請(qǐng)求后自定義響應(yīng)界面。

說了半天,還沒說到onReq方法或是前面講的onResp方法的由來,

也就是說如果我們想要處理給微信發(fā)請(qǐng)求后的回饋或是響應(yīng)微信的請(qǐng)求

應(yīng)該怎么做,我們需要下面3步操作:

a. 可以在你的包名相應(yīng)目錄下新建一個(gè)wxapi目錄,并在該wxapi目錄下新增一個(gè)
WXEntryActivity類,該類繼承自Activity(當(dāng)然這個(gè)路徑是自定義的,隨便你自己)

并在manifest文件里面加上exported屬性,設(shè)置為true,例如:

復(fù)制代碼 代碼如下:

<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTop" >

b. 實(shí)現(xiàn)IWXAPIEventHandler接口,微信發(fā)送的請(qǐng)求將回調(diào)到onReq方法,發(fā)送
到微信請(qǐng)求的響應(yīng)結(jié)果將回調(diào)到onResp方法

終于出現(xiàn)了這兩個(gè)神奇的方法,可以看看他們的大致用法

復(fù)制代碼 代碼如下:

<SPAN style="FONT-SIZE: 18px; FONT-FAMILY: Microsoft YaHei"> @Override
public void onReq(BaseReq req) {
switch (req.getType()) {
case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
goToGetMsg();
break;
case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
goToShowMsg((ShowMessageFromWX.Req) req);
break;
default:
break;
}
}</SPAN>

復(fù)制代碼 代碼如下:

<SPAN style="FONT-SIZE: 18px; FONT-FAMILY: Microsoft YaHei"> @Override
public void onResp(BaseResp resp) {
int result = 0;

switch (resp.errCode) {
case BaseResp.ErrCode.ERR_OK:
result = R.string.errcode_success;
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
result = R.string.errcode_cancel;
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
result = R.string.errcode_deny;
break;
default:
result = R.string.errcode_unknown;
break;
}

Toast.makeText(this, result, Toast.LENGTH_LONG).show();
}</SPAN>

c. 在WXEntryActivity中將接收到的intent及實(shí)現(xiàn)了IWXAPIEventHandler接口的對(duì)
象傳遞給IWXAPI接口的handleIntent方法:
復(fù)制代碼 代碼如下:

api.handleIntent(intent, this);

ok,這三步可以結(jié)合時(shí)序圖一起來理解,都可以一一對(duì)應(yīng)的。

最后給出一些注意點(diǎn),也是容易混淆的,我都寫過Demo驗(yàn)證過了,如果大家覺得有不對(duì)的,歡迎指出,歡迎討論

1、注冊(cè)是本地注冊(cè),且只需要注冊(cè)一次,但是在發(fā)送的時(shí)候微信服務(wù)器會(huì)檢測(cè)第三方應(yīng)用的合法性

2、說白了就是在本地第三方應(yīng)用將要發(fā)送的內(nèi)容先發(fā)給微信進(jìn)程,微信進(jìn)程收到后再將消息發(fā)給自己的微信好友

3、卸載或者反注冊(cè)后,第三方應(yīng)用將不會(huì)出現(xiàn)在本機(jī)微信的可添加應(yīng)用列表中

4、使用微信開放平臺(tái)發(fā)送的媒體對(duì)象中,網(wǎng)頁(yè),音頻和視頻只能是網(wǎng)絡(luò)URL,圖片可發(fā)送本地路徑,本地字節(jié)數(shù)據(jù),網(wǎng)絡(luò)URL,文件可以發(fā)送本地字節(jié)數(shù)據(jù)和本地路徑,附帶在媒體對(duì)象中的字節(jié)數(shù)組,微信默認(rèn)會(huì)是點(diǎn)擊則給出下載界面,下載后存儲(chǔ)的路徑是在/sdcard/Tecent/MicroMsg/本機(jī)微信帳號(hào)(一般是一串字母數(shù)字的組合體)/attachment文件夾下,這個(gè)路徑不需要自己去記錄,微信會(huì)在媒體對(duì)象的filepath字段中記錄,此時(shí)一定注意的是當(dāng)你響應(yīng)微信的show請(qǐng)求時(shí),媒體對(duì)象中的filedata字段是為空的,即使你在發(fā)送的時(shí)候附帶在了這個(gè)字段中,如前面所說,只能用filepath這個(gè)字段。

如果要自行處理只能是appdata類型數(shù)據(jù),理由下面給出

appdata類型的對(duì)象唯一特殊點(diǎn)就只是告訴微信這個(gè)消息點(diǎn)擊時(shí)需要調(diào)用第三方應(yīng)用,而其他類型的媒體對(duì)象被點(diǎn)擊時(shí)所顯示的是微信的默認(rèn)頁(yè)面

5、微信根據(jù)transaction字段決定消息在聊天框中的表現(xiàn)以及點(diǎn)擊后的響應(yīng),只有appdata被點(diǎn)擊時(shí)可以調(diào)用第三方應(yīng)用的進(jìn)程,所觸發(fā)的方法是實(shí)現(xiàn)了IWXAPIEventHandler接口的類的onReq方法,類型是ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX而在微信中和好友聊天時(shí)點(diǎn)擊第三方應(yīng)用圖標(biāo)所所觸發(fā)的方法是實(shí)現(xiàn)了IWXAPIEventHandler接口的類的onReq方法,類型是ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX

6、微信會(huì)根據(jù)第三方應(yīng)用是否注冊(cè)來給出應(yīng)用安裝的信息,比如傳給微信好友一個(gè)音頻消息時(shí),當(dāng)好友點(diǎn)擊那個(gè)消息,微信會(huì)以一個(gè)WebView來load音頻消息中的URL,不過在此前會(huì)在URL后面附加一些微信定義的信息,其中就會(huì)包括一個(gè)字段是isInstalled有關(guān)微信包裝后的URL的具體格式,我們可以將網(wǎng)絡(luò)斷開,然后再去點(diǎn)擊,這時(shí)自然就出現(xiàn)了那個(gè)經(jīng)典界面,你也就可以看到URL的真面目了因?yàn)槲易约簩懙膁emo都在實(shí)習(xí)結(jié)束后丟失了,所以給一個(gè)官方的demo下載,如果有不清楚的可以交流

謝謝合作,希望共同學(xué)習(xí)。

相關(guān)文章

最新評(píng)論