社交网络编程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).你需要在你 ...
随机推荐
- Code Complete-13/7/29
Measure Twice,Cut Once! 漫步到第三章: just is about upstream prerequisites. 在构建活动开始之前,准备工作要做的周全. Upstream ...
- CentOS7用阿里云Docker Yum源在线安装Docker
一.参考文档 官方Docker安装文档:https://docs.docker.com/install/linux/docker-ce/centos 阿里云Docker安装文档:https://yq. ...
- spring的第一天
spring的第一天 ssm框架 spring Spring是什么? Spring是容器框架,用来配置(装)Bean,并且维护Bean之间的关系.其中Bean可以是Java中的任何一种对象,可以是J ...
- FFmpeg封装格式处理2-解复用例程
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10506642.html FFmpeg封装格式处理相关内容分为如下几篇文章: [1]. F ...
- 常用的NoSQL数据库类型简述
一.文档存储类型(Document Stores) 文档存储,也称为面向文档的数据库系统,其主要特点在于它们的无模式的数据组织. 特点: 1.记录数据不需要具有统一的结构,即不同的记录可以具有不同的列 ...
- [转]npm、 cnpm、yarn
本文转自:https://blog.csdn.net/sinat_34682450/article/details/79473658 终于搞懂了三者之间的关系- 要知道三者之间的关系首先要了解三个包管 ...
- IOS中input键盘事件支持的解决方法
欢迎大家去我的网站详细查看http://genghongshuo.com.cn/ IOS中input键盘事件keyup.keydown.等支持不是很好, 用input监听键盘keyup事件,在安卓手机 ...
- c# 导出表格
var record = m_editor.getMasterRecord(); var Check_Id = record.Check_Id; var url = "/Storage/St ...
- c# 对文件操作
/// <summary> /// 获得当前绝对路径 /// </summary> /// <param name="strPath">指定的路 ...
- Java基础——Servlet(七)过滤器&监听器 相关
一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request) ...