美文网首页
iOS 原生分享 多张图片

iOS 原生分享 多张图片

作者: 表弟1616 | 来源:发表于2018-02-26 11:18 被阅读346次

       最新写项目有个需求是分享多张图片到其他平台,因为一直使用的是mob做的分享,mob做网页分享和分享单张图片还是挺方便的,但是没办法分享多张,所以想了想自己写个吧(表弟菜鸟 多多指教)

 1.这是我自己封装的一个manager

代码如下

#import

typedefNS_ENUM(NSInteger, BDShareType)

{

    BDShareTypeOthers,//其他

    BDShareTypeWeChat,//微信

    BDShareTypeQQ,//腾讯QQ

    BDShareTypeSina,//新浪微博

};

@interfaceBDShareManager :NSObject

/****************  系统分享 带连接和图片****************/

+ (BOOL)shareWithType:(BDShareType)type andController:(UIViewController*)controller andItems:(NSArray*)items;

下边为。m文件的实现

#import "BDShareManager.h"

@implementation BDShareManager

+ (BOOL)shareWithType:(BDShareType)type andController:(UIViewController*)controller andItems:(NSArray*)items{

    NSString * serviceType = [BVShareManager serviceTypeWithType:type];

    SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:serviceType];

    for(idobjinitems){

        if ([obj isKindOfClass:[UIImage class]]){

            [composeVCaddImage:(UIImage*)obj];

        }elseif([objisKindOfClass:[NSURLclass]]){

            [composeVCaddURL:(NSURL*)obj];

        }

    }

  // 添加要分享的文字

  BOOLset = [composeVCsetInitialText:@"垂直采购"];

    if(set) {

       NSLog(@"设置成功");

    }else{

       NSLog(@"设置市北");

    }

    // 弹出分享控制器

    composeVC.completionHandler = ^(SLComposeViewControllerResult result){

        if (result == SLComposeViewControllerResultDone) {

            NSLog(@"点击了发送");

        }

        else if (result == SLComposeViewControllerResultCancelled)

        {

            NSLog(@"点击了取消");

        }

    };

    @try{

        [controllerpresentViewController:composeVC animated:YES completion:nil];

        returnYES;

    }@catch(NSException *exception){

        NSLog(@"没有安装");

        returnNO;

    }@finally {

    }

}

/****************  系统分享 纯图****************/

+ (BOOL)shareSheetWithType:(BDShareType)type andController:(UIViewController*)controller andItems:(NSArray*)items{

    NSString * serviceType = [BVShareManager serviceTypeWithType:type];

    SLComposeViewController *composeVC = [SLComposeViewController composeViewControllerForServiceType:serviceType];

    for(idobjinitems){

        if ([obj isKindOfClass:[UIImage class]]){

            [composeVCaddImage:(UIImage*)obj];

        }elseif([objisKindOfClass:[NSURLclass]]){

            [composeVCaddURL:(NSURL*)obj];

        }

    }

    // 添加要分享的文字

    [composeVCsetInitialText:@"分享"];

    // 弹出分享控制器

    composeVC.completionHandler = ^(SLComposeViewControllerResult result){

        if (result == SLComposeViewControllerResultDone) {

            NSLog(@"点击了发送");

        }

        else if (result == SLComposeViewControllerResultCancelled)

        {

            NSLog(@"点击了取消");

        }

    };

    @try{

        [controllerpresentViewController:composeVC animated:YES completion:nil];

        returnYES;

    }@catch(NSException *exception){

        NSLog(@"没有安装");

        returnNO;

    }@finally {

    }

}

#pragma mark - Private

+ (NSString*)serviceTypeWithType:(BDShareType)type{

    //这个方法不再进行校验,传入就不等于0.这里做一个转换

    NSString* serviceType;

    if( type!=0){

        switch(type){

            case BDShareTypeWeChat:

                serviceType =@"com.tencent.xin.sharetimeline";

                break;

            caseBDShareTypeQQ:

                serviceType =@"com.tencent.mqq.ShareExtension";

                break;

            case BDShareTypeSina:

                serviceType =@"com.apple.share.SinaWeibo.post";

                break;

            default:

                break;

        }

    }

    return serviceType;

}

下边是使用的时候

[BDShareManager shareWithType:BDShareTypeWeChat andController:self andItems:@[图片数组]];

相关文章

网友评论

      本文标题:iOS 原生分享 多张图片

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