美文网首页SwiftObject-C
iOS QQ、微信、新浪微博原生分享和登录

iOS QQ、微信、新浪微博原生分享和登录

作者: 古子林 | 来源:发表于2017-04-12 10:44 被阅读577次

    闲话少说,直奔主题。

    我们的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之后很久才整理的,可能在一些细节上讲的不够清楚或有出入。如有问题可在下面留言或私信我。

    相关文章

      网友评论

      • Dylan大魔王:楼主写的不错,我有个跳过选择面板直接分享的demo,互相学习
        https://github.com/TsnumiDC/TSShareHelper
        Dylan大魔王:@古子林 估计是大小有限制吧,系统的分享图片都是有大小限制的,视频估计也是
        古子林:嗯,我看了一下,你用的是系统的分享,我也写过,有一点我没弄明白,想请教一下,系统分享视频为啥不能分享到微信朋友圈?
      • 背着吉他去流浪:不知道楼主有没有遇到过这个问题, Failed to load Info.plist from bundle at path /Users/cain/Library/Developer/CoreSimulator/Devices/C5A3B68E-C30C-49BD-A7B5-027251BCC5CC/data/Library/Caches/com.apple.mobile.installd.staging/temp.rGlfaE/extracted/Payload/FishSwimInformation.app/Frameworks/TencentOpenAPI.framework
        古子林:你好,我没有遇到过这样的错误,我帮你Google查了一下,有很多解决方法,你可以自己搜一下。给你贴一个我查的链接 :https://stackoverflow.com/questions/41270887/failed-to-load-info-plist-from-bundle-at-path

      本文标题:iOS QQ、微信、新浪微博原生分享和登录

      本文链接:https://www.haomeiwen.com/subject/gebhdttx.html