最新写项目有个需求是分享多张图片到其他平台,因为一直使用的是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:@[图片数组]];
网友评论