现在很多应用都内置“社交分享”功能,可以将看到的新闻、博客、广告等内容分享到微博、微信、QQ、空间等,其实从iOS6.0开始苹果官方就内置了Social.framework专门来实现社交分享功能,利用这个框架开发者只需要几句代码就可以实现内容分享。下面就以一个分享到新浪微博的功能为例来演示Social框架的应用,整个过程分为:创建内容编辑控制器,设置分享内容(文本内容、图片、超链接等),设置发送(或取消)后的回调事件,展示控制器。

程序代码:

 1 //
 2 //  ViewController.m
 3 //  Social
 4 //
 5 //  Created by HO on 16/3/28.
 6 //  Copyright © 2016年 HO. All rights reserved.
 7 //
 8
 9 #import "ViewController.h"
10 #import <Social/Social.h>
11
12 @interface ViewController ()
13
14 @end
15
16 @implementation ViewController
17
18 #pragma mark - UI事件
19 - (IBAction)shareClick:(id)sender {
20     [self shareTosina];
21 }
22
23 #pragma mark 私有方法
24 - (void)shareTosina{
25     //检查新浪微博服务是否可用
26     if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
27         NSLog(@"新浪微博服务不可用.");
28         return;
29     }
30     //初始化内容编写控制器,注意这里指定分享类型为微博
31     SLComposeViewController * composeController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
32     //设置默认信息
33     [composeController setInitialText:@"标题:iOS Social框架 新浪微博分享测试 内容:顺手给我new一个对象技术博客"];
34     //添加图片
35     [composeController addImage:[UIImage imageNamed:@"1.png"]];
36     //添加链接
37     [composeController addURL:[NSURL URLWithString:@"http://www.cnblogs.com/HOYF/"]];
38     //设置发送完成后的回调事件
39     __block SLComposeViewController * composeControllerForBlock = composeController;
40     composeController.completionHandler = ^(SLComposeViewControllerResult result){
41         if (result == SLComposeViewControllerResultDone) {
42             NSLog(@"开始发送...");
43         }
44         [composeControllerForBlock dismissViewControllerAnimated:YES completion:nil];
45     };
46     //显示编辑视图
47     [self presentViewController:composeController animated:YES completion:nil];
48 }
49
50
51
52 - (void)viewDidLoad {
53     [super viewDidLoad];
54     // Do any additional setup after loading the view, typically from a nib.
55 }
56
57 - (void)didReceiveMemoryWarning {
58     [super didReceiveMemoryWarning];
59     // Dispose of any resources that can be recreated.
60 }
61
62 @end

运行效果:

发送成功后:

在这个过程中开发人员不需要知道新浪微博的更多分享细节,Social框架中已经统一了分享的接口,你可以通过ServiceType设置是分享到Facebook、Twitter、新浪微博、腾讯微博,而不关心具体的细节实现。那么当运行上面的示例时它是怎么知道用哪个账户来发送微博呢?其实在iOS的设置中有专门设置Facebook、Twitter、微博的地方:

必须首先在这里设置微博账户才能完成上面的发送,不然Social框架也不可能知道具体使用哪个账户来发送。

转载于:https://www.cnblogs.com/HOYF/p/5331141.html

iOS Social框架相关推荐

  1. iOS总体框架介绍和详尽说明

    总体介绍 iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer(触摸UI层).MediaLayer(媒体层).Cor ...

  2. iOS 常用框架介绍

    iOS框架介绍      Cocoa Touch GameKit  实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息  iOS设备之间蓝牙数据传输   从iOS7开始过期   局域网游戏 ...

  3. [iOS]-系统框架

    虽说不使用系统框架也能编写 Objective-C代码,但几乎没人这么做.即便是NSObject 这个标准的根类,也属于Foundation框架,而非语言本身.若不使用Foundation,就必须自己 ...

  4. iOS所有框架-Cocoatouch等

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. Cocoa Touch层包含创建 iOS应 ...

  5. swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程

    swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 1.2.3  注册非免费苹果账号swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 免费的苹果账号在 ...

  6. Swift版iOS游戏框架Sprite Kit基础教程下册

    Swift版iOS游戏框架Sprite Kit基础教程下册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C  介绍:本教程是国内唯一的Swift版的Spritekit教程 ...

  7. iOS游戏框架Sprite Kit基础教程第1章编写第一个Sprite Kit程序

    iOS游戏框架Sprite Kit基础教程第1章编写第一个Sprite Kit程序 程序是为了实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.本章将以编写第一个Sprite Kit程序为 ...

  8. iOS游戏框架Sprite Kit基础教程——Swift版上册

    iOS游戏框架Sprite Kit基础教程--Swift版上册 试读下载地址:http://pan.baidu.com/s/1qWBdV0C  介绍:本教程是国内唯一的Swift版的Spritekit ...

  9. 详解OS X和iOS图像处理框架Core Image

     详解OS X和iOS图像处理框架Core Image width="22" height="16" src="http://hits.sinaj ...

最新文章

  1. python转盘抽奖_react 抽奖转盘 ----小计
  2. [翻译] ASP.NET内幕 - IIS处理模型
  3. 高级Android开发面试汇总
  4. 计算机二级日月潭操作步骤,计算机二级考试真题-PPT-文小雨-台湾日月潭介绍
  5. 为bootstrap的tab增加请求操作
  6. ArcGIS实验教程——实验十九:网络分析(最短路径实现)
  7. 2018/7/10-纪中某C组题【jzoj3792,jzoj3793,jzoj3794】
  8. mvc框架upgrade
  9. Android Button字母自动全部大写的问题
  10. opencv:Gamma校正
  11. 如何从程序员转型为项目经理
  12. 使用Docker搭建私有云笔记
  13. 盘点:移动服务 #AzureChat
  14. postgresql立式版本下载_Apache ShardingSphere 4.1.1版本正式发布
  15. java软件开发是什么_java常用的开发软件是什么
  16. RJ45与网络变压器脚位及网线线序的关系?
  17. MySQL_where条件查询
  18. jinjia2模板语法
  19. 抽奖活动啦!5本SpringMVC+MyBatis相关、3本Android Studio相关、6本Kafka相关
  20. 通过斐波那契数列探讨时间复杂度和空间复杂度

热门文章

  1. ffmpeg在windows下的编译
  2. c# 2.0实现摄象头视频采集,拍照,录象
  3. 关于axios请求报400如何获取报错信息
  4. [ECMAScript] 你喜欢es6的哪些特性?
  5. React开发(252):react项目理解 ant design spining加载中
  6. React开发(229):react删除的实现
  7. 前端学习(3036):vue+element今日头条管理-复习
  8. 工作342:消除平时环境的console
  9. 前端学习(1950)vue之电商管理系统电商系统之渲染添加父类的对话框
  10. 前端学习(1541):本地运行ng文档