以前陸陸續續作過一些三方分享,都是一鍵集成包含各大社交軟件的三方,例如shareSDk和友盟,此次應公司要求,須要單個集成,下面是集成步驟,老規矩,有問題請留言或者評論🙏html
https://open.weixin.qq.com/ios
首先登陸微信開放平臺,註冊一個賬號c++
爲何必須提交app審覈呢?git
審覈2天就能夠審覈經過,經過以後爲下圖,爲應用申請了appid和appsecretgithub
點--這裏--去官網下載最新sdkweb
AppDelegate
此方法中註冊,導入import "WXApi.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [WXApi registerApp:@"xxxxxxxxxxxx"];//此爲申請下來的key通常以wx開頭 return YES; }
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ return [WXApi handleOpenURL:url delegate:self]; } -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{ return [WXApi handleOpenURL:url delegate:self]; } #pragma mark WXApiDelegate 微信分享的相關回調 // onReq是微信終端向第三方程序發起請求,要求第三方程序響應。第三方程序響應完後必須調用sendRsp返回。在調用sendRsp返回時,會切回到微信終端程序界面 - (void)onReq:(BaseReq *)req { NSLog(@"onReq是微信終端向第三方程序發起請求,要求第三方程序響應。第三方程序響應完後必須調用sendRsp返回。在調用sendRsp返回時,會切回到微信終端程序界面"); } // 若是第三方程序向微信發送了sendReq的請求,那麼onResp會被回調。sendReq請求調用後,會切到微信終端程序界面 - (void)onResp:(BaseResp *)resp { NSLog(@"回調處理"); // 處理 分享請求 回調 if ([resp isKindOfClass:[SendMessageToWXResp class]]) { switch (resp.errCode) { case WXSuccess: { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"分享成功!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; } break; default: { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"分享失敗!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alert show]; } break; } } }
核心代碼
- (IBAction)shareBtn:(UIButton *)sender { //建立發送對象實例 SendMessageToWXReq *sendReq = [[SendMessageToWXReq alloc] init]; sendReq.bText = NO;//不使用文本信息 sendReq.scene = 0;
// 發送到聊天界面 0 // 發送到朋友圈 1 // 發送到微信收藏 2
//建立分享內容對象 WXMediaMessage *urlMessage = [WXMediaMessage message]; urlMessage.title = @"";//分享標題 urlMessage.description = @"";//分享描述 [urlMessage setThumbImage:[UIImage imageNamed:@"Img"]];//分享圖片,使用SDK的setThumbImage方法可壓縮圖片大小 //建立多媒體對象 WXWebpageObject *webObj = [WXWebpageObject object]; webObj.webpageUrl = kLinkURL;//分享連接 //完成發送對象實例 urlMessage.mediaObject = webObj; sendReq.message = urlMessage; //發送分享信息 [WXApi sendReq:sendReq]; }
至此,總體的微信分享就完成了,可是不管是官方demo仍是網上方法,大多都有錯點和遺漏,如下是可能遇到的錯誤以及解決方法:
這個錯誤算是比較坑,你們都是衝着大家的功能來的,結果全部人下的代碼都跑不起來,坑爹啊,吐槽結束,解決辦法是按照上圖添加依賴庫(點此下載無錯版的demo)微信
解決辦法:添加libc++.tbdapp
根據提示信息顯示可能有兩種狀況 框架
1 iOS跳轉到其餘APP使用的是URL Scheme,在iOS9新特性中加入了URL Scheme白名單功能,須要把要跳轉的APP的URL Scheme加入到當前工程的跳轉白名單中,具體操做請看上面寫過了
ui
2 當前機器中沒有安裝微信
能夠使用WXApi.h
中的isWxAppInstalled
方法來判斷當前機器是否安裝了微信,從而作出相應操做
解決方法:
-------1.你的工程文件中選擇Build Setting,在"Other Linker Flags"中加入"-ObjC",記住-ObjC的C要大寫。
-------2.若是工程報錯"_GCControllerDidDisconnectNotification",
項目->TARGETS->iOS->Build Phases->Link Binary With Libraries
增長庫:
GameController.framework
-------3.若是還報錯xx.dylib的問題的話,則找到剛剛添加的GameController.framework,右側Required改成Opitional。