ios关于自带分享SLComposeViewController

关于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 ShareTool
static 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"]];




我的业余技术微信公众号:YKJGZH,欢迎大家进入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值