iOS QQ、微信、新浪微博原生分享和登录
闲话少说,直奔主题。
我们的APP有一个分享到第三方平台的需求,最开始的时候我用的是uemng的SDK做的,但是随着我们应用需求不断的改变和umengSDK的不断更新,烦恼的问题越来越多。大致有一下几点:
1.umeng不同版本的分享界面总是变来变去,这让我跟Android的界面总是出现差异;
2.umeng最近的更新速度越来越快,改动也越来越大,甚至连分享的头文件和接口都变了,更新版本后还要改动代码,实在是烦;
3.最新版的SDK不再支持自定义界面(6.xx具体从哪个版本我记不清了)。
为了彻底解决这样的烦恼,我决定自己直接集成第三方平台原生的SDK。这样用起来就会更加的灵活。
QQ:
1.登录 腾讯开发平台 注册账号并完成认证。
2. 选择应用接入
3.创建应用
4.选择对应的平台,选择创建应用(此时已经分配了APP ID和APP KEY)
5.填写相关信息应用小图标将会显示在分享内容的底部,应用图标是授权登录界面显示的自己应用的图标。图标一定要按规定尺寸上传,且不能有透明度
6.终端信息是必须要选一个的。具体如何填写看下图
7.填写完成后提交审核就好了(不提交审核也能测试用)。
下载 QQSDK 我下面讲的是iOS_SDK_V3.1.3
环境搭建:
1.将 TencentOpenAPI.framework导入项目中。
2.增加URL Scheme,QQ +十六进制APP ID,不足八位在首部补0。(如appid=1105988369则scheme=QQ41EC0B11) tencent +十进制 APP ID。(如appid=1105988369则scheme=tencent1105988369);
3.添加SDK依赖的系统库文件。分别是”Security.framework”,“libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。
4.在工程配置中的“Build Settings”中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-ObjC”(注意大小写)。
5.在Xcode 6.0以后创建工程时,默认可能没有单独设置Bundle display name属性值。但是因为SDK需要用到Bundle display name的值,所以务必请检查确保这个属性存在,如果没有请添加上。
6.授权登录白名单需添加(mqq,wtloginmqq2,mqqopensdkapiv3,mqqwpa,mqqopensdkapiv2,mqqopensdkssologin),分享白名单(mqqapi)。
下面包含QQ、微信和新浪微博所需的所有白名单
到此所有配置工作完成。
正式接入代码:
1.导入头文件 #import "TencentOpenAPI.framework/Headers/TencentOAuth.h"
2.初始化SDK
3.重写AppDelegate的application: openURL: options:方法(授权回调信息会走这里)
4.在代码中实现TencentSessionDelegate和TencentLoginDelegate协议中的方法(一些注意事项我在代码中标注了就不一一列出来说明了)
5.授权登录(授权登录信息会回调到上面的代理方法中)
关于授权信息说明如下,用户可根据需求添加
6.分享
分享纯文本内容(不支持QQ空间)
分享纯图片内容(不支持QQ空间)
分享网页内容(支持QQ好友和QQ空间)
分享音乐(支持QQ好友和QQ空间)
分享视频(支持QQ好友和QQ空间)
QQ内容到此结束。如果还想了解QQSDK的其他功能可以到 QQ开放平台--->应用接入--->资料库 中查看相关文档。
微信:
1.登录 微信开放平台 注册账号并完成认证。
2.选择移动应用开发
3.创建应用
4.填写应用信息
5.平台信息
6.填写完成后提交审核,微信大概需要7天(我申请一般是3-5个工作日)的时间审核。
7.审核通过后我们会得到一个AppID,AppSecret需要我们区生成(AppSecret平台不会帮我们保留,每次点生成都会生成一个新的)
8.生成AppSecret需要再次用在微信开放平台上注册的微信号的微信来扫码,且该微信号必须要是绑定了银行卡号的(因为申请登录授权需要收费)。
9.由于开通微信授权登录需要交300RMB,所以我这里就没有申请,不过后面会贴上授权登录的代码。
下载 微信SDK 我下面讲的是 WeChatOpenSDK1.7.6
环境搭建:
1.SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件导入项目中。
2.增加URL Scheme,微信AppID(如AppID=wx74dd36eeeca3be9f则scheme=wx74dd36eeeca3be9f)。
3.添加SDK依赖的系统库文件。分别是”SystemConfiguration.framework, libz.dylib, libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework”。
4.在工程配置中的“Build Settings”中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-ObjC”(注意大小写)。
5.授权登录和分享白名单需添加(wechat,weixin)。
正式接入代码:
1.导入头文件#import "WXApi.h"
2.初始化SDK
3.重写AppDelegate的application: openURL: options:方法(授权回调信息会走这里)
4.在代码中实现WXApiDelegate协议中的方法(授权登录和分享结果数据都会回调到onResp:方法中)
分享和登录授权回调 请求用户信息5.授权登录(授权登录信息会回调到上面的代理方法onResp中)
登录流程是先调出微信登录授权页 —— 用户授权成功后(resp.errCode==0时)—— 用code获取用户access_token 和 openid —— 再用 access_token 和 openid 请求用户详细信息(昵称、性别、头像、地区等等)。
* 微信官方文档建议把获取用户token和用户信息的操作放在自己服务器处理,这样我们只需要把code传给自己的后台,让他们获取到用户信息后把用户信息返回给我们即可。
6.分享 (分享状态信息会回调到上面的代理方法onResp中)
分享纯文本内容
分享纯图片内容
分享网页内容
分享音乐
分享视频
微信内容到此结束。如果还想了解微信SDK的其他功能可以到 微信开放平台--->资源中心--->移动应用 中查看相关文档。
新浪微博:
1.登录 新浪微博开放平台 注册账号并完成认证。
2.选择移动应用
立即接入
继续创建
填写应用信息
授权回调页设置 (推荐使用默认地址:https://api.weibo.com/oauth2/default.html)
填写完成后保存信息,提交审核即可,由于我只是测试demo,所以审核是通不过的,但正是项目是没有问题的。不提交审核也能用作测试。
项目创建完成,开始集成WeiboSDK
下载 WeiboSDK 我下面讲的是WeiboSDK3.1.4
环境搭建:
1.将GitHub上下载的libWeiboSDK文件夹导入项目中,其中包含WeiboSDK.h、WeiboUser.h、WBHttpRequest.h、WBHttpRequest+WeiboUser.h、WBHttpRequest+WeiboGame.h、WBHttpRequest+WeiboShare.h、WBHttpRequest+WeiboToken.h、WBSDKBasicButton.h、WBSDKRelationshipButton.h、WBSDKCommentButton.h、WeiboSDK+Statistics.h、这11个.h文件以及libWeiboSDK.a和WeiboSDK.bundle,总共13个文件
2.增加URL Scheme,wb +App Key。(如App Key=3510022995则scheme=wb3510022995)。
3.添加SDK依赖的系统库文件。分别是”QuartzCore.framework、ImageIO.framework、SystemConfiguration.framework、Security.framework、CoreTelephony.framework、CoreText.framework、UIKit.framework、Foundation.framework、CoreGraphics.framework、libz.dylib、libsqlite3.dylib”。
4.在工程配置中的“Build Settings”中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-ObjC”(注意大小写)。
5.授权登录和分享白名单需添加(weibosdk2.5,weibosdk,sinaweibo,sinaweibohd)。
正式接入代码:
1.导入头文件#import "WeiboSDK.h"
2.初始化SDK
3.重写AppDelegate的application: openURL:sourceApplication:annotation:方法(授权回调信息会走这里,且我介绍的这个版本的回调只走这个方法)
4.在代码中实现WeiboSDKDelegate协议中的方法(授权登录和分享结果数据都会回调到didReceiveWeiboResponse:方法中)
注意:如果用户没有安装客户端或者不能跳转客户端的分享会走到else if 的判断里面。
5.授权登录(授权登录信息会回调到上面的代理方法didReceiveWeiboResponse:中)
6.分享 (分享状态信息会回调到上面的代理方法didReceiveWeiboResponse:中)
注意:新浪支持分享文本、图片和多媒体,三者可独立或组合分享,但分享内容不能为空,且不能同时分享图片和多媒体。
新浪微博内容到此结束。如果还想了解新浪SDK的其他功能可以到 新浪微博开放平台--->文档--->移动应用 中查看或下载相关文档和资源。
本想再加一个umeng使用说明的,但由于开头我说到的三点问题,想了想还是算了,想了解的可以私信我。
由于这篇文章是在写demo之后很久才整理的,可能在一些细节上讲的不够清楚或有出入。如有问题可在下面留言或私信我。