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,系统会自动设置根视图控制器。

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  2. // Override point for customization after application launch.
  3. _window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
  4. _window.backgroundColor =[UIColor colorWithRed:249/255.0 green:249/255.0 blue:249/255.0 alpha:1];
  5. HelpViewController *mainController=[[HelpViewController alloc]init];
  6. _window.rootViewController=mainController;
  7. [_window makeKeyAndVisible];
  8. return YES;
  9. }

以上示例代码中讲 HelpViewController 的一个对象设置为了 此应用的rootViewcontroller;

2.初始化ShareSDK

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

  1. #import <ShareSDK/ShareSDK.h>
  1. //1.初始化ShareSDK应用,字符串"iosv1101"是应该换成你申请的ShareSDK应用中的Appkey
  2. [ShareSDK registerApp:@"iosv1101"];
  3. //2. 初始化社交平台
  4. //2.1 代码初始化社交平台的方法
  5. [self initializePlat];

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

3.初始化社交平台

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

  1. #import "WXApi.h"
  2. #import "WeiboSDK.h"
  3. #import "WeiboApi.h"
  4. #import <TencentOpenAPI/QQApi.h>
  5. #import <TencentOpenAPI/QQApiInterface.h>
  6. #import <TencentOpenAPI/TencentOAuth.h>

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

  1. - (void)initializePlat
  2. {
  3. /**
  4. 连接微信应用以使用相关功能,此应用需要引用WeChatConnection.framework和微信官方SDK
  5. http://open.weixin.qq.com上注册应用,并将相关信息填写以下字段
  6. **/
  7. [ShareSDK connectWeChatWithAppId:@""
  8. appSecret:@""
  9. wechatCls:[WXApi class]];
  10. /**
  11. 连接QQ应用以使用相关功能,此应用需要引用QQConnection.framework和QQApi.framework库
  12. http://mobile.qq.com/api/上注册应用,并将相关信息填写到以下字段
  13. **/
  14. //旧版中申请的AppId(如:QQxxxxxx类型),可以通过下面方法进行初始化
  15. //    [ShareSDK connectQQWithAppId:@"QQ075BCD15" qqApiCls:[QQApi class]];
  16. [ShareSDK connectQQWithQZoneAppKey:@""
  17. qqApiInterfaceCls:[QQApiInterface class]
  18. tencentOAuthCls:[TencentOAuth class]];
  19. //
  20. /**
  21. 连接腾讯微博开放平台应用以使用相关功能,此应用需要引用TencentWeiboConnection.framework
  22. http://dev.t.qq.com上注册腾讯微博开放平台应用,并将相关信息填写到以下字段
  23. 如果需要实现SSO,需要导入libWeiboSDK.a,并引入WBApi.h,将WBApi类型传入接口
  24. **/
  25. [ShareSDK connectTencentWeiboWithAppKey:@""
  26. appSecret:@""
  27. redirectUri:@"http://www.sharesdk.cn"
  28. wbApiCls:[WeiboApi class]];
  29. //
  30. /**
  31. 连接QQ空间应用以使用相关功能,此应用需要引用QZoneConnection.framework
  32. http://connect.qq.com/intro/login/上申请加入QQ登录,并将相关信息填写到以下字段
  33. 如果需要实现SSO,需要导入TencentOpenAPI.framework,并引入QQApiInterface.h和TencentOAuth.h,将QQApiInterface和TencentOAuth的类型传入接口
  34. **/
  35. //    [ShareSDK connectQZoneWithAppKey:@""
  36. //                           appSecret:@""
  37. //                   qqApiInterfaceCls:[QQApiInterface class]
  38. //                     tencentOAuthCls:[TencentOAuth class]];
  39. /**
  40. 连接新浪微博开放平台应用以使用相关功能,此应用需要引用SinaWeiboConnection.framework
  41. http://open.weibo.com上注册新浪微博开放平台应用,并将相关信息填写到以下字段
  42. **/
  43. [ShareSDK connectSinaWeiboWithAppKey:@""
  44. appSecret:@""
  45. redirectUri:@"http://www.sharesdk.cn"];
  46. }

四,设置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中添加处理打开链接的方法

  1. - (BOOL)application:(UIApplication *)application
  2. handleOpenURL:(NSURL *)url
  3. {
  4. return [ShareSDK handleOpenURL:url
  5. wxDelegate:self];
  6. }
  7. - (BOOL)application:(UIApplication *)application
  8. openURL:(NSURL *)url
  9. sourceApplication:(NSString *)sourceApplication
  10. annotation:(id)annotation
  11. {
  12. return [ShareSDK handleOpenURL:url
  13. sourceApplication:sourceApplication
  14. annotation:annotation
  15. wxDelegate:self];
  16. }

五,构造分享内容并分享

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

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

  1. #import <ShareSDK/ShareSDK.h>

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

比如在点击一个button的时候调用方法 shareAct

  1. -(void)shareAct:(id)sender
  2. {
  3. //
  4. NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"ShareSDK" ofType:@"jpg"];
  5. //1、构造分享内容
  6. id<ISSContent> publishContent = [ShareSDK content:@"要分享的内容"
  7. defaultContent:@"默认内容"
  8. image:[ShareSDK imageWithPath:imagePath]
  9. title:@"ShareSDK"
  10. url:@"http://www.mob.com"
  11. description:@"这是一条演示信息"
  12. mediaType:SSPublishContentMediaTypeNews];
  13. //1+创建弹出菜单容器(iPad必要)
  14. id<ISSContainer> container = [ShareSDK container];
  15. [container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];
  16. //2、弹出分享菜单
  17. [ShareSDK showShareActionSheet:container
  18. shareList:nil
  19. content:publishContent
  20. statusBarTips:YES
  21. authOptions:nil
  22. shareOptions:nil
  23. result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
  24. //可以根据回调提示用户。
  25. if (state == SSResponseStateSuccess)
  26. {
  27. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享成功"
  28. message:nil
  29. delegate:self
  30. cancelButtonTitle:@"OK"
  31. otherButtonTitles:nil, nil nil];
  32. [alert show];
  33. }
  34. else if (state == SSResponseStateFail)
  35. {
  36. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"分享失败"
  37. message:[NSString stringWithFormat:@"失败描述:%@",[error errorDescription]]
  38. delegate:self
  39. cancelButtonTitle:@"OK"
  40. otherButtonTitles:nil, nil nil];
  41. [alert show];
  42. }
  43. }];
  44. }

到此基本完成

测试一下 点击微博分享

iOS 分享功能开发的更多相关文章

  1. app分享功能开发

    最近在开发一个社交平台的app需要用到分享功能,本来想自己开发的,在网上花了很长时间查了很多教程结果却不尽人意,无意中看到还有类似的开源组件友推,结合自己的开发经验,把一些集成步骤和问题整理成文档奉献 ...

  2. 微信jssdk分享功能开发

    先理解下分享: 在app端 ,经常能看见 分享按钮的功能,(分享给朋友,分享到朋友圈,分享到QQ空间等等): https://open.weixin.qq.com/(微信开发平台),这需要到开放平台注 ...

  3. 关于微信分享功能开发的一些bug

    wx.onMenuShareTimeline({//onMenuShareTimeline title: (h('#mainForm').children('.content').inf('value ...

  4. Android中使用ShareSDK集成分享功能

    引言      现在APP开发集成分享功能已经是非常普遍的需求了.其他集成分享技术我没有使用过,今天我就来介绍下使用ShareSDK来进行分享功能开发的一些基本步骤和注意点,帮助朋友们避免一些坑.好了 ...

  5. AndroidStudio用微信官方方法接入微信分享功能

    转载请注明出处:http://www.cnblogs.com/wangoublog/p/5367950.html 现在微信的功能众所周知,用户量.影响力也是惊人,很多应用接入微信的功能已成为一种不可缺 ...

  6. 微信开发(一)基于Wx-java的微信分享功能

    最近在做微信服务号开发,简单总结一下,便于自己学习积累和分享给大家: 环境介绍: Spring+ Spring MVC +Mybatis 开发语言: JAVA 微信公众平台的开发中,微信只公布了一个基 ...

  7. iOS快速集成友盟社会化分享功能(v6.1.1)

    1.  U-Share SDK集成 1.1 下载U-Share SDK 通过iOS社会化组件选择所需的社交平台后进行下载,下载链接http://dev.umeng.com/social/ios/sdk ...

  8. iOS Simulator功能介绍关于Xamarin IOS开发

    iOS Simulator功能介绍关于Xamarin IOS开发 iOS Simulator功能介绍 在图1.38所示的运行效果中,所见到的类似于手机的模型就是iOS Simulator.在没有iPh ...

  9. 【微信开发】【Asp.net MVC】-- 微信分享功能

    内嵌在微信中的网页,右上角都会有一个默认的分享功能.如下图所示,第一个为自定义的效果,第二个为默认的效果.实现了自定义的分享链接是不是更让人有点击的欲望?下面讲解下开发的过程. 一.准备,设置js接口 ...

随机推荐

  1. selenium遇到不可编辑input和隐藏input如何赋值

    js = 'document.getElementsByName("m:csr_mt_gnccspjclfbxd:bmshldID")[0].type="text&quo ...

  2. C++/C# 托管扩展 更改概要 [转]

    源文 :https://msdn.microsoft.com/zh-cn/library/ms235298%28v=vs.100%29.aspx Visual Studio 2010 其他版本 此概要 ...

  3. 线段树专题—ZOJ1610 Count the Colors

    题意:给一个n,代表n次操作,接下来每次操作表示把[l.r]区间的线段涂成k的颜色当中,l,r,k的范围都是0到8000 分析:事实上就是拿线段树维护一段区间的颜色,整体用到的是线段树的区间更新把,可 ...

  4. Could not open lock file/var/lib/dpkg/lock

    apt-get时出现错误提示: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailabl ...

  5. C++必知必会(1)

    条款1数据抽象 抽象数据类型的用途在于将变成语言扩展到一个特定的问题领域.一般对抽象数据类型的定义须要准训下面步骤: 1.     为类型取一个描写叙述性的名字 2.     列出类型所能运行的操作 ...

  6. codeforces 486C Palindrome Transformation 贪心求构造回文

    点击打开链接 C. Palindrome Transformation time limit per test 1 second memory limit per test 256 megabytes ...

  7. OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法

    <span style="font-size:24px;">//////第一种方法 // NSMutableArray *arr = [NSMutableArray a ...

  8. 缷载vs2015后项目不能加载问题

    当加载项目时出现MSBuildToolsPath is not specified for the ToolsVersion "14.0" defined at "HKE ...

  9. Source Insight 4.0 破解和使用

    参考出处: https://blog.csdn.net/u011604775/article/details/81698062 https://blog.csdn.net/user11223344ab ...

  10. 利用JS最真实的模拟鼠标点击

    为了破解永乐票务登录验证码问题 http://www.228.com.cn/auth/login?logout 当然,打码的过程自然依赖第三方平台,但问题是,哪怕平台给了你需要点击的(相对)坐标.你又 ...