iOS 微信分享-官方集成

以前陸陸續續作過一些三方分享,都是一鍵集成包含各大社交軟件的三方,例如shareSDk和友盟,此次應公司要求,須要單個集成,下面是集成步驟,老規矩,有問題請留言或者評論🙏html

1.賬號申請

https://open.weixin.qq.com/ios

首先登陸微信開放平臺,註冊一個賬號c++

2.提交APP審覈

爲何必須提交app審覈呢?git

審覈2天就能夠審覈經過,經過以後爲下圖,爲應用申請了appid和appsecretgithub

3.下載最新的SDK

--這裏--去官網下載最新sdkweb

4.導入SDK

在工程Build Phases -> Link Binary With Libraries 連接如下動態庫和框架文件

 

5.設置白名單(點擊查看白名單詳細信息

6.關閉bitcode

 

 

7.設置URL 

8.使用SDK註冊你的APP

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; } } }
 
  

8.分享核心代碼

 

- (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仍是網上方法,大多都有錯點和遺漏,如下是可能遇到的錯誤以及解決方法:

1。官方Demo編譯報錯。

這個錯誤算是比較坑,你們都是衝着大家的功能來的,結果全部人下的代碼都跑不起來,坑爹啊,吐槽結束,解決辦法是按照上圖添加依賴庫(點此下載無錯版的demo微信

2。編譯不經過(下圖)


解決辦法:添加libc++.tbdapp

3。沒法跳轉至微信

根據提示信息顯示可能有兩種狀況 框架

1 iOS跳轉到其餘APP使用的是URL Scheme,在iOS9新特性中加入了URL Scheme白名單功能,須要把要跳轉的APP的URL Scheme加入到當前工程的跳轉白名單中,具體操做請看上面寫過了
ui

2 當前機器中沒有安裝微信
能夠使用WXApi.h中的isWxAppInstalled方法來判斷當前機器是否安裝了微信,從而作出相應操做

4。Terminating app due to uncaught exception 'NSInvalidArgumentException'reason: '-[__NSArrayM enqueue:]: unrecognized selector sent to instance 0x1f0a9ae0'

解決方法:

-------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

相關文章
相關標籤/搜索