ios关于自带分享SLComposeViewController

来源:互联网 发布:html5制作软件 编辑:程序博客网 时间:2024/06/05 23:03

关于MyActivity 点击打开链接


ShareTool.h

#import <Foundation/Foundation.h>#import <Social/Social.h>#import <UIKit/UIKit.h>typedef NS_ENUM(NSInteger, ShareToolType) {    ShareToolTypeOthers,//其他    ShareToolTypeWeChat,//微信    ShareToolTypeQQ,//腾讯QQ    ShareToolTypeTencentWeibo,//腾讯微博    ShareToolTypeSinaWeibo,//新浪微博    ShareToolTypeFacebook,    ShareToolTypeVimeo,    ShareToolTypeTwitter,    ShareToolTypeFlickr,    ShareToolTypeYouDao,//有道笔记    ShareToolTypeYiXin,//易信};@interface ShareTool : NSObject+ (instancetype)shareTool;-(UIImage *)fullScreenshots;-(void)comesShare:(UIViewController *)vc inView:(UIView *)view;-(void)customizeShare:(UIViewController *)vc ShareToolType:(ShareToolType)type Items:(NSArray *)items;@end

ShareTool.m

#import "ShareTool.h"#import "MyActivity.h"@implementation ShareToolstatic ShareTool *shareTool;+ (instancetype)shareTool{    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        shareTool = [[ShareTool alloc]init];    });    return shareTool;}/** *  全屏截图 * */-(UIImage *)fullScreenshots{    UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow];    UIGraphicsBeginImageContext(screenWindow.frame.size);    [screenWindow.layer renderInContext:UIGraphicsGetCurrentContext()];    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();    return viewImage;}/** *  自带分享 *  @param vc *  @param view ipad分享,需要这个view */-(void)comesShare:(UIViewController *)vc inView:(UIView *)view {        NSString *title = @"标题";    NSString *description = @"内容";    UIImage *image = [self fullScreenshots];    NSURL *url = [NSURL URLWithString:@""];        NSArray *activityItems = @[title,description,image,url];        //创建自定义的Activity    MyActivity *act1 = [[MyActivity alloc]initWithImage:image atURL:nil atTitle:@"title" atShareContentArray:activityItems];    NSArray *apps = @[act1];    //创建    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:apps];        //不出现在活动项目    activityVC.excludedActivityTypes = @[                                         //UIActivityTypePostToFacebook,                                         //UIActivityTypePostToTwitter,                                         //UIActivityTypePostToWeibo,//新浪微博                                         //UIActivityTypeMessage,//信息                                         UIActivityTypeMail,                                         //UIActivityTypePrint,//打印                                         //UIActivityTypeCopyToPasteboard,//拷贝                                         //UIActivityTypeAssignToContact,//指定联系人                                         //UIActivityTypeSaveToCameraRoll,//保存到相机胶卷                                         //UIActivityTypeAddToReadingList,//加入阅读列表                                         //UIActivityTypePostToFlickr,                                         //UIActivityTypePostToVimeo,                                         //UIActivityTypePostToTencentWeibo,//腾讯微博                                         //UIActivityTypeAirDrop                                         //UIActivityTypeOpenInIBooks                                         ];    //判断系统版本,初始化点击回调方法    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){        UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(NSString *activityType,BOOL completed,NSArray *returnedItems,NSError *activityError) {            if (completed) {                NSLog(@"completed");            }else {                NSLog(@"cancel");            }        };                activityVC.completionWithItemsHandler = myBlock;    }else{        UIActivityViewControllerCompletionHandler myBlock = ^(NSString *activityType,BOOL completed) {            if (completed) {                NSLog(@"completed");            }else {                NSLog(@"cancel");            }        };        activityVC.completionHandler = myBlock;    }       if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {//判断设备        [vc presentViewController:activityVC animated:YES completion:nil];   }else {       UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:activityVC];       [popup presentPopoverFromRect:CGRectMake(view.bounds.size.width/2, view.bounds.size.height, 0, 0) inView:view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];   }    }/** *  自定义分享 * *  @param vc *  @param type *  @param items */-(void)customizeShare:(UIViewController *)vc ShareToolType:(ShareToolType)type Items:(NSArray *)items{        NSString *test = [self serviceTypeWithType:type];    if (![SLComposeViewController isAvailableForServiceType:test]) {        NSLog(@"或者没有配置相关的帐号");        return;    }        // 2.创建分享的控制器    SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:test];    NSLog(@"%@",composeVc);    if (!composeVc) {        NSLog(@"没有安装");    }        for ( id obj in items){        if ([obj isKindOfClass:[UIImage class]]){            [composeVc addImage:(UIImage *)obj];        }else if ([obj isKindOfClass:[NSURL class]]){            [composeVc addURL:(NSURL *)obj];        }else if ([obj isKindOfClass:[NSString class]]) {            [composeVc setInitialText:(NSString *)obj];        }    }        // 3.弹出分享控制器(以Modal形式弹出)    [vc presentViewController:composeVc animated:YES completion:nil];        composeVc.completionHandler = ^(SLComposeViewControllerResult result){        if (result == SLComposeViewControllerResultCancelled) {            NSLog(@"点击了取消");        } else {            NSLog(@"点击了发送");        }    };}-(NSString *)serviceTypeWithType:(ShareToolType)type{    NSString * serviceType;    if (type!= 0){        switch (type){            case ShareToolTypeWeChat:                serviceType = @"com.tencent.xin.sharetimeline";                break;            case ShareToolTypeQQ:                serviceType = @"com.tencent.mqq.ShareExtension";                break;            case ShareToolTypeSinaWeibo:                serviceType = SLServiceTypeSinaWeibo;//@"com.apple.share.SinaWeibo.post";                break;            case ShareToolTypeTencentWeibo:                serviceType = SLServiceTypeTencentWeibo;//@"com.apple.share.TencentWeibo.post";                break;            case ShareToolTypeFacebook:                serviceType = SLServiceTypeFacebook;//@"com.apple.share.Facebook.post";                break;            case ShareToolTypeVimeo:                serviceType = @"com.apple.share.Vimeo.post";                break;            case ShareToolTypeTwitter:                serviceType = SLServiceTypeTwitter;//@"com.apple.share.Twitter.post";                break;            case ShareToolTypeFlickr:                serviceType = @"com.apple.share.Flickr.post";                break;            case ShareToolTypeYouDao:                serviceType = @"com.youdao.note.iphone.shareExtension";                break;            case ShareToolTypeYiXin:                serviceType = @"com.yixin.yixin.YXShareExtension";                break;            default:                break;        }    }    return serviceType;}@end

使用:

[[ShareTool shareTool] customizeShare:self ShareToolType:ShareToolTypeQQ Items:@[[[ShareTool shareTool] fullScreenshots],@"aaaa"]];