iOS 社交化分享功能
iOS 开发过程中可能会遇到需要进行第三方分享的需求,比如向QQ,微信,微博等分享
如下图
我们今天要讲到的方式是使用了一个第三方工具: 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
根据社交平台需要添加的依赖库
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,系统会自动设置根视图控制器。
- - (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
导入头文件,加上初始化方法。
- #import <ShareSDK/ShareSDK.h>
- //1.初始化ShareSDK应用,字符串"iosv1101"是应该换成你申请的ShareSDK应用中的Appkey
- [ShareSDK registerApp:@"iosv1101"];
- //2. 初始化社交平台
- //2.1 代码初始化社交平台的方法
- [self initializePlat];
[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上注册应用,并将相关信息填写以下字段
- **/
- [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中添加处理打开链接的方法
- - (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 中导入头文件
- #import <ShareSDK/ShareSDK.h>
在需要分享的地方 实现如下方法
比如在点击一个button的时候调用方法 shareAct
- -(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 社交化分享功能的更多相关文章
- cordova 插件 调用iOS社交化分享(ShareSDK:微信QQ分享)
1.github上已有的插件:https://github.com/nwpuhmz/ShareSDKPlugin 2.安装插件 cordova plugin add https://github.co ...
- iOS开发- 三步快速集成社交化分享工具ShareSDK
1.前言 作为现在App里必不可少的用户分享需要,社交化分享显然是我们开发app里较为常用的. 最近因为公司App有社交化分享的需要,就特此研究了会,拿出来与大家分享. 想要集成社交会分享,我们可以使 ...
- iOS- 三步快速集成社交化分享工具ShareSDK
http://www.cnblogs.com/qingche/p/3727559.html 1.前言 作为现在App里必不可少的用户分享需要,社交化分享显然是我们开发app里较为常用的. 最近因为公司 ...
- 社交化分享SDK for Unity
前言 社交化分享,即分享到社交网络. 本文主要记录的是在Unity集成社交化分享SDK,现主流的分享SDK有如下: 1.友盟社交化分享 for unity 2.ShareSDK分享 for unity ...
- HtmlAgilityPack解析器在WP8.1下报错,不仅如此,社交化分享也报错。
以前WP7下是用的HtmlAgilityPack和 XPath来解析网页,很好用. 但是在Wp8.1下,这个里面却缺少了一个很重要的方法. HtmlDocument doc = new HtmlDoc ...
- iOS ShareSDK 三方分享/登录使用
原文 http://www.cnblogs.com/CoderAlex/p/4860352.html 一: 快速集成 1.前言 作为现在App里必不可少的用户分享需要,社交化分享显然是我们开发app里 ...
- iOS快速集成友盟社会化分享功能(v6.1.1)
1. U-Share SDK集成 1.1 下载U-Share SDK 通过iOS社会化组件选择所需的社交平台后进行下载,下载链接http://dev.umeng.com/social/ios/sdk ...
- 浅谈iOS与社交化网络
CHENYILONG Blog 社交化网络 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong ...
- iOS系统自带分享功能
很多APP中都带有社交分享功能,通过用户的分享,让更多地人去了解和使用这个APP,目前社交分享是移动互联网应用程序推广的最重要手段之一,国内较或的分享平台有微信,IOS6后苹果集成的新浪微博,还有IO ...
随机推荐
- 第15章-输入/输出 --- 理解Java的IO流
(一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...
- Java Selenium 定位元素 实现的一个注册功能
import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.Alert; impor ...
- Ng1从1.3开始的变更史
从今有个ng1 spa项目,项目可能会有ng1的版本升级问题,特简要摘录从1.3的主要版本变更,所以内容来自migration guide. 1.3的主要变更: 1.controller不能再以全局简 ...
- Android layout_margin 无效的解决办法
http://www.aichengxu.com/view/31025 1.如果LinearLayout中使用Android:layout_marginRight不起作用,通过测试原来在android ...
- 数据库中row_number()、rank()、dense_rank() 的区别
row_number的用途非常广泛,排序最好用它,它会为查询出来的每一行记录生成一个序号,依次排序且不会重复,注意使用row_number函数时必须要用over子句选择对某一列进行排序才能生成序号. ...
- 鼠标拖拽定位和DOM各种尺寸详解
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java开源生鲜电商平台-用户表的设计(源码可下载)
Java开源生鲜电商平台-用户表的设计(源码可下载) 说明:由于该系统属于B2B平台,不设计到B2C的架构. 角色分析:买家与卖家. 由于买家与卖家所填写的资料都不一样,需要建立两站表进行维护,比如: ...
- 2018年,传言QQ首次被神秘黑客DDOS攻击,Python可以实现?
于2018-5-10日晚 网络流传黑客DDOS攻击了QQ服务器,导致大家聊天发送内容时出现感叹号.我们都知道一般情况下出现感叹号都是你的网络不稳定,或者...别人已经删除你了.然而昨晚很奇怪,发出的内 ...
- Nginx+uwsgi部署django
0. 登录远程服务器并准备 ssh 用户@IP -p 端口 回车后,要求输入服务器密码,再输入密码 更新软件源 sudo apt-get update sudo apt-get upgrade 1. ...
- linux下svn(subversion)服务端添加工程及配置权限
linux下svn(subversion)服务端添加工程及配置权限 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/9010507.html 此篇我只是将所做过的 ...