以前陆陆续续作过一些三方分享,都是一键集成包含各大社交软件的三方,例如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。