iOS 分享功能开发
2016-05-26 11:12
471 查看
iOS 开发过程中可能会遇到需要进行第三方分享的需求,比如向QQ,微信,微博等分享
如下图
我们今天要讲到的方式是使用了一个第三方工具: http://www.sharesdk.cn
一,注册账号
去官网注册:http://www.sharesdk.cn
创建应用,最终获得 App Key,App Secret
二,SDK集成
下载SDK
把下载的SDK拖到项目工程,在弹出的对话框中选中"Copy items if needed"和"Create groups",并点击“Finish“按钮
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和社交平台
必须设置rootViewController。如果使用storyBoard,系统会自动设置根视图控制器。
[objc] view plain copy
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
_window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
_window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
HelpViewController *mainController=[[HelpViewController alloc]init];
_window.rootViewController=mainController;
[_window makeKeyAndVisible];
return YES;
}
以上示例代码中讲 HelpViewController 的一个对象设置为了 此应用的rootViewcontroller;
2.初始化ShareSDK
导入头文件,加上初始化方法。
[objc] view plain copy
#import <ShareSDK/ShareSDK.h>
[objc] view plain copy
//1.初始化ShareSDK应用,字符串"iosv1101"是应该换成你申请的ShareSDK应用中的Appkey
[ShareSDK registerApp:@"iosv1101"];
//2. 初始化社交平台
//2.1 代码初始化社交平台的方法
[self initializePlat];
[self initializePlat ] 方法见下一步(此处以微信,qq,腾讯微博 ,新浪微博为例);
3.初始化社交平台
可以用代码初始化或在ShareSDK开发者后台的社会化平台设置中填入社交平台的信息。
[objc] view plain copy
#import "WXApi.h"
#import "WeiboSDK.h"
#import "WeiboApi.h"
#import <TencentOpenAPI/QQApi.h>
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
社交平台的AppKey、AppSecret、回调地址等需要您自已去相应平台新建应用获取。
[objc] view plain copy
- (void)initializePlat
{
/**
连接微信应用以使用相关功能,此应用需要引用WeChatConnection.framework和微信官方SDK
http://open.weixin.qq.com上注册应用,并将相关信息填写以下字段
**/
[ShareSDK connectWeChatWithAppId:@""
appSecret:@""
wechatCls:[WXApi class]];
/**
连接QQ应用以使用相关功能,此应用需要引用QQConnection.framework和QQApi.framework库
http://mobile.qq.com/api/上注册应用,并将相关信息填写到以下字段
**/
//旧版中申请的AppId(如:QQxxxxxx类型),可以通过下面方法进行初始化
// [ShareSDK connectQQWithAppId:@"QQ075BCD15" qqApiCls:[QQApi class]];
[ShareSDK connectQQWithQZoneAppKey:@""
qqApiInterfaceCls:[QQApiInterface class]
tencentOAuthCls:[TencentOAuth class]];
//
/**
连接腾讯微博开放平台应用以使用相关功能,此应用需要引用TencentWeiboConnection.framework
http://dev.t.qq.com上注册腾讯微博开放平台应用,并将相关信息填写到以下字段
如果需要实现SSO,需要导入libWeiboSDK.a,并引入WBApi.h,将WBApi类型传入接口
**/
[ShareSDK connectTencentWeiboWithAppKey:@""
appSecret:@""
redirectUri:@"http://www.sharesdk.cn"
wbApiCls:[WeiboApi class]];
//
/**
连接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上注册新浪微博开放平台应用,并将相关信息填写到以下字段
**/
[ShareSDK connectSinaWeiboWithAppKey:@""
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中添加处理打开链接的方法
[objc] view plain copy
- (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];
}
五,构造分享内容并分享
1.构造一个id<ISSContent>类型的对象,把需要分享的标题、内容、图片、URL等 包装在这个对象。
在需要分享的viewController 中导入头文件
[objc] view plain copy
#import <ShareSDK/ShareSDK.h>
在需要分享的地方 实现如下方法
比如在点击一个button的时候调用方法 shareAct
[objc] view plain copy
-(void)shareAct:(id)sender
{
//
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ShareSDK" ofType:@"jpg"];
//1、构造分享内容
id<ISSContent> publishContent = [ShareSDK content:@"要分享的内容"
defaultContent:@"默认内容"
image:[ShareSDK imageWithPath:imagePath]
title:@"ShareSDK"
url:@"http://www.mob.com"
description:@"这是一条演示信息"
mediaType:SSPublishContentMediaTypeNews];
//1+创建弹出菜单容器(iPad必要)
id<ISSContainer> container = [ShareSDK container];
[container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];
//2、弹出分享菜单
[ShareSDK showShareActionSheet:container
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)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享成功"
message:nil
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil nil];
[alert show];
}
else if (state == SSResponseStateFail)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
message:[NSString stringWithFormat:@"失败描述:%@",[error errorDescription]]
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil nil];
[alert show];
}
}];
}
到此基本完成
测试一下 点击微博分享
如下图
我们今天要讲到的方式是使用了一个第三方工具: http://www.sharesdk.cn
一,注册账号
去官网注册:http://www.sharesdk.cn
创建应用,最终获得 App Key,App Secret
二,SDK集成
下载SDK
把下载的SDK拖到项目工程,在弹出的对话框中选中"Copy items if needed"和"Create groups",并点击“Finish“按钮
添加依赖库文件
必须添加的依赖库:
SystemConfiguration.framework
QuartzCore.framework
CoreTelephony.framework
libicucore.dylib
libz.1.2.5.dylib
Security.framework
必须添加的依赖库:
SystemConfiguration.framework
QuartzCore.framework
CoreTelephony.framework
libicucore.dylib
libz.1.2.5.dylib
Security.framework
根据社交平台需要添加的依赖库
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,系统会自动设置根视图控制器。
[objc] view plain copy
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
_window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
_window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
HelpViewController *mainController=[[HelpViewController alloc]init];
_window.rootViewController=mainController;
[_window makeKeyAndVisible];
return YES;
}
以上示例代码中讲 HelpViewController 的一个对象设置为了 此应用的rootViewcontroller;
2.初始化ShareSDK
导入头文件,加上初始化方法。
[objc] view plain copy
#import <ShareSDK/ShareSDK.h>
[objc] view plain copy
//1.初始化ShareSDK应用,字符串"iosv1101"是应该换成你申请的ShareSDK应用中的Appkey
[ShareSDK registerApp:@"iosv1101"];
//2. 初始化社交平台
//2.1 代码初始化社交平台的方法
[self initializePlat];
[self initializePlat ] 方法见下一步(此处以微信,qq,腾讯微博 ,新浪微博为例);
3.初始化社交平台
可以用代码初始化或在ShareSDK开发者后台的社会化平台设置中填入社交平台的信息。
[objc] view plain copy
#import "WXApi.h"
#import "WeiboSDK.h"
#import "WeiboApi.h"
#import <TencentOpenAPI/QQApi.h>
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
社交平台的AppKey、AppSecret、回调地址等需要您自已去相应平台新建应用获取。
[objc] view plain copy
- (void)initializePlat
{
/**
连接微信应用以使用相关功能,此应用需要引用WeChatConnection.framework和微信官方SDK
http://open.weixin.qq.com上注册应用,并将相关信息填写以下字段
**/
[ShareSDK connectWeChatWithAppId:@""
appSecret:@""
wechatCls:[WXApi class]];
/**
连接QQ应用以使用相关功能,此应用需要引用QQConnection.framework和QQApi.framework库
http://mobile.qq.com/api/上注册应用,并将相关信息填写到以下字段
**/
//旧版中申请的AppId(如:QQxxxxxx类型),可以通过下面方法进行初始化
// [ShareSDK connectQQWithAppId:@"QQ075BCD15" qqApiCls:[QQApi class]];
[ShareSDK connectQQWithQZoneAppKey:@""
qqApiInterfaceCls:[QQApiInterface class]
tencentOAuthCls:[TencentOAuth class]];
//
/**
连接腾讯微博开放平台应用以使用相关功能,此应用需要引用TencentWeiboConnection.framework
http://dev.t.qq.com上注册腾讯微博开放平台应用,并将相关信息填写到以下字段
如果需要实现SSO,需要导入libWeiboSDK.a,并引入WBApi.h,将WBApi类型传入接口
**/
[ShareSDK connectTencentWeiboWithAppKey:@""
appSecret:@""
redirectUri:@"http://www.sharesdk.cn"
wbApiCls:[WeiboApi class]];
//
/**
连接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上注册新浪微博开放平台应用,并将相关信息填写到以下字段
**/
[ShareSDK connectSinaWeiboWithAppKey:@""
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中添加处理打开链接的方法
[objc] view plain copy
- (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];
}
五,构造分享内容并分享
1.构造一个id<ISSContent>类型的对象,把需要分享的标题、内容、图片、URL等 包装在这个对象。
在需要分享的viewController 中导入头文件
[objc] view plain copy
#import <ShareSDK/ShareSDK.h>
在需要分享的地方 实现如下方法
比如在点击一个button的时候调用方法 shareAct
[objc] view plain copy
-(void)shareAct:(id)sender
{
//
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ShareSDK" ofType:@"jpg"];
//1、构造分享内容
id<ISSContent> publishContent = [ShareSDK content:@"要分享的内容"
defaultContent:@"默认内容"
image:[ShareSDK imageWithPath:imagePath]
title:@"ShareSDK"
url:@"http://www.mob.com"
description:@"这是一条演示信息"
mediaType:SSPublishContentMediaTypeNews];
//1+创建弹出菜单容器(iPad必要)
id<ISSContainer> container = [ShareSDK container];
[container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];
//2、弹出分享菜单
[ShareSDK showShareActionSheet:container
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)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享成功"
message:nil
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil nil];
[alert show];
}
else if (state == SSResponseStateFail)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
message:[NSString stringWithFormat:@"失败描述:%@",[error errorDescription]]
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil nil];
[alert show];
}
}];
}
到此基本完成
测试一下 点击微博分享
相关文章推荐
- iOS开发之获取手机型号
- iOS或去平米分辨率 以及放大模式、高清模式
- iOS开发之获取本地沙盒等基本路径
- iOS开发之多线程了解
- sps pps AudioSpecificConfig
- iOS基础笔试题 - 集锦二
- iOS基础笔试题 - 集锦一
- IOS之本地推送
- iOS新特性之实现3D Touch
- IOS设计模式--单例设计模式
- iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?
- 《Motion Design for iOS》(二十二)
- ios唯一标示符
- 调试2
- 图片拉伸---resizableImageWithCapInsets
- iOS界面间传值的几种方式
- ios 使用ZBar读取条形码和二维码
- IOS开发中 常常遇到的遇到的警告,错误汇总,解决方法
- iOS开发技巧之LLDB打印支持frame或id类型
- IOS开发之----常用函数和常数