社交化分享時目前移動應(yīng)用的標準配置,ShareSDK也提供了一攬子的解決方案,但考慮到項目只需要分享到微信和朋友圈即可,因此還是考慮通過微信接口進行開發(fā)。相關(guān)步驟和說明如下:
1、登錄微信開放平臺https://open.weixin.qq.com,注冊帳號,新建應(yīng)用,提交審核。審核通過(一般一個工作日內(nèi))后,會獲得應(yīng)用的AppID和AppSecret。
2、閱讀官方文檔,學(xué)習(xí)微信分享的主要步驟。
3、下載 libWeChatSDK.a,WXApi.h,WXApiObject.h 三個SDK文件并導(dǎo)入工程,并在項目的Bridging-Header中引入。
4、按照官方文檔邏輯,編寫分享代碼。
let message = WXMediaMessage()
message.title = "標題"
message.description = "描述"
message.setThumbImage(UIImage(named: "applogo.png"))
let webpageObject = WXWebpageObject()
webpageObject.webpageUrl = fullUrl
message.mediaObject = webpageObject
let req = SendMessageToWXReq()
req.bText = false
req.message = message
//WXSceneSession? = 0,? ? ? ? /**< 聊天界面? ? */
//WXSceneTimeline = 1,? ? ? ? /**< 朋友圈? ? ? */
//WXSceneFavorite = 2,
req.scene = clickIndex - 1
WXApi.sendReq(req)
5、按照上述代碼基本可以實現(xiàn)微信和朋友圈的分享,但如何捕捉分享之后的回調(diào)呢?官方文檔里沒有找到明確的答案。結(jié)合http://www.aichengxu.com/view/36179中的答案和文檔中對WXApiDelegate的說明可以找到答案,按如下操作即可實現(xiàn)回調(diào)。
class AppDelegate: UIResponder, UIApplicationDelegate,UIAlertViewDelegate,WXApiDelegate {
var window: UIWindow?
//監(jiān)控微信的啟動與分享
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
let isSuc = WXApi.handleOpenURL(url, delegate: self)
print("isSuc=\(isSuc)")
if isSuc == false{
BYCGUtil().showAlertView("微信啟動失敗")
}
return isSuc
}
func onResp(resp: BaseResp!) {
/*
WXSuccess? ? ? ? ? = 0,? ? /**< 成功? ? */
WXErrCodeCommon? ? = -1,? /**< 普通錯誤類型? ? */
WXErrCodeUserCancel = -2,? /**< 用戶點擊取消并返回? ? */
WXErrCodeSentFail? = -3,? /**< 發(fā)送失敗? ? */
WXErrCodeAuthDeny? = -4,? /**< 授權(quán)失敗? ? */
WXErrCodeUnsupport? = -5,? /**< 微信不支持? ? */
*/
print("errCode=\(resp.errCode)")
if resp.errCode == WXSuccess.rawValue{
Util().showAlertView("分享成功")
}else if resp.errCode == WXErrCodeUserCancel.rawValue{
Util().showAlertView("分享取消")
}else if resp.errCode == WXErrCodeSentFail.rawValue{
Util().showAlertView("發(fā)送失敗")
}else if resp.errCode == WXErrCodeAuthDeny.rawValue{
Util().showAlertView("授權(quán)失敗")
}else if resp.errCode == WXErrCodeUnsupport.rawValue{
Util().showAlertView("微信不支持")
}else{
Util().showAlertView("分享失敗")
}
}
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch
//微信分享
WXApi.registerApp("appid")
return true
}
}
這樣即可實現(xiàn)一個完整的微信分享流程。