iOS 分享(微信、QQ、微博)

iOS开发过程中可能会遇到需要进行第三方分享的需求,比如向QQ,微信,微博等分享,我们今天要讲到的方式是使用了一个第三方工具: http://www.sharesdk.cn

一、注册账号

去官网注册:http://www.sharesdk.cn

创建应用,最终获得 App Key,App Secret

二、SDK集成

1、下载SDK

把下载的SDK拖到项目工程,在弹出的对话框中选中"Copy items if needed"和"Create groups",并点击“Finish“按钮

2、添加依赖库文件

必须添加的依赖库:

SystemConfiguration.framework

QuartzCore.framework

CoreTelephony.framework

libicucore.dylib

libz.1.2.5.dylib

Security.framework

3、根据社交平台需要添加的依赖库

Social.framework    腾讯微博

Accounts.framework  腾讯微博

MessageUI.framework 短信和邮件

libstdc++.dylib   QQ好友和QQ空间SSO授权需要(新注册的腾讯开放平台帐号只支持SSO授权权限)

libsqlite3.dylib   QQ好友和QQ空间SSO授权需要(新注册的腾讯开放平台帐号只支持SSO授权权限)

CoreMotion.framework   Google+

CoreLocation.framework Google+

MediaPlayer.framework  Google+

CoreText.framework   Google+

AssetsLibrary.framework    Google+

AddressBook.framework  Google+

到此为止SDK集成就算完成 下来我们开始代码部分

三、初始ShareSDK和社交平台

在AppDelegate.m中添加ShareSDK头文件

1.设置根视图控制器

必须设置rootViewController。如果使用storyBoard,系统会自动设置根视图控制器。

2.初始化ShareSDK

导入头文件,加上初始化方法。

#import <ShareSDK/ShareSDK.h>

//1.初始化ShareSDK应用,字符串"ios1705"是应该换成你申请的ShareSDK应用中的Appkey

[ShareSDKregisterApp:@"ios1705"];

//2. 初始化社交平台

//2.1 代码初始化社交平台的方法

[selfinitializePlat];

[self initializePlat ]  方法见下一步(此处以微信,qq,腾讯微博 ,新浪微博为例);

3.初始化社交平台

可以用代码初始化或在ShareSDK开发者后台的社会化平台设置中填入社交平台的信息。

#import "WXApi.h"

#import "WeiboSDK.h"

#import "WeiboApi.h"

#import <TencentOpenAPI/QQApi.h>

#import <TencentOpenAPI/QQApiInterface.h>

#import <TencentOpenAPI/TencentOAuth.h>

社交平台的AppKey、AppSecret、回调地址等需要您自已去相应平台新建应用获取。

- (void)initializePlat

{

/**

连接微信应用以使用相关功能,此应用需要引用WeChatConnection.framework和微信官方SDK

http://open.weixin.qq.com上注册应用,并将相关信息填写以下字段

**/

[ShareSDKconnectWeChatWithAppId:@""

appSecret:@""

wechatCls:[WXApiclass]];

/**

连接QQ应用以使用相关功能,此应用需要引用QQConnection.framework和QQApi.framework库

http://mobile.qq.com/api/上注册应用,并将相关信息填写到以下字段

**/

//旧版中申请的AppId(如:QQxxxxxx类型),可以通过下面方法进行初始化

//    [ShareSDK connectQQWithAppId:@"QQ075BCD15" qqApiCls:[QQApi class]];

[ShareSDKconnectQQWithQZoneAppKey:@""

qqApiInterfaceCls:[QQApiInterfaceclass]

tencentOAuthCls:[TencentOAuthclass]];

//

/**

连接腾讯微博开放平台应用以使用相关功能,此应用需要引用TencentWeiboConnection.framework

http://dev.t.qq.com上注册腾讯微博开放平台应用,并将相关信息填写到以下字段

如果需要实现SSO,需要导入libWeiboSDK.a,并引入WBApi.h,将WBApi类型传入接口

**/

[ShareSDKconnectTencentWeiboWithAppKey:@""

appSecret:@""

redirectUri:@"http://www.sharesdk.cn"

wbApiCls:[WeiboApiclass]];

//

/**

连接QQ空间应用以使用相关功能,此应用需要引用QZoneConnection.framework

http://connect.qq.com/intro/login/上申请加入QQ登录,并将相关信息填写到以下字段

如果需要实现SSO,需要导入TencentOpenAPI.framework,并引入QQApiInterface.h和TencentOAuth.h,将QQApiInterface和TencentOAuth的类型传入接口

**/

//    [ShareSDK connectQZoneWithAppKey:@""

//                           appSecret:@""

//                   qqApiInterfaceCls:[QQApiInterface class]

//                     tencentOAuthCls:[TencentOAuth class]];

/**

连接新浪微博开放平台应用以使用相关功能,此应用需要引用SinaWeiboConnection.framework

http://open.weibo.com上注册新浪微博开放平台应用,并将相关信息填写到以下字段

**/

[ShareSDKconnectSinaWeiboWithAppKey:@""

appSecret:@""

redirectUri:@"http://www.sharesdk.cn"];

}

四,设置URL Scheme

1.需要依赖客户端分享或者要支持SSO授权(可以理解成跳到客户端授权)的平台都需要配置平台的URL Scheme(应用分享到社交平台后通过识别URL Scheme返回应用)。具体配置URL Scheme请参考iOS配置SSO授权

(http://wiki.mob.com/%E9%85%8D%E7%BD%AEsso%E6%8E%88%E6%9D%83-2/)。

2.需要在AppDelegate.m中添加处理打开链接的方法

- (BOOL)application:(UIApplication*)application

handleOpenURL:(NSURL*)url

{

return[ShareSDKhandleOpenURL:url

wxDelegate:self];

}

- (BOOL)application:(UIApplication*)application

openURL:(NSURL*)url

sourceApplication:(NSString*)sourceApplication

annotation:(id)annotation

{

return[ShareSDKhandleOpenURL:url

sourceApplication:sourceApplication

annotation:annotation

wxDelegate:self];

}

五、构造分享内容并分享

1.构造一个id类型的对象,把需要分享的标题、内容、图片、URL等 包装在这个对象。

在需要分享的viewController 中导入头文件

#import <ShareSDK/ShareSDK.h>

在需要分享的地方 实现如下方法

-(void)shareAct:(id)sender

{

//

NSString*imagePath = [[NSBundlemainBundle]pathForResource:@"ShareSDK"ofType:@"jpg"];

//1、构造分享内容

id publishContent = [ShareSDKcontent:@"要分享的内容"

defaultContent:@"默认内容"

image:[ShareSDKimageWithPath:imagePath]

title:@"ShareSDK"

url:@"http://www.mob.com"

description:@"这是一条演示信息"

mediaType:SSPublishContentMediaTypeNews];

//1+创建弹出菜单容器(iPad必要)

id container = [ShareSDKcontainer];

[containersetIPadContainerWithView:senderarrowDirect:UIPopoverArrowDirectionUp];

//2、弹出分享菜单

[ShareSDKshowShareActionSheet:container

shareList:nil

content:publishContent

statusBarTips:YES

authOptions:nil

shareOptions:nil

result:^(ShareType type, SSResponseState state,id statusInfo,id error,BOOLend) {

//可以根据回调提示用户。

if(state == SSResponseStateSuccess)

{

UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"分享成功"

message:nil

delegate:self

cancelButtonTitle:@"OK"

otherButtonTitles:nil,nilnil];

[alertshow];

}

elseif(state == SSResponseStateFail)

{

UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"分享失败"

message:[NSStringstringWithFormat:@"失败描述:%@",[errorerrorDescription]]

delegate:self

cancelButtonTitle:@"OK"

otherButtonTitles:nil,nilnil];

[alertshow];

}

}];

}

到此基本完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容