最近因為工作的項目中要接入微信開放平台,於是一直在做這方面的工作,再加上比較忙,所以只有現在才有機會來記錄一下關於程序中接入微信開放平台的事情。
目前android版只支持SDK接入微信,朋友圈分享功能只有ios支持,相信不久就會有android版本的支持的。好了,廢話不多說,進入話題,詳情請移步http://open.weixin.qq.com。
關於程序接入微信客戶端,只需要以下四步:
**********華麗的分割線**********
特別要注意簽名,一定要和你的APP簽名保持一致,否則在你分享的過程中彈不出選擇聯系人的界面。
*****************************
第一步:申請APP_ID,請移步http://open.weixin.qq.com/app/list/.在這里需要注意的是Android應用除了獲取AppID外,還需要在網站上填寫包名和簽名兩個字段,簽名的具體生成方法如下:
這里以windows平台的cygwin環境和命令行環境為例,且默認開發者已經安裝了jdk,能夠正常使用keytool
1、cygwin環境下
在cygwin環境下運行如下命令,輸出結果即為signature
keytool -exportcert -alias [alias] -keypass [alias password] -keystore [keystore file path] -storepass [keystore password] | md5sum
例如:當前路徑下包含用於對app簽名的test.keystore文件,且keystore密碼為123456,別名為openapi,別名密碼為654321,則運行如下命令:
keytool -exportcert -alias openapi -keypass 654321 -keystore ./test.keystore -storepass 123456 | md5sum
輸出結果為:8f88de9693d22430ad7ce55047ec7946
2、命令行環境下
由於命令行下系統沒有提供默認的md5sum,建議開發者自行選擇合適的md5生成工具(http://sourceforge.net/directory/os:windows/freshness:recently-updated/?q=md5 ),生成方法跟cygwin環境下類似,可以先將keytool的輸出重定向到文件,然后再用md5生成工具對該文件進行md5處理,獲得signature,結果跟cygwin環境下相同。
keytool -exportcert -alias openapi -keypass 654321 -keystore ./test.keystore -storepass 123456 > out.txt
二、下載微信終端開發工具包
三、在代碼中使用開發工具包(以上兩步詳情請移步:http://open.weixin.qq.com/document/gettingstart/android/);
這里主要說明的是本人碰到的幾個問題:
1、在接入微信客戶端的過程中一定要注意:首先判斷是否安裝有微信(使用IWXAPI類的isWXAppInstalled()方法),否則你會發現程序是正確的,但是無論如何都不會得到想要的結果,也不會報任何錯誤。
2、在接入微信客戶端的過程中一定要注意:當前的微信版本是否是4.0(使用IWXAPI類的isWXAppSupporAPI()方法),后果如上。
3、在接入微信客戶端的過程中一定要注意:分享圖片的時候,SDK協議中對縮略圖的大小作了限制,大小不能超過32K。另外限制的還有title、description等參數的大小,否則后果如上。
4、如果你的程序需要接收微信發送的請求,或者接收發送到微信請求的響應結果,需要下面3步操作:
a、在你的包名相應目錄下新建一個wxapi目錄,並在該wxapi目錄下新增一個WXEntryActivity類,該類繼承自Activity,並在manifest文件里面加上exported屬性,設置為true。
b、 實現IWXAPIEventHandler接口,微信發送的請求將回調到onReq方法,發送到微信請求的響應結果將回調到onResp方法
c、在WXEntryActivity中將接收到的intent及實現了IWXAPIEventHandler接口的對象傳遞給IWXAPI接口的handleIntent方法。
d、當微信發送請求到你的應用,將通過IWXAPIEventHandler接口的onReq方法進行回調,類似的,應用請求微信的響應結果將通過onResp回調。
最后應該注意:微信開放平台分享圖片Url是一個bug,貌似是分享不了的,現在不知道這個bug修復了沒有。