社交网络编程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系统自带分享的更多相关文章

  1. iOS系统自带分享功能

    很多APP中都带有社交分享功能,通过用户的分享,让更多地人去了解和使用这个APP,目前社交分享是移动互联网应用程序推广的最重要手段之一,国内较或的分享平台有微信,IOS6后苹果集成的新浪微博,还有IO ...

  2. iOS系统自带的 UIAlertView 自动旋转的实现

    这里主要解析 UIAlertView 的几个关键功能的实现: 随着设备屏幕的旋转而旋转: Alert弹出框,使用UIWindow来实现,就是说,不用依赖于当前显示在最前面的UIView. 实现源码参考 ...

  3. 利用UIActivityController调用ios系统自带的分享功能,实现微信发布多图的功能

    通过一番查找以后找到一个类UIActivityController,可以调用系统的social.framework中的分享接口.看下面的图就知道了,这个还是挺常见的 微信发布多图 借鉴了CSDN上的一 ...

  4. iOS系统自带正则表达式简单运用

    //组装一个字符串,把里面的网址解析出来 NSString *urlString = @"sfdshttp://www.baidu.com"; NSError *error; // ...

  5. Android 使用系统自带分享功能

    way1: Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain");// setT ...

  6. Android系统自带分享功能的实现(可同时分享文字和图片)

     /** * 分享功能 * * @param context * 上下文 * @param activityTitle * Activity的名字 * @param msgTitle * 消息标题 ...

  7. iOS网络编程笔记——社交网络编程

    社交网络编程主要使用iOS提供的social框架,目前social框架主要分为两个类: (1)SLComposeViewController提供撰写社交信息(如微博信息)的视图控制器,由iOS系统提供 ...

  8. ShareIntentUtil【调用系统自带的分享的工具类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 根据参考资料的文章,整理了调用系统自带分享的工具类(实现了适配7.0FileProvider的功能),需要搭配<Android ...

  9. Ios二维码扫描(系统自带的二维码扫描)

    Ios二维码扫描 这里给大家介绍的时如何使用系统自带的二维码扫描方法和一些简单的动画! 操作步骤: 1).首先你需要搭建UI界面如图:下图我用了俩个imageview和一个label 2).你需要在你 ...

随机推荐

  1. 从零开始学 Web 之 ES6(五)ES6基础语法三

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. CentOS7用阿里云Docker Yum源在线安装Docker

    一.参考文档 官方Docker安装文档:https://docs.docker.com/install/linux/docker-ce/centos 阿里云Docker安装文档:https://yq. ...

  3. 【杂谈】Spring Boot 默认支持的并发量

    Spring Boot应用支持的最大并发量是多少? Spring Boot 能支持的最大并发量主要看其对Tomcat的设置,可以在配置文件中对其进行更改.当在配置文件中敲出max后提示值就是它的默认值 ...

  4. 利用cordova打包H5混合app

    1.首先布置jdk环境,下载jdk(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...

  5. 实现一个简单的vue-router

    所有项目的源代码都放在我的github上,欢迎大家start: https://github.com/Jasonwang911/my-vue-router 首先来看下vue-router的使用: im ...

  6. python的Web框架,会话保持及Form表单

    会话 从打开浏览器访问到关闭浏览器,这就是一次会话. cookie 技术 cookie是保存在浏览器的,安全度比较低. # 设置cookie范式,在view中设置 def index(request) ...

  7. [51nod1514] 美妙的序列

    Description 如果对于一个 \(1\sim n\) 的排列满足: 在 \(1\sim n-1\) 这些位置之后将序列断开,使得总可以从右边找一个数,使得该数不会比左边所有数都大,则称该序列是 ...

  8. python字典操作和内置方法

    一 字典基本介绍 python中只有字典是映射结构,通过key取值,并且key是不可变数据类型,而value可以是任意数据类型. 字典通过一个花括号,里面存放key:value的数据结构来定义.理论上 ...

  9. 代码创建 WPF 旋转、翻转动画(汇总)

    先建立一个button <Button Width="80" Height="60" Content="旋转" Name=" ...

  10. Linux中ansible批量管理软件部署及剧本编写

    服务器版本信息: Centos6.9 [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29: ...