社交网络编程API之iOS系统自带分享
社交网络编程API
社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类:
- SLComposeViewController
- 提供撰写社交信息(如微博信息)的视图控制器,有iOS系统提供UI,就是写入要分享内容的小弹出框。
- SLRequest封装了HTTP请求,提供了同一的请求社交网络服务的接口,能够直接与社交网路服务通信的能力,没有UI需要自己编写设计.
- 除了Social框架外,还有可能用到UIActivityViewControlelr和ACAccount.UIActivityViewController也是iOS6的新的内容,它提供了一个分享列表视图控制器。而ACAccount是Accounts框架中的一个类,ACAccount对象封装了存储在账户数据库中用户账户信息,使用SLRequest访问社交网络服务时,需要使用ACAccount对象提供 用户账户信息。
iOS6分享列表------UIActivityViewController
在iOS6之后提供了一个分享列表视图,它通过UIActivityViewController管理。苹果设计它的主要目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选单。
内置活动列表项
内置了9个活动列表项目,他们是下面的9个常量定义的:
- UIActivityTypePostToFacebook,Facebook活动列表项;
- UIActivityTypePostToTwitter,Twitter活动列表项;
- UIActivityTypePostToWeibo,新浪微博活动列表项;
- UIActivityTypeMessage,iOS中的iMessage应用活动那个列表项;
- UIActivityTypeMail,发送Mail活动列表项;
- UIActivityTypePrint,共享打印活动列表项;
- UIActivityTypeCopyToPasteboard,复制到剪切板活动列表项;
- UIActivityTypeAssignToContact,访问联系人活动列表项;
- UIActivityTypeSaveToCameraRoll,访问设备上的相册活动列表项;
自定义活动列表项
有时候根据共享内容不同,需要自定义活动列表项。例如一个视频,需要共享到优酷。下面介绍自定义活动列表项。
凡是继承UIActivity抽象类的子类对象都可以放到列表中呈现出来。这包括了系统内置的9个活动列表,也可是是我们自定义的列表项。UIActivity抽象类中需要子类实现的方法如下:
- -(NSString *)activityType,为自定义活动列表项指定一个服务类型标识
- -(NSString *)activityTitle,指定在列表中出现的名称
- -(UIImage *)activityImage,指定在列表中显示的图标
- -(BOOL)canPerformWithActivityItems:(NSArray *)activityItems,指定活动列表中的某些数据项目,是否可以执行,返回YES可以执行,返回NO,不可以执行。
- -(void)prepareWithActivityItems:(NSArray *)activityItems,预处理要执行的活动列表中的数据项目;
- -(UIViewController *)activityViewController,执行活动列表,如果返回非nil,会弹出模态视图,在结束时调用activityDidFinish;
- -(void)performActivity,执行活动列表,如果activityViewController方法没有提供视图,就会调用这个方法,在结束时调用activityDidFinish;
- -(void)activityDidFinish:(BOOL)completed,当执行完成的时候必须调用哪个这个方法;
自定义视图的用到的图片的大小
- Book.png 普通iPhone设备,分辨率不小于43*43
- Book@2x.png,视网膜显示iPhone设备,分辨率不小于86*86
- Book~ipad.png,普通iPad设备,分辨率不小于55*55
- Book@2x~ipad.png,视网膜显示屏iPad设备,分辨率不小于110*110
代码展示:
//自定义活动列表
- (IBAction)shareAction:(UIBarButtonItem *)sender { NSURL *urlTbShare = [NSURL URLWithString:@"http://www.notepadapi.sinaapp.com"]; NSArray *activityItems = @[urlTbShare]; BookActivity *bookActivity = [BookActivity new]; NSArray *applicationActivities = @[bookActivity]; UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities]; [self presentViewController:activityVC animated:YES completion:nil]; }
BookActivity.h
#import <UIKit/UIKit.h> @interface BookActivity : UIActivity
@property(nonatomic,strong)NSURL *url;
@end
BookActivity.m
#import "BookActivity.h" @implementation BookActivity /*为自定义活动列表项指定一个服务类型标识 */ -(NSString *)activityType { return NSStringFromClass([self class]); } -(NSString *)activityTitle { return @"ActivityTitle"; } /**/ -(UIImage *)activityImage { return [UIImage imageNamed:@"image"]; } -(BOOL)canPerformWithActivityItems:(NSArray *)activityItems { for(id activityItem in activityItems) { if ([activityItem isKindOfClass:[NSURL class]]) { if ([[UIApplication sharedApplication] canOpenURL:activityItem]) { return YES; } } } return NO; } -(void)prepareWithActivityItems:(NSArray *)activityItems { for(id activityItem in activityItems) { if ([activityItem isKindOfClass:[NSURL class]]) { _url = activityItem; } } } -(void)performActivity { BOOL completed = [[UIApplication sharedApplication] openURL:_url]; [self activityDidFinish:completed]; } @end
撰写视图控制器---SLComposeViewController
它的呈现在iPhone采用模态视图,iPad则需要Popover视图呈现
如果发送微博信息并不像弹出分享列表,再去选择,而是在应用中直接进入写评论的地方(iOS系统提供的UI画面)。SLComposeViewController类可以帮助我们实现这个目的,SLComposeViewControlelr不仅可以撰写weibo,还可以撰写Tweet和Facebook.
发送这样的社交网络信息一般会包含3中信息---初始文本、图片和超链接,因此SLComposeViewController类设计3个相对方法:
- -(BOOL)setInitialText:(NSString *)text,设置初始文本内容
- -(BOOL)addImage:(UIImage *)iamge,添加图片
- -(BOOL)addURL:(NSURL *)url,添加超链接信息
代码展示
- (IBAction)zhuanxieAction:(UIBarButtonItem *)sender { SLComposeViewController *composeViewControlelr = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook]; if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) { SLComposeViewControllerCompletionHandler __block completionHandler = ^(SLComposeViewControllerResult result) { [composeViewControlelr dismissViewControllerAnimated:YES completion:nil]; switch (result) { case SLComposeViewControllerResultCancelled: NSLog(@"Canceled...."); break; case SLComposeViewControllerResultDone: NSLog(@"Posted......"); break; default: break; } }; [composeViewControlelr addImage:[UIImage imageNamed:@"image"]]; [composeViewControlelr setInitialText:@"分享文本"]; [composeViewControlelr addURL:[NSURL URLWithString:@"http://www.baidu.com"]]; [composeViewControlelr setCompletionHandler:completionHandler]; [self presentViewController:composeViewControlelr animated:YES completion:nil]; } }
社交网络编程API之iOS系统自带分享的更多相关文章
- iOS系统自带分享功能
很多APP中都带有社交分享功能,通过用户的分享,让更多地人去了解和使用这个APP,目前社交分享是移动互联网应用程序推广的最重要手段之一,国内较或的分享平台有微信,IOS6后苹果集成的新浪微博,还有IO ...
- iOS系统自带的 UIAlertView 自动旋转的实现
这里主要解析 UIAlertView 的几个关键功能的实现: 随着设备屏幕的旋转而旋转: Alert弹出框,使用UIWindow来实现,就是说,不用依赖于当前显示在最前面的UIView. 实现源码参考 ...
- 利用UIActivityController调用ios系统自带的分享功能,实现微信发布多图的功能
通过一番查找以后找到一个类UIActivityController,可以调用系统的social.framework中的分享接口.看下面的图就知道了,这个还是挺常见的 微信发布多图 借鉴了CSDN上的一 ...
- iOS系统自带正则表达式简单运用
//组装一个字符串,把里面的网址解析出来 NSString *urlString = @"sfdshttp://www.baidu.com"; NSError *error; // ...
- Android 使用系统自带分享功能
way1: Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain");// setT ...
- Android系统自带分享功能的实现(可同时分享文字和图片)
/** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题 ...
- iOS网络编程笔记——社交网络编程
社交网络编程主要使用iOS提供的social框架,目前social框架主要分为两个类: (1)SLComposeViewController提供撰写社交信息(如微博信息)的视图控制器,由iOS系统提供 ...
- ShareIntentUtil【调用系统自带的分享的工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 根据参考资料的文章,整理了调用系统自带分享的工具类(实现了适配7.0FileProvider的功能),需要搭配<Android ...
- Ios二维码扫描(系统自带的二维码扫描)
Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你 ...
随机推荐
- 程序员进阶之算法练习:LeetCode专场
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由落影发表 前言 LeetCode上的题目是大公司面试常见的算法题,今天的目标是拿下5道算法题: 题目1是基于链表的大数加法,既考察基本 ...
- APUE习题3.2用dup实现dup2以及shell中重定向符号的使用
习题3.2的要求是不使用fcntl()而编写一个同dup2()功能相同的函数.直觉上是不断使用dup()直到返回指定的文件描述符. #include <stdio.h>#include & ...
- 排版-标题及table
排版-标题 在标题中还可以包含small标签,可以用来标记副标题 副标题灰色,比主标题小 <h1>我是标题 <small>我是小标题</small></ ...
- asp.net mvc 碰到 XML 解析错误:找不到根元素 位置
具体报错信息如下: XML 解析错误:找不到根元素 位置:moz-nullprincipal:{4a1d2b7c-6d07-468e-9df9-2267a0422c93} 行 1,列 1: 网上给出的 ...
- minitab的鱼骨图的制作
Minitab的操作路径为:主菜单Stat > Quality Tools > Cause-and-Effect 先分别选择列"Man.Machine.Material.Meth ...
- 如何用minitab检测一组数据是否服从正态分布
打开Minitab之后 点击Stat>Basic Statistics> Normality Test 分析之后若 P value(P值)>0.05,说明此组数据服从正态分布
- Java - BlockingQueue
https://juejin.im/post/5aeebd02518825672f19c546 https://www.infoq.cn/article/java-blocking-queue blo ...
- MAC下搭建个人博客
安装homebrew ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/inst ...
- linux学习笔记-目录结构(2)
2./usr的意义与内容 依据FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的. usr是UNIX Software Resource的缩写,即UNIX操作系统软件资源所放置的目录,而 ...
- css中那些属性可以被继承
主要的有: 字体相关:line-height, font-family, font-size, font-style, font-variant, font-weight, font 文本相关: le ...