美文网首页
iOS 中的分享

iOS 中的分享

作者: 天空中的球 | 来源:发表于2016-12-06 14:19 被阅读198次

最近又开始弄分享这块,特此将遇到的问题总结下,避免下次踩坑。

一般说来,目前我们分享我们主要采取下面三种方式:

  • 系统自带的分享
    UIActivityViewController & SLComposeViewController
  • 完全自定义,自己去找其SDK
  • 第三方分享(友盟,ShareSDK)

下面稍微以系统自带的和第三方分享稍微记录下。

一、UIActivityViewController

采用 UIActivityViewController 的优缺点特别明显:

  • 优点:
    代码量少,而且是用系统的保障度高,UI 格式也是原生的贴切。

  • 缺点

    • UI 虽说是原生的,但也是死的,灵活度不够
    • 不支持网页的,必须强制用户先去 设置中绑定账号,简单的说流程不够直接。
Set

使用代码确实很简单如下,有什么直接看 API 就OK啦

 UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:@[[NSURL URLWithString:urlString]] applicationActivities:nil];
 activityVC.excludedActivityTypes = @[UIActivityTypeAirDrop];
 [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:activityVC animated:YES completion:nil];
 activityVC.completionWithItemsHandler = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError) {
     if (completed) {
         NSLog(@"Share Success");
     }
     else {
         NSLog(@"Share Failed == %@",activityError.description);
     }
 };

二、完全自定义,使用各个平台官方的SDK

这种情况也可能有,具体看自己需求吧,例如找 一个 FaceBook 官方提供库,里面提供的文件就一大堆,然后各种 API 使用,如果需要分享的平台比较多,那就更多了。


FaceBookShare

优缺点那是是明显:

  • 优点: 完全自定义,UI界面,点击事件等处理相当自如。
  • 缺点: 麻烦,导入东西太多,增加 App 体积。

三 、第三方分享(Share SDK)

之前有总结过类似的问题 Share SDK 使用遇到的几个问题, 但是总的来说 还是一个看文档的过程,这次我使用的时候还是遇到两个问题,特此也记录下:

  • 3-1、需要直接分享,不需要走ShareSDK 中间那步骤。
  • 3-2、需要自定义 分享处的界面需要加标题。

3-1、对于这个问题是:由于使用的官方推荐的方法导致的而导致的,之前是

/**
 *  显示分享菜单
 *
 *  @param view                     要显示菜单的视图, iPad版中此参数作为弹出菜单的参照视图
 *  @param items                    菜单项,如果传入nil,则显示已集成的平台列表
 *  @param shareParams              分享内容参数
 *  @param shareStateChangedHandler 分享状态变更事件
 *
 *  @return 分享菜单控制器
 */
+ (SSUIShareActionSheetController *)showShareActionSheet:(UIView *)view
                                                   items:(NSArray *)items
                                             shareParams:(NSMutableDictionary *)shareParams
                                     onShareStateChanged:(SSUIShareStateChangedHandler)shareStateChangedHandler;

/**
 *  显示内容编辑视图
 *
 *  @param platformType             分享的平台类型
 *  @param otherPlatformTypes       除分享平台外,还可以分享的平台类型。
 *  @param shareParams              分享内容参数
 *  @param shareStateChangedHandler 分享状态变更事件
 *
 *  @return 内容编辑视图控制器
 */
+ (SSUIShareContentEditorViewController *)showShareEditor:(SSDKPlatformType)platformType
                                        otherPlatformTypes:(NSArray *)otherPlatformTypes
                                              shareParams:(NSMutableDictionary *)shareParams
                                      onShareStateChanged:(SSUIShareStateChangedHandler)shareStateChangedHandler;

通常使用第一种方法的时候,顺便会把第二种方法中的页面也会展示出来,此时我们感觉第二种方法

就是前面一步省略掉
解决方法,换一种方法就好了,直接采用 下面这个方法就好啦
/**
 *  分享内容
 *
 *  @param platformType             平台类型
 *  @param parameters               分享参数
 *  @param stateChangeHandler       状态变更回调处理
 */
+ (void)share:(SSDKPlatformType)platformType
   parameters:(NSMutableDictionary *)parameters
onStateChanged:(SSDKShareStateChangedHandler)stateChangedHandler;

或者注意到这个方法:

/**
 *  支持点击分享菜单栏平台后直接分享的平台(不显示分享编辑页面),默认支持微信和QQ平台。
 */
@property (nonatomic, strong) NSMutableSet *directSharePlatforms;

3-2、对于这个问题,就是相当于在 ShareSDK 的基础上自定义,实际上就是实现 Button 布局,然后利用 【分享内容】的 事件 任意制定我们想要展示的界面。但实际上个人认为,ShareSDK 上面提供的几种自定义界面已经OK了,没必要如此做的。


综上所述,选择哪一种方式还是看自己项目中的需求吧!
UIActivityViewController最简单;第三方最实在,看应用场景咯。

相关文章

网友评论

      本文标题:iOS 中的分享

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