关于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,欢迎大家进入