ios 原生自带UIActivityViewController分享与第三方分享

UIActivityViewController 使用大致使用步骤:

  • //原生分享

    -(void)share{

        //1.设定分享的内容,比如:

        NSString *shareTitle = @"隐秘的角落";

        UIImage *shareImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1593694996876&di=cb27080027a6748f99ca4ac4a49fee29&imgtype=0&src=http%3A%2F%2Fimagepphcloud.thepaper.cn%2Fpph%2Fimage%2F74%2F157%2F824.jpg"]]];

        NSURL *shareUrl = [NSURL URLWithString:@"https://www.iqiyi.com/v_2ffkws0bgr0.html?vfm=2008_aldbd&fv=p_02_01"];

        NSArray *activityItems = @[shareTitle,

                                   shareImage,

                                   shareUrl]; // 必须要提供url 才会显示分享标签否则只显示图片

        //2.创建分享的控制器

        UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];

        

        //3.设定不想显示的平台和功能

        activityVC.excludedActivityTypes = [self excludetypes];

        

        //4. 设置操作回调,用户点击 菜单按钮后事件执行完成会回调这个block

        activityVC.completionWithItemsHandler = ^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {

            if (completed) {

                NSLog(@"分享成功");

            }else{

                NSLog(@"分享失败");

            }

     

        };

        

        //5.显示分享菜单

        [self presentViewController:activityVC animated:YES completion:nil];

    }

     

    -(NSArray *)excludetypes{

        NSMutableArray *excludeTypeM = [NSMutableArray arrayWithArray:@[//UIActivityTypePostToFacebook,

        UIActivityTypePostToTwitter,

        UIActivityTypePostToWeibo,

        UIActivityTypeMessage,

        UIActivityTypeMail,

        UIActivityTypePrint,

        UIActivityTypeCopyToPasteboard,

        UIActivityTypeAssignToContact,

        UIActivityTypeSaveToCameraRoll,

        UIActivityTypeAddToReadingList,

        UIActivityTypePostToFlickr,

        UIActivityTypePostToVimeo,

        UIActivityTypePostToTencentWeibo,

        UIActivityTypeAirDrop,

        UIActivityTypeOpenInIBooks]];

        if (@available(iOS 11.0, *)) {

            [excludeTypeM addObject:UIActivityTypeMarkupAsPDF];

        } else {

            // Fallback on earlier versions

        }

        return excludeTypeM;

    }

  • 示意图:

ios 原生自带UIActivityViewController分享与第三方分享_第1张图片
ios 原生自带UIActivityViewController分享与第三方分享_第2张图片
 

ios 原生自带UIActivityViewController分享与第三方分享_第3张图片

下面我们再来看一个第三方的分享:WYShareSDK

如果是用cocoapods管理工具管理项目的话,只需要在Podfile里添加一句 pod 'WYShareSDK' 就可以了。

根据上面我们所说的,原生的分享不需要第三方平台的appKey和URL Schemes,那么第三方的分享就需要了,好了,下面我们就来做一些项目的准备工作:

【1】在Xcode中,选择你的工程设置项,选中TARGETS一栏,在info标签栏的URL type添加URL scheme 为你在各大平台所注册应用程序的id (如下图所示)

ios 原生自带UIActivityViewController分享与第三方分享_第4张图片

【2】针对iOS9的适配.右击项目中的info.plist,然后用Open as -> Source Code的方式打开,增加如下代码:
 

LSApplicationQueriesSchemes
 
  wechat
  weixin
  sinaweibohd
  sinaweibo
  sinaweibosso
  weibosdk
  weibosdk2.5
  mqqapi
  mqq
  mqqOpensdkSSoLogin
  mqqconnect
  mqqopensdkdataline
  mqqopensdkgrouptribeshare
  mqqopensdkfriend
  mqqopensdkapi
  mqqopensdkapiV2
  mqqopensdkapiV3
  mqzoneopensdk
  wtloginmqq
  wtloginmqq2
  mqqwpa
  mqzone
  mqzonev2
  mqzoneshare
  wtloginqzone
  mqzonewx
  mqzoneopensdkapiV2
  mqzoneopensdkapi19
  mqzoneopensdkapi
  mqzoneopensdk
 

 NSAppTransportSecurity
 
  NSAllowsArbitraryLoads
  
 

【3】选中项目设置,在Build Settings中的Other Linker Flags中增加-fobj-arc-ObjC

ios 原生自带UIActivityViewController分享与第三方分享_第5张图片

这时编译一下你的项目,如果没有报错,恭喜你环境搭建成功


接下来.分享的代码使用 在AppDelegate中注册 微信/QQ/和微博

ios 原生自带UIActivityViewController分享与第三方分享_第6张图片

ios 原生自带UIActivityViewController分享与第三方分享_第7张图片

在你需要分享的地方直接导入WYShareSDK.h,调用其对应的方法分享到各个平台.例:ios 原生自带UIActivityViewController分享与第三方分享_第8张图片

你可能感兴趣的:(一天一读,功能模块)