由于公司需要、要求此次三方登录全部用官方SDK,需要配置友盟和ShareSDK的同学,这篇文章帮不上太多忙,看一下就好。
1、集成SDK
1.1、(手动集成)下载并解压SDK:下载链接,并拖拽 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件到Xcode⼯工程内。
1.2、(通过CocoaPods集成)
pod 'WechatOpenSDK'
2、添加依赖库(CocoaPods集成的不用添加)
SystemConfiguration.framework
libz.tbd
libsqlite3.0.tbd
libc++.tbd
CoreTelephony.framework
3、新增⼀一条URL Scheme:选中⼯工程Target -> Info -> URLTypes;
identifier随便写,URL scheme写成微信开放平台申请的appid
微信URL scheme
4、添加⽩白名单:LSApplicationQueriesSchemes新增⽩名单****
微信白名单
5、AppDelegate中向微信注册Appid,并添加处理回调的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WXApi registerApp:WxAppid enableMTA:YES];
return YES;
}
//iOS9.0以前使用
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
return YES;
}
// 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
[WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
return YES;
}
代理在哪个类实现的回调方法 就写哪个类就行了。
以上集成配置 微信登录和微信分享是一样的,做一遍操作即可。
1、微信登录
//微信登录(微信登录按钮点击事件,可在回调代理中获取微信授权成功code)
- (void)WeChatLogin:(UIButton *)sender{
if ([WXApi isWXAppInstalled]) {
WXApiManager *manager = [WXApiManager sharedManager];
manager.delegate = self;
SendAuthReq *req = [[SendAuthReq alloc] init];
req.scope = @"snsapi_userinfo";
req.state = @"111111";
[WXApi sendReq:req];
}
else {
[self setupAlertController];
}
}
#pragma mark - WXApiManagerDelegate======================微信支付/微信登录/微信分享回调代理================WXApiManagerDelegate
-(void)loginSuccessByCode:(NSString *)code{
//回调成功,吊起登录接口
SLog(@"微信登录授权成功");
//调用后台微信授权登录接口
[self getWeChatLoginData:code];
}
现在微信登录基本操作已经完事了,接下来绑定手机号,填写信息什么的,就看产品怎么表演了。
以上是微信登录
以下是微信分享
2、微信分享
// 就这么一个方法就行了
- (void)WeChatShare{
WXApiManager *manager = [WXApiManager sharedManager];
manager.delegate = self;
NSString *kLinkURL = shareUrlStr;
NSString *kLinkTitle = shareTitleStr;
NSString *kLinkDescription = shareDetailStr;
SendMessageToWXReq *req1 = [[SendMessageToWXReq alloc]init];
// 是否是文档
req1.bText = NO;
// WXSceneSession = 0, /**< 聊天界面 */
// WXSceneTimeline = 1, /**< 朋友圈 */
// WXSceneFavorite = 2,
req1.scene = WXSceneSession;
//创建分享内容对象
WXMediaMessage *urlMessage = [WXMediaMessage message];
urlMessage.title = kLinkTitle;//分享标题
urlMessage.description = kLinkDescription;//分享描述
[urlMessage setThumbImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:shareImageStr]]]];//分享图片,使用SDK的setThumbImage方法可压缩图片大小
//创建多媒体对象
WXWebpageObject *webObj = [WXWebpageObject object];
webObj.webpageUrl = kLinkURL;//分享链接
//完成发送对象实例
urlMessage.mediaObject = webObj;
req1.message = urlMessage;
//发送分享信息
[WXApi sendReq:req1];
}
#pragma mark - WXApiManagerDelegate====================WXApiManagerDelegate
-(void)shareSuccessByCode:(int)code{
//分享成功提示
[SVProgressHUD showSuccessWithStatus:@"分享成功!"];
}