标签:des http io os ar 使用 for strong sp
目录
第一步:将ShareSDK导入到你的工程中
将下载的SDK文件解压,拖动里面的ShareSDK文件夹到工程中,而不是下载的整个文件,这点请注意,如下图
拖到工程中后,弹出以下对话框,勾选"Copy items into destination group‘s folder(if needed)",并点击“Finish“按钮, 如图
导入后最终效果如下图:
注意:请务必在上述步骤中选择“Create groups for any added folders”单选按钮组。如果你选择“Create folder references for any added folders”,一个蓝色的文件夹引用将被添加到项目并且将无法找到它的资源。
第二步:添加依赖框架
添加以下framework到您的工程中
SystemConfiguration.framework
QuartzCore.framework
CoreTelephony.framework
libicucore.dylib
libz.1.2.5.dylib
Security.framework
libstdc++.dylib 如果不需要QQ空间SSO登录和QQ好友分享可以不添加(这个如果是建立在你把SDK中对应的平台库文件删除掉,才能不添加,由于下载的SDK中每个平台的库都是默认存在的,所以必须要加上这个库,以下同理)
libsqlite3.dylib 如果不需要QQ空间SSO登录和QQ好友分享可以不添加
CoreMotion.framework 如果不使用Google+可以不添加
CoreLocation.framework 如果不使用Google+可以不添加
MediaPlayer.framework 如果不使用Google+可以不添加
CoreText.framework 如果不使用Google+可以不添加
AssetsLibrary.framework 如果不使用Google+可以不添加
AddressBook.framework 如果不使用Google+可以不添加
MessageUI.framework 如果不集成邮件和短信可以不添加
添加步骤流程见下图
第三步:引入头文件和注册ShareSDK的AppKey
- 登录ShareSDK的官方网站添加应用并获得AppKey。如果尚未注册,请点击这里注册
打开*AppDelegate.m(*代表你的工程名字)? 导入文件头ShareSDK.h
#import <ShareSDK/ShareSDK.h>
在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerApp方法来初始化SDK
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[ShareSDK registerApp:@"api20"]; //参数为ShareSDK官网中添加应用后得到的AppKey
//……
return YES;
}
第四步:配置社会化平台的AppKeys
(温馨提示:因为SDK优先默认的是我们的后台的每个平台的初始化信息,所以如果后台的初始化有开启,也就是社会平台化设置选项那里平台状态有勾上的话,那就一定要与你本地初始化信息配置的一致哦)
在- (BOOL)application: didFinishLaunchingWithOptions:方法中添加如下语句为各个分享平台的应用信息进行设置.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//添加新浪微博应用 注册网址 http://open.weibo.com
[ShareSDK connectSinaWeiboWithAppKey:@"568898243"
appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
redirectUri:@"http://www.sharesdk.cn"];
//当使用新浪微博客户端分享的时候需要按照下面的方法来初始化新浪的平台
[ShareSDK connectSinaWeiboWithAppKey:@"568898243"
appSecret:@"38a4f8204cc784f81f9f0daaf31e02e3"
redirectUri:@"http://www.sharesdk.cn"
weiboSDKCls:[WeiboSDK class]];
//添加腾讯微博应用 注册网址 http://dev.t.qq.com
[ShareSDK connectTencentWeiboWithAppKey:@"801307650"
appSecret:@"ae36f4ee3946e1cbb98d6965b0b2ff5c"
redirectUri:@"http://www.sharesdk.cn"
wbApiCls:[WeiboApi class]];
//添加QQ空间应用 注册网址 http://connect.qq.com/intro/login/
[ShareSDK connectQZoneWithAppKey:@"100371282"
appSecret:@"aed9b0303e3ed1e27bae87c33761161d"
qqApiInterfaceCls:[QQApiInterface class]
tencentOAuthCls:[TencentOAuth class]];
//添加QQ应用 注册网址 http://open.qq.com/
[ShareSDK connectQQWithQZoneAppKey:@"100371282"
qqApiInterfaceCls:[QQApiInterface class]
tencentOAuthCls:[TencentOAuth class]];
//添加微信应用 注册网址 http://open.weixin.qq.com
[ShareSDK connectWeChatWithAppId:@"wx4868b35061f87885"
wechatCls:[WXApi class]];
//添加网易微博应用 注册网址 http://open.t.163.com
[ShareSDK connect163WeiboWithAppKey:@"T5EI7BXe13vfyDuy"
appSecret:@"gZxwyNOvjFYpxwwlnuizHRRtBRZ2lV1j"
redirectUri:@"http://www.shareSDK.cn"];
//添加搜狐微博应用 注册网址 http://open.t.sohu.com
[ShareSDK connectSohuWeiboWithConsumerKey:@"SAfmTG1blxZY3HztESWx"
consumerSecret:@"yfTZf)!rVwh*3dqQuVJVsUL37!F)!yS9S!Orcsij"
redirectUri:@"http://www.sharesdk.cn"];
//添加豆瓣应用 注册网址 http://developers.douban.com
[ShareSDK connectDoubanWithAppKey:@"07d08fbfc1210e931771af3f43632bb9"
appSecret:@"e32896161e72be91"
redirectUri:@"http://dev.kumoway.com/braininference/infos.php"];
//添加人人网应用 注册网址 http://dev.renren.com
[ShareSDK connectRenRenWithAppId:@"226427"
appKey:@"fc5b8aed373c4c27a05b712acba0f8c3"
appSecret:@"f29df781abdd4f49beca5a2194676ca4"
renrenClientClass:[RennClient class]];
//添加开心网应用 注册网址 http://open.kaixin001.com
[ShareSDK connectKaiXinWithAppKey:@"358443394194887cee81ff5890870c7c"
appSecret:@"da32179d859c016169f66d90b6db2a23"
redirectUri:@"http://www.sharesdk.cn/"];
//添加Instapaper应用 注册网址 http://www.instapaper.com/main/request_oauth_consumer_token
[ShareSDK connectInstapaperWithAppKey:@"4rDJORmcOcSAZL1YpqGHRI605xUvrLbOhkJ07yO0wWrYrc61FA"
appSecret:@"GNr1GespOQbrm8nvd7rlUsyRQsIo3boIbMguAl9gfpdL0aKZWe"];
//添加有道云笔记应用 注册网址 http://note.youdao.com/open/developguide.html#app
[ShareSDK connectYouDaoNoteWithConsumerKey:@"dcde25dca105bcc36884ed4534dab940"
consumerSecret:@"d98217b4020e7f1874263795f44838fe"
redirectUri:@"http://www.sharesdk.cn/"];
//添加Facebook应用 注册网址 https://developers.facebook.com
[ShareSDK connectFacebookWithAppKey:@"107704292745179"
appSecret:@"38053202e1a5fe26c80c753071f0b573"];
//添加Twitter应用 注册网址 https://dev.twitter.com
[ShareSDK connectTwitterWithConsumerKey:@"mnTGqtXk0TYMXYTN7qUxg"
consumerSecret:@"ROkFqr8c3m1HXqS3rm3TJ0WkAJuwBOSaWhPbZ9Ojuc"
redirectUri:@"http://www.sharesdk.cn"]; //添加搜狐随身看应用 注册网址 https://open.sohu.com [ShareSDK connectSohuKanWithAppKey:@"e16680a815134504b746c86e08a19db0" appSecret:@"b8eec53707c3976efc91614dd16ef81c" redirectUri:@"http://sharesdk.cn"]; //添加Pocket应用 注册网址 http://getpocket.com/developer/ [ShareSDK connectPocketWithConsumerKey:@"11496-de7c8c5eb25b2c9fcdc2b627" redirectUri:@"pocketapp1234"]; //添加印象笔记应用 注册网址 http://dev.yinxiang.com [ShareSDK connectEvernoteWithType:SSEverNoteTypeSandbox consumerKey:@"sharesdk-7807" consumerSecret:@"d05bf86993836004"]; //添加LinkedIn应用 注册网址 https://www.linkedin.com/secure/developer [ShareSDK connectLinkedInWithApiKey:@"ejo5ibkye3vo" secretKey:@"cC7B2jpxITqPLZ5M" redirectUri:@"http://sharesdk.cn"]; //……}
注意:可以根据自己需要集成的平台来选择部分平台进行初始化。配置中指定的AppKey等信息需要到相关的社会化平台中通过应用登记来获取。
第五步:设置rootViewController属性
在- (BOOL)application: didFinishLaunchingWithOptions:方法中检查是否有设置window对象的rootViewController属性。如果没有,则进行设置。类似如下代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.viewController = [[[UINavigationController alloc] init] autorelease];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
注意:必须设置rootViewController,否则会导致无法弹出授权界面或者分享界面点击后无反映,卡死现象等。如果您创建应用时使用storyBoard可以省略此步骤,系统会自动设置rootViewController。
第六步:分享内容
进行内容分享首选需要构造一个内容对象,该对象用于指定哪些内容需要分享到社会化平台中。然后再通过showShareActionSheet方法进行分享。
分享内容一般在 viewDidAppear 事件之后、响应用户动作的方法中进行,如:响应按钮按下的方法中。
代码如下:
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ShareSDK" ofType:@"jpg"];
//构造分享内容
id<ISSContent> publishContent = [ShareSDK content:@"分享内容"
defaultContent:@"默认分享内容,没内容时显示"
image:[ShareSDK imageWithPath:imagePath]
title:@"ShareSDK"
url:@"http://www.sharesdk.cn"
description:@"这是一条测试信息"
mediaType:SSPublishContentMediaTypeNews];
[ShareSDK showShareActionSheet:nil
shareList:nil
content:publishContent
statusBarTips:YES
authOptions:nil
shareOptions: nil
result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
if (state == SSResponseStateSuccess)
{
NSLog(@"分享成功");
}
else if (state == SSResponseStateFail)
{
NSLog(NSLocalizedString(@"TEXT_SHARE_FAI", @"发布失败!error code == %d, error code == %@"), [error errorCode], [error errorDescription]);
}
}];
运行效果如下图:
点击下载代码
可选:iPad版本分享菜单集成
如果需要在iPad中显示分享,则需要使用+ container;功能接口创建一个容器对象并调用容器对象的setIPadContainer系列方法来设置iPad版显示容器。
一般而言,我们会建议使用一个比较小的、作为当前viewController 所控制的view 的subview 来作为“锚点”,来设置 container。例如一个已有的button。
这样分享界面或者授权界面才能正确显示。
其实现代码如下:
//创建弹出菜单容器
id<ISSContainer> container = [ShareSDK container];
[container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];
然后将container对象传入showShareActionSheet的第一个参数中,如:
//弹出分享菜单
[ShareSDK showShareActionSheet:container
shareList:nil
content:publishContent
statusBarTips:YES
authOptions:authOptions
shareOptions:shareOptions
result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
if (state == SSResponseStateSuccess)
{
NSLog(@"分享成功");
}
else if (state == SSResponseStateFail)
{
NSLog(@"分享失败,错误码:%d,错误描述:%@", [error errorCode], [error errorDescription]);
}
}];
可选:使用服务器托管模式初始化SDK
使用托管模式可以把相关社交平台申请得到得AppKey放入ShareSDK服务器进行托管,不需要在本地代码中初始化各个社交平台信息。目前
2.8.7版本以及之后版本ShareSDK一开始都是默认托管初始化的,配置应用信息如下图:(注意:在调整这些设置时需要过将近15分钟才会生效,备
注这个选项可以不用设置,但其他的选项是一定要设置的,如果没设置,会导致授权失败等错误。而且目前版本不能用代码来控制短链的打开和关闭,只能通过以下
的设置,选择勾上转短链或者不勾来打开或关闭转短链的设置,在设置好信息的情况下,记得保存下你的设置)
打开*AppDelegate.m(*代表你的工程名字)? 导入文件头ShareSDK.h
#import <ShareSDK/ShareSDK.h>
在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerApp方法来初始化SDK
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[ShareSDK registerApp:@"api20"] //目前2.8.7版本之后使用这个方法来初始化,上面那个方法已经无效
//……
return YES;
}
注意:如果之前已操作过步骤3来进行初始化,那么请进去后台的社会化平台设置的选项,选择你要分享的平台,将这个平台里基本初始化信息填上,然后状态勾上,才能激活托管模式
在使用服务器托管配置信息初始化时,由于从服务器获取信息有一定的时间延迟,因此为保证可以在正确初始化平台后调用相关功能,SDK中提供了一个waitAppSettingComplete的方法,用于等待设置App信息完成后执行相关操作。其用法如下:
[ShareSDK waitAppSettingComplete:^{
//在这里面调用相关的ShareSDK功能接口代码
}];
可选:添加微信平台分享
这里有一个可供参考的 微信平台集成的例子 可供下载参考
登录微信开放平台(http://open.weixin.qq.com/ )注册应用并取得应用的AppID,
打开*-Info.plist(*代表你的工程名字)。添加一项用于微信客户端回调的URL Scheme,其格式为:微信的AppID(如:wx4868b35061f87885)。操作步骤如图所示:
打开*AppDelegate.m(*代表你的工程名字)文件,导入微信SDK的头文件:
检查是否已加入handleOpenURL的处理方法,如果没有则添加如下代码:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [ShareSDK handleOpenURL:url
wxDelegate:self];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:self];
}
在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//添加微信应用
[ShareSDK connectWeChatWithAppId:@"wx6dd7a9b94f3dd72a" //此参数为申请的微信AppID
wechatCls:[WXApi class]];
//……
}
在该模式下不需要在本地初始化应用配置,由于需要依赖微信SDK进行分享,因此需要导入微信SDK的分享类型,在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//导入微信需要的外部库类型,如果不需要微信分享可以不调用此方法
[ShareSDK importWeChatClass:[WXApi class]];
//……
}
可选:添加QQ好友平台分享
登录QQ互联(http://connect.qq.com/
)注册成为开发者并登记应用取得AppId(如果配置QQ空间时已申请应用Id可以不需要重复申请,直接使用QQ空间中申请的Id)。
打开*-Info.plist(*代表你的工程名字)。添加一项用于QQ客户端回调的URL Scheme,其格式为:"QQ” +
AppId的16进制(如果appId转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则最终填入为:QQ05FB8B52
注意:转换后的字母要大写)。操作步骤如图所示:
然后打开工程中的*AppDelegate.m(*代表你的工程名字)?文件,导入QQSDK的头文件:
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
检查是否已加入handleOpenURL的处理方法,如果没有则添加如下代码:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [ShareSDK handleOpenURL:url
wxDelegate:self];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:self];
}
在- (BOOL)application: didFinishLaunchingWithOptions:方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//添加QQ应用
[ShareSDK connectQQWithQZoneAppKey:@"100371282" //该参数填入申请的QQ AppId
qqApiInterfaceCls:[QQApiInterface class]
tencentOAuthCls:[TencentOAuth class]];
//……
}
在该模式下不需要在本地初始化应用配置,由于需要依赖QQ SDK进行分享,因此需要导入QQ SDK的分享类型,在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//导入QQ互联和QQ好友分享需要的外部库类型,如果不需要QQ空间SSO和QQ好友分享可以不调用此方法
[ShareSDK importQQClass:[QQApiInterface class]
tencentOAuthCls:[TencentOAuth class]];
//……
}
注意:在手机QQ开发者平台注册的appId,在初始化时需要使用-connectQQWithAppId:qqApiCls:来进行初始化。
可选:添加Google+平台分享
登录Google+开发者平台(https://code.google.com/apis/console/ )注册应用并取得应用的ClientID。
确认GoogleOpenSource.framework和GooglePlus.framework是否已经加入到工程中,如果没有则从ShareSDK包中的Extend目录中把GooglPlusSDK目录拖入到工程中。如图所示:
打开Build Settings,在Other linker flags中加入-ObjC标识。操作步骤如图所示:
打开*-Info.plist(*代表你的工程名字)。添加一项用于Google+客户端回调的URL
Scheme,其格式为:BundleID(如 cn.appgo.sharebyone)。同时URL
identifier也需要填入BundleID。操作步骤如图所示:
然后打开工程中的*AppDelegate.m(*代表你的工程名字)?文件,导入Google+的头文件:
#import <GoogleOpenSource/GoogleOpenSource.h>
#import <GooglePlus/GooglePlus.h>
检查是否已加入handleOpenURL的处理方法,如果没有则添加如下代码:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [ShareSDK handleOpenURL:url
wxDelegate:self];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:self];
}
在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//初始化Google+
[ShareSDK connectGooglePlusWithClientId:@"232554794995.apps.googleusercontent.com" //该参数传入应用的ClientID
clientSecret:@"PEdFgtrMw97aCvf0joQj7EMk" //该参数传入应用的ClientSecret
redirectUri:@"http://localhost" //回调地址
signInCls:[GPPSignIn class]
shareCls:[GPPShare class]];
//……
}
在该模式下不需要在本地初始化应用配置,由于需要依赖Google+ SDK进行分享,因此需要导入Google+ SDK的分享类型,在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
[ShareSDK importGooglePlusClass:[GPPSignIn class]
shareClass:[GPPShare class]];
//……
}
注意:集成该平台后只能在iOS5.0以上系统版本中运行。
可选:添加Pinterest平台分享
登录Pinterest开发者平台(http://developers.pinterest.com/ )注册应用并取得应用的ClientID。
然后确认Pinterest.framework是否已经加入到工程中,如果没有则从ShareSDK包中的Extend目录中把Pinterest.embeddedframework目录拖入到工程中。如图:
打开*-Info.plist(*代表你的工程名字)。找到URL types配置项(如果没有则新增),展开URL types –
URL identifier中填入Bundle ID,在URL types –URL
Schemes下新增一项用于Pinterest的Scheme(如果不添加则会导致无法返回应用)。其填写格式为:pin +
clientID(你在Pinterest中申请的clientID)。如:pin1432928。如图所示:
然后打开工程中的*AppDelegate.m(*代表你的工程名字)?文件,导入Pinterest的头文件:
#import <Pinterest/Pinterest.h>
检查是否已加入handleOpenURL的处理方法,如果没有则添加如下代码:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [ShareSDK handleOpenURL:url
wxDelegate:self];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:self];
}
在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//初始化Pinterest
[ShareSDK connectPinterestWithClientId:@"1432928" //此参数为申请的ClientID
pinterestCls:[Pinterest class]];
//……
}
在该模式下不需要在本地初始化应用配置,由于需要依赖Pinterest SDK进行分享,因此需要导入Pinterest SDK的分享类型,在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
[ShareSDK importPinterestClass:[Pinterest class]];
可选:添加易信平台分享
登录易信开放平台(http://open.yixin.im/ )注册应用并取得应用的AppID,
打开*-Info.plist(*代表你的工程名字)。添加一项用于易信客户端回调的URL Scheme,其格式为:易信的AppID(如:yx0d9a9f9088ea44d78680f3274da1765f)。操作步骤如图所示:
打开*AppDelegate.m(*代表你的工程名字)文件,导入易信SDK的头文件:
检查是否已加入handleOpenURL的处理方法,如果没有则添加如下代码:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [ShareSDK handleOpenURL:url
wxDelegate:self];
}
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:self];
}
在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//添加易信应用
[ShareSDK connectYiXinWithAppId:@"yx0d9a9f9088ea44d78680f3274da1765f"
yixinCls:[YXApi class]];
//……
}
在该模式下不需要在本地初始化应用配置,由于需要依赖易信SDK进行分享,因此需要导入易信SDK的分享类型,在- application: didFinishLaunchingWithOptions: 方法内添加如下语句:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//……
//导入微信需要的外部库类型,如果不需要微信分享可以不调用此方法
[ShareSDK importYiXinClass:[YXApi class]];
//……
}
(转)iOS快速集成指南
标签:des http io os ar 使用 for strong sp
原文地址:http://www.cnblogs.com/garypluto/p/4048821.html