zoukankan      html  css  js  c++  java
  • iOS Social框架

    现在很多应用都内置“社交分享”功能,可以将看到的新闻、博客、广告等内容分享到微博、微信、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框架也不可能知道具体使用哪个账户来发送。

  • 相关阅读:
    对webpack的初步研究7
    对后端返回的时间进行升序的排序
    对webpack的初步研究6
    对webpack的初步研究5
    对webpack的初步研究4
    对webpack的初步研究3
    计算两个时间之间的天数、小时等
    对webpack的初步研究2
    线程_进程间通信Queue合集
    线程_threading合集
  • 原文地址:https://www.cnblogs.com/HOYF/p/5331141.html
Copyright © 2011-2022 走看看