社交网络编程(1)---UIActivityViewController分享列表

1、社交网络介绍:

苹果在iOS 5中集成了Twitter,在iOS 6中又集成了Facebook 和 新浪微博。

因此,iOS 5中引入的Twitter Framework已被废弃,并被Social Framework代替。

无论是用户使用社交网络服务,还是开发人员进行开发和测试,都需要在设备上设置社交网络服务的账号信息。

2、社交网络编程API:

社交网络编程主要使用Social框架的两个类:SLComposeViewController和SLRequest。

SLComposeViewController提供撰写社交信息的视图控制器,由iOS 系统提供UI。

SLRequest封装了HTTP请求,提供了统一的社交网络服务接口,能够直接与社交网络服务通信,没有UI需要自己编写设计。

其次,除了使用Social框架,我们还有可能用到UIActivityViewController和ACAccount。UIActivityViewController也是iOS
6新内容,它提供了一个分享列表视图控制器。ACAccount是Accounts框架中的一个类,ACAccount对象封装了存储在账户数据库中用户账户信息。ACAccount类配合SLRequest使用。

iOS6分享列表---- UIActivityViewController


iOS6之后提供了一个分享列表视图,它通过UIActivityViewController管理。苹果公司设计它的目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选单。

(iPhone上的分享动作选单)            
                   
 (iPad上的分享动作选单)

通过动作选单上的选择按钮,可以把图片分享给别人(分享内容单一)

但是随着iOS功能的不断增加,需要分享的内容越来越多,它会以模态视图方式呈现。iPad设备的分享列表,它会以Popover视图方式呈现。

(UIActivityViewController在iPhone下效果)      
  (UIActivityViewController在iPad下效果)

从图中可以看出分享列表中可以有很多页,每页有9个应用,可以左右滑动翻页,这样就可以共享更多的内容了。

内置活动列表项

分享列表使用UIActivityViewController来控制它的呈现和关闭,凡是继承UIActivity抽象类的子类对象都可以放在列表中呈现出来。

下面我们通过一个实例介绍一下使用UIActivityViewController管理内置活动列表项,这个实例点击左画面工具栏中的Action按钮,会弹出分享列表模态视图(中图所示),如果我们选择了微博,会弹出微博撰写对话框(右图所示),可以在这里撰写微博,完成之后可以点击“发送”按钮发送微博,如果没有在系统设置中没有设置微博账户信息,则会有提示对话框。

我们下面介绍一下代码实现部分,代码参考ViewController.m的shareAction:方法:

 1 - (IBAction)shareAction:(id)sender {
2
3 NSURL *urlToShare = [NSURL URLWithString:@"http://iosshare.cn/"]; ①
4
5 NSArray *activityItems = @[urlToShare];
6
7 BookActivity *bookActivity = [BookActivity new]; ②
8
9 NSArray *applicationActivities = @[bookActivity];
10
11 UIActivityViewController *activityVC = [[UIActivityViewController alloc]
12
13 initWithActivityItems:activityItems
14
15 applicationActivities:applicationActivities]; ③
16
17 [self presentViewController:activityVC animated:YES completion:nil];
18
19 }

后面选择微博,以及发送微博这些全部是UIActivityViewController给我们封装好的,我们不需要编写一行代码!

自定义活动列表项

有的时候根据我们共享内容不同,需要自动定义活动列表项。例如:你的应用是一个观看视频的应用,那么你可能需要共享视频到“优酷”视频网站。下面这一节我们介绍自定义活动列表项。

凡是继承UIActivity抽象类的子类对象都可以放在列表中呈现出来。这包括了iOS系统通过内置的9个活动列表,也可以是我们自定义的列表项。

下面我们通过一个实例介绍一下使用UIActivityViewController管理自定义活动列表项,点击左画面工具栏中的Action按钮,会弹出分享列表模态视图,其中列表中“打开Book”是我们自定义列表项,点击“打开Book”列表项执行一些操作,这里的操作是打开Book网站。

我们下面介绍一下代码实现部分,代码参考ViewController.m的shareAction:方法:

 1 - (IBAction)shareAction:(id)sender {
2
3 NSURL *urlToShare = [NSURL URLWithString:@"http://iosshare.cn/"]; ①
4
5 NSArray *activityItems = @[urlToShare];
6
7 BookActivity *bookActivity = [BookActivity new]; ②
8
9 NSArray *applicationActivities = @[bookActivity];
10
11 UIActivityViewController *activityVC = [[UIActivityViewController alloc]
12
13 initWithActivityItems:activityItems
14
15 applicationActivities:applicationActivities]; ③
16
17 [self presentViewController:activityVC animated:YES completion:nil];
18
19 }

shareAction:方法与上一节内置活动列表项类似,在本例中我们只需要一个数据项(即提供URL),第①行代码就是提供了URL。第②行代码实例化活动列表项BookActivity,然后需要把它放到一个NSArray集合中。第③行代码实例化UIActivityViewController对象,构造方法中applicationActivities部分参数在内置活动列表项为nil,在自定义活动列表项中是指定自定义活动列表项对象集合,就是NSArray集合。

自定义活动列表项代码实现BookActivity.h的代码如下:

#import <UIKit/UIKit.h>

@interface BookActivity : UIActivity

@property (nonatomic,strong) NSURL *url;

@end

自定义活动列表项必须继承UIActivity,属性url提供列表项服务的数据项【属性中记录要分享的数据】。BookActivity.m的代码如下:

@implementation BookActivity

- (NSString *)activityType {

return NSStringFromClass([self class]); ①

}

- (NSString *)activityTitle {

return NSLocalizedStringFromTable(@”Open Book”, @”BookActivity”, nil); ②

}

- (UIImage *)activityImage {

return [UIImage imageNamed:@"Book"]; ③

}

- (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

社交网络编程(1)---UIActivityViewController分享列表,布布扣,bubuko.com

时间: 2024-08-24 12:12:42

社交网络编程(1)---UIActivityViewController分享列表的相关文章

社交网络编程API之iOS系统自带分享

社交网络编程API 社交网络编程主要使用iOS提供的Social框架,目前Social框架主要包含两个类: SLComposeViewController 提供撰写社交信息(如微博信息)的视图控制器,有iOS系统提供UI,就是写入要分享内容的小弹出框. SLRequest封装了HTTP请求,提供了同一的请求社交网络服务的接口,能够直接与社交网路服务通信的能力,没有UI需要自己编写设计. 除了Social框架外,还有可能用到UIActivityViewControlelr和ACAccount.UI

社交网络编程(3)--- 通过SLRequest分享内容

前面两篇博文我们看了如何通过内建的用户界面分享内容.下面我们看看如何通过SLRequest完全自定义的用户界面. 下面,我们通过示例使用SLRequest发布tweet过程来学习: 大体上分为4个主要的步骤 下面我们按照这个流程,介绍一下: 1.引入Accounts和Social框架 工程中需要引入Accounts和Social框架,Accounts框架中有进行用户账户认证所需类,Social框架中SLRequest类是我们所需要的.添加具体步骤是选择工程中的TARGETS→WeiBo→Buil

iOS 6分享列表——UIActivityViewController详解

iOS 6分享列表——UIActivityViewController详解 2013-06-03 01:42:33     发表评论 在iOS 6之后提供了一个分享列表视图,它通过UIActivityViewController管理.苹果设计它主要的目的是替换分享动作选单(ActionSheet),分享动作选单是出于分享目的的动作选单. 通过动作选单上的选择按钮,可以把图片分享给别人.但是随着iOS功能的不断增加,需要分享的内容越来越多,它会以模态视图方式呈现.iPad设备的分享列表,它会以Po

社交网络编程(2)---SLComposeViewController

如分享信息时不想弹出分享列表,而是在APP中直接选择分享信息到哪一个应用(比如直接分享到新浪微博),SLComposeViewController类可以帮助我们实现这个目的.iOS 系统为SLComposeViewController类提供所管理的UI界面: SLComposeViewController所管理的视图可以撰写社交网络信息.发送这些信息以及取消发送,还有把自己的位置信息也添加到社交信息中发送. 主要步骤: 1)判断服务器是否可以访问 使用方法isAvailableForServic

积累的VC编程小技巧之列表框

1.列表框中标题栏(Column)的添加 创建一个List Control,其ID为IDC_LIST,在其Styles属性项下的View项里选择Report.Align项里选择Top.Sort项里选择None. 然后在该List所在对话框的类(头文件)里创建ClistCtrl的一个对象m_list然后在.cpp文件的OnInitDialog()之类的函数里实现如下代码: CString strname[3]; strname[0]="Screen Name"; strname[1]=&

移动共享开发(七)添加社交平台到分享列表

添加人人.豆瓣分享 添加人人到分享列表 在弹出分享面板前调用下面的代码 // 设置分享面板上显示的平台 mController.getConfig().setPlatforms(SHARE_MEDIA.RENREN) 添加豆瓣到分享列表 在弹出分享面板前调用下面的代码 // 设置分享面板上显示的平台 mController.getConfig().setPlatforms(SHARE_MEDIA.DOUBAN) 添加短信.邮件.有道云笔记 添加短信到分享列表 添加相关文件及资源 1.解压已下载的

编程基础知识分享——编程开始之前

对我来说,编程这件事与其说是工作,不如说是兴趣.尽管和自己理想中的编程比,自己的所谓编程只不过是小打小闹,但是现在又有多少所谓的IT从业者是做真正的编程?产业化的今天,其实真的没有必要区分所谓的程序员和码农,每个人的路线和生活都不相同,也不可能相同,有人学编程只是为了一份工作,有人纯粹为了爱好.我的理解,无论出发点如何,只要尊重自己的选择,能够有所收获就够了. 这系列文章,是自己当初学习编程的一些方法和经验,整理了一下,可以分成几块记录.对于专业的程序员,我的经验并不适合,一些计算机专业出身的朋

Java编程学习知识点分享 入门必看

阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软件包或"工具箱"的接口说明.API包含了工具箱中所有类或子程序及其使用说明. Applet:与可以单独运行的应用程序不同,Applet是一种在Web浏览器中运行在Web页面上的Java程序. 动画(animation):由一组静态图片快速显示展示出动态效果.每一幅静态图片叫做帧.在Java中,动画通常由 Timer 对象驱动.

学习ASP.NET Core Razor 编程系列七——修改列表页面

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面 学习ASP.NET C