1.Facebook官方的SDK分享         
     2.ShareSDK,第三方集成的分享方式
     3.网页分享方式分享
     4.IOS6之后,苹果自己集成了对于Facebook和Twitter等社交分享进行了集成
 
     1.加入Social.framework
     2.#import <Social/Social.h>
     3.声明变量SLComposeViewController *mySLComposerSheet;//share对象
 
注:1.如果你的当前的app只需要满足IOS6及以上系统的用户的需求(毕竟IOS5及以下的用户量很少),那么就不需要考虑太多,直接使用系统的分享方式。如下:(建议做个异常判断,毕竟崩溃也不好)
  2.如果手机上自带的应用已经绑定账号,那么可以直接分享。
  3.如果手机上安装了这些应用的客户端,自带的应用绑定了账号,那么他会优先客户端分享,没有登录会提示你登录。
  4.如果客户端和自带的都没绑定账号,SLComposeViewController 的对象为nil 会崩溃,可以提前捕捉到,加个判断就行。
 
- (void)shareFacebook{
    [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    if ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=6){
        if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]){
            self.mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
            [self.mySLComposerSheet setInitialText:self.productDetailModel.productName];//产品名
            NSURL *imageUrl = [NSURL URLWithString:self.productDetailModel.primaryThumbimage];
            NSData *imageData = [NSData dataWithContentsOfURL:imageUrl];
            [self.mySLComposerSheet addImage:[UIImage imageWithData:imageData scale:1]];//产品图
            [self.mySLComposerSheet addURL:[NSURL URLWithString:self.productDetailModel.productUrl]];//产品地址
            [self presentViewController:self.mySLComposerSheet animated:YES completion:nil];
            [MBProgressHUD hideHUDForView:self.view animated:YES];
        }else{
            [MBProgressHUD hideHUDForView:self.view animated:YES];
            [self.view myMBProgressShowView:@"Not Available Facebook!"];
        }
        [self.mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
            NSString *output;
            switch (result) {
                case SLComposeViewControllerResultCancelled:
                    output = MBLocalizedString(kFacebookActionCancell);
                    break;
                case SLComposeViewControllerResultDone:
                    output = MBLocalizedString(kFacebookPostSuccess);
                    break;
                default:
                    break;
            }
            if ((result = SLComposeViewControllerResultCancelled)) {
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:MBLocalizedString(kFacebookMessage) message:output delegate:nil cancelButtonTitle:MBLocalizedString(kFacebookOK) otherButtonTitles:nil];
                [alert show];
            }
        }];
    }
}
 
同样使用Social框架可以分享到Twitter,新浪微博,腾讯微博,前提是你手机上绑定了这些帐号,否则怎么知道使用哪个帐号分享,在iOS中有专门设置这些应用的地方
//下面是新浪的
-(void)shareToSina{
    //检查新浪微博服务是否可用
    if(![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]){
        NSLog(@"新浪微博服务不可用.");
        return;
    }
    //初始化内容编写控制器,注意这里指定分享类型为新浪微博
    SLComposeViewController *composeController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
    //设置默认信息
    [composeController setInitialText:@"Kenshin Cui‘s Blog..."];
    //添加图片
    [composeController addImage:[UIImage imageNamed:@"stevenChow"]];
    //添加连接
    [composeController addURL:[NSURL URLWithString:@"http://www.cnblogs.com/kenshincui"]];
    //设置发送完成后的回调事件
    __block SLComposeViewController *composeControllerForBlock=composeController;
    composeController.completionHandler=^(SLComposeViewControllerResult result){
        if (result==SLComposeViewControllerResultDone) {
            NSLog(@"开始发送...");
        }
        [composeControllerForBlock dismissViewControllerAnimated:YES completion:nil];
    };
    //显示编辑视图
    [self presentViewController:composeController animated:YES completion:nil];
}

//苹果源生的框架只支持这几个平台,如果要分享到微信,等可以使用第三方的一些:ShareSDK,友盟等

Facebook等使用苹果源生分享的更多相关文章

  1. 上海苹果维修点分享苹果电脑MACBOOK故障维修常见案例

    苹果的电子设备无论是外观和性能都是无与伦比的美丽,很多开发者都开始选用苹果电脑macbook.近年来苹果售后维修点来维修苹果电脑的用户也越来越多,我们上海苹果维修点就整理分享了一些苹果电脑MACBOO ...

  2. twitter、facebook、pinterest、linkedin 分享代码

    twitter.facebook.pinterest.linkedin 分享代码 http://www.cnblogs.com/adstor-Lin/p/3994449.html

  3. facebook和twitter的截图分享

    记录一下代码,以后自己可以抄..我抄我自己=.= SDK的接入看之前的博客.所以话不多少,直接上代码(记得分享一定要安装原生app(FB和twitter),不然只通过网页分享无法发图片.),初始化都在 ...

  4. Android Facebook和Twitter登录和分享完整版

    最近公司的软件需要改国际版,需要Facebook和Twitter的登录和分享. 本人先用Umeng的第三方社会化分享实现了该功能,但是后来一想问题来了,经过查证.Umeng只在中国和美国有服务器,那也 ...

  5. 网页上facebook分享功能的具体实现

    1,一个链接: 参数是要分享的页面的链接 代码如下: <a style="width:35px; height:40px; position:relative; top:10px; l ...

  6. 安卓,分享到facebook的若干种方法汇总

    近期做了facebook的分享功能,遇到了很多问题,这里总结一下,供大家参考,不足之处还请大家指正. facebook分享方式: 1.通过intent调用调用本地facebook应用方式 支持单独分享 ...

  7. 使用facebook和twitter进行分享经验总结

    凤凰涅槃,浴火重生. 在传说当中,凤凰是人世间幸福的使者,每五百年,它就要背负着积累于在人间的所有痛苦和恩怨情仇,投身于熊熊烈火中自焚,以生命和美丽的终结换取人世的祥和与幸福.同样在肉体经受了巨大的痛 ...

  8. facebook分享

    http://bbs.mob.com/forum.php?mod=viewthread&tid=19104&page=1&extra=#pid40942  应用审核 http: ...

  9. 从Facebook、苹果到外卖平台,“阴谋论”推动巨头企业不断蜕变

    不可否认的是,在互联网向前加速推进的过程中,巨头企业和独角兽扮演着重要角色.它们以多元创意和深厚技术.资金实力,一步步改造着大众的互联网生活.而在此前,人们对巨头企业.独角兽的态度是颇为依赖的.但自从 ...

随机推荐

  1. Ansible常用模块及API

    Ansible安装 安装EPEL作为安装Ansible的yum源(CentOS6.4): rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel ...

  2. 在Ubuntu下编译wpa_supplicant

    最近在研究WiFi联盟的多屏互动协议Miracast,其中需要用到wpa_supplicant,编译中遇到了一些问题,经过一下午的折腾也都解决了,下面分享给各位. 一.编译需要用到三个库源码包,分别是 ...

  3. 124. Binary Tree Maximum Path Sum

    Given a binary tree, find the maximum path sum. For this problem, a path is defined as any sequence ...

  4. 实现web数据同步的四种方式

    http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...

  5. Php检测文件编码方法

    <?php /** * 检测文件编码 * @param string $file 文件路径 * @return string|null 返回 编码名 或 null */ function det ...

  6. iphone dev 入门实例6:How To Use UIScrollView to Scroll and Zoom and Page

    http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content Getting Starte ...

  7. ADF_General JSF系列2_创建JSF类型的页面向导

    2015-02-17 Created By BaoXinjian

  8. NeHe OpenGL教程 第三十七课:卡通映射

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. NeHe OpenGL教程 第三十八课:资源文件

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  10. 监控系统一些告警方式对比:短信、Email手机端、IM

    一.缘由: 对于运维来说,监控告警是很重要的一环,告警讲究及时性,所以这里讨论下一些常见告警方式的优劣. 二.告警方式: 1.短信SMS 短信网关通知是一种最直接.最有效的通知方式,当然成本最高. 适 ...