美文网首页
社会化分享大全(转)

社会化分享大全(转)

作者: 为什么划船不靠桨 | 来源:发表于2017-09-19 16:15 被阅读0次

一、系统原生 UIActivityViewController

优缺点

  • 优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包

  • 缺点:UI可定制性差,只能使用系统提供的固定样式,长相如下。分享的类型受限,只能分享text、url、image。


    UIActivityViewController分享界面

使用:

NSString *textToShare = @"要分享的文本内容"; 
UIImage *imageToShare = [UIImage imageNamed:@"iosshare.jpg"]; 
NSURL *urlToShare = [NSURL URLWithString:@"http://www.baidu.com"];

NSArray *activityItems = @[textToShare, imageToShare, urlToShare];
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
//去除弹出视图用不到的图标
//activityVC.excludedActivityTypes = @[UIActivityTypePostToFacebook,UIActivityTypeAirDrop];
[self presentViewController:activityVC animated:YES completion:nil];
//设置回调block,可以在分享之后成功或失败后做事情
UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError) {
        
        if (completed){
            NSLog(@"completed");
        }
    };
activityVC.completionWithItemsHandler = myBlock;

activityItems是要分享的内容,包括文字、图片、网址。但是要注意的是,不是所有平台都支持这三种内容的分享,例如微信,不能同时分享图片和网址,文字不能直接往外分享,下图是几个平台分享概略


各平台分享概略

二、系统原生Social Framework

优缺点

  • 优点:使用简单、不用注册繁杂的分享平台账号、不用导入臃肿的SDK包。UI可以自己绘制,满足了很多个性化的需求。
  • 缺点:分享界面的UI需要开发者自己绘制,增加了工作量。分享的类型受限,只能分享text、url、image。

使用

//导入Social.framework
#import <Social/Social.h>
// 1.判断平台是否可用
    if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
        NSLog(@"平台不可用,或者没有配置相关的帐号");
        return;
    }
//创建分享的控制器
SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
/*
系统只提供了下面几种分享平台:

SLServiceTypeTwitter;
SLServiceTypeFacebook;
SLServiceTypeSinaWeibo;
SLServiceTypeTencentWeibo;
SLServiceTypeLinkedIn;
*/
//添加分享的文字、图片、链接
[composeVc setInitialText:@"要分享的文本内容"];
[composeVc addImage:[UIImage imageNamed:@"choice_highlight"]];
[composeVc addURL:[NSURL URLWithString:@"http://www.baidu.com"]];

//弹出分享控制器
[self presentViewController:composeVc animated:YES completion:nil];

//监听用户点击了取消还是发送
composeVc.completionHandler = ^(SLComposeViewControllerResult result){
    if (result == SLComposeViewControllerResultCancelled) {
        NSLog(@"点击了取消");
    } else {
        NSLog(@"点击了发送");
    }
};   

实际可以根据id来分享到更多平台,如微信:

NSString *socialType = @"com.tencent.xin.sharetimeline";
SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:socialType];

可以这么使用的原因是:iOS8之后系统推出的Share Extension,不是系统实现了微信分享,而是微信App的Share Extension提供了分享入口。所以这个不是私有API,可以放心使用,想获取手机中装的App的所有Share Extension的方法。只需调用下面一句代码。。

SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
看看控制台输出,手机内所有可用的Share Extension的bundle Id 都出来了。

三、友盟等第三方分享平台

优缺点

  • 优点:开发者可以按照第三方文档自己定制分享界面UI、功能。分享的类型可以自由选择,除了text、url、image。还有其他格式多媒体(声音、视频、文件等)可供选择。
  • 缺点:需要去友盟以及各个分享平台注册繁杂的账号、导入臃肿的SDK包。配置跳转白名单。

使用
友盟极光等各种第三方分享

四、OpenShare

优缺点

  • 优点:开发者可以自己定制分享界面UI、功能。分享的类型可以自由选择,除了text、url、image。还有其他格式多媒体(声音、视频、文件等)可供选择。

  • 缺点:需要配置跳转白名单。

使用
实现原理介绍
github代码和demo地址

总结

这四种分享方案,各有优缺点,没有最好的分享方案,只有最适合你App需求的方案。

如果你的App界面需要定制化,分享类型需要支持多媒体(声音、视频、文件等),分享平台只限于微信、QQ、微博、人人、支付宝,使用openshare。如果需要支持的平台很多,使用友盟分享。

如果分享的类型只限于text、image、url,对界面要求不高,系统原生的UIActivityViewController就可以,使用UIActivityViewController。如果界面需要定制化,使用Social Framework。

除了第一种方案UIActivityViewController不需要自己绘制界面以外,其他方案均要自己绘制分享弹出菜单,针对以上问题,我写了一个界面和功能高度可定制化的轮子IFMShareSwift版)供大家使用。

推荐

IFMShareSwift版)使用简单、优雅,界面和功能高度可定制化。支持单行滚动、双行滚动、多行、九宫格、头视图、尾视图等多种样式,分享功能可以一个平台名直接调用Share Extension,也可以使用各平台SDK或者OpenShare自定义分享功能。欢迎前去issue、pull request、star,代码示例如下:

IFMShareView *shareView = [[IFMShareView alloc] initWithItems:@[IFMPlatformNameSms,IFMPlatformNameEmail,IFMPlatformNameQQ,IFMPlatformNameWechat] itemSize:CGSizeMake(80,100) DisplayLine:YES];

//设置分享内容
[shareView addText:@"分享测试"];
[shareView addURL:[NSURL URLWithString:@"http://www.baidu.com"]];
[shareView addImage:image];

[shareView showFromControlle:self];

部分自定义界面展示


图片展示

GIF展示

动图展示

相关文章

  • 社会化分享大全(转)

    一、系统原生 UIActivityViewController 优缺点 优点:使用简单、不用注册繁杂的分享平台账号...

  • iOS 社会化分享方案总结

    iOS 社会化分享方案总结 iOS 社会化分享方案总结

  • webstorm 2018 激活破解方法大全

    (转)webstorm 2018 激活破解方法大全 - CSDN博客

  • 社会化分享非SDK实现

    社会化分享功能对于任何软件来说都至关重要,今天来介绍一种基于安卓的社会化分享功能实现。 首先,我们制作一个分享界面...

  • 社会化分享

    社会化分享 广告 - 免费推广. 原生框架 了解内容:(在中国不适用,只支持新浪微博和腾讯微博)苹果原生的只有新浪...

  • Android异常大全

    【转】Android异常大全https://blog.csdn.net/haojiagou/article/det...

  • 项目踩坑之Share SDK指定平台分享

    现在很多应用都包含了社会化分享的功能,最近由于项目需要,所以亲自去踩了踩Mob社会化分享的坑。接下来就介绍一下怎样...

  • 商业中最重要的事——病毒循环

    本书的简介号称全球病毒营销案例大全,是社会化媒体和科技界人士必读书。“《病毒循环》正是迄今为止最权威的全球病毒营销...

  • 腾讯官方微信分享集成遇到的问题

    社会化分享有很多解决方案,特别是以友盟、ShareSDK为代表的社会化分享平台更是我们一线码农的福音。最近手头上一...

  • 聊聊“分享”那些事儿

    前言 互联网特别是移动互联网的发展,社会化分享几乎成了每一个APP的标配。好像一个APP如果没有社会化分享组件,它...

网友评论

      本文标题:社会化分享大全(转)

      本文链接:https://www.haomeiwen.com/subject/lenwsxtx.html