美文网首页
分享功能的实现

分享功能的实现

作者: 不要虚度美好的时光 | 来源:发表于2022-04-03 19:14 被阅读0次

可以分享图片、文字、链接:

// 分享
#import "SLCustomActivity.h"
#import <Social/Social.h>
@import SafariServices;
@import MessageUI;
@import Twitter;
    }else if ([strTitle isEqualToString:NSLocalizedString(@"Share_APP_to_friends", nil)]) {
        NSLog(@"Share_APP_to_friendsShare_APP_to_friends");
        [self shareAPPtofriends];
    }
- (void)shareAPPtofriends {
    [self.view endEditing:YES];
    
    //要分享的内容,加在一个数组里边,初始化UIActivityViewController
    NSString *textToShare = NSLocalizedString(@"Text_Share_Title", nil);
    UIImage *imageToShare = [UIImage imageNamed:@"shareToFriendsImage.png"];
    NSURL *urlToShare = [NSURL URLWithString:@"https://apps.apple.com/cn/app/idxxxxxxxxxx"];
    NSArray *activityItems = @[urlToShare,textToShare,imageToShare];
    
    //自定义Activity
    SLCustomActivity * customActivit = [[SLCustomActivity alloc] initWithTitie:NSLocalizedString(@"Quotations_All", nil) withActivityImage:[UIImage imageNamed:@"shareToFriendsImage.png"] withUrl:urlToShare withType:@"CustomActivity" withShareContext:activityItems];
    NSArray *activities = @[customActivit];
    
    /**
     创建分享视图控制器
     
     ActivityItems  在执行activity中用到的数据对象数组。数组中的对象类型是可变的,并依赖于应用程序管理的数据。例如,数据可能是由一个或者多个字符串/图像对象,代表了当前选中的内容。
     
     Activities  是一个UIActivity对象的数组,代表了应用程序支持的自定义服务。这个参数可以是nil。
     
     */
    UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:activities];
    
    //UIActivityViewControllerCompletionWithItemsHandler)(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError)  iOS >=8.0
    
    //UIActivityViewControllerCompletionHandler (NSString * __nullable activityType, BOOL completed); iOS 6.0~8.0
    
    
    if([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0){
        //初始化回调方法
        UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(NSString *activityType,BOOL completed,NSArray *returnedItems,NSError *activityError)
        {
            NSLog(@"activityType :%@", activityType);
            if (completed)
            {
                NSLog(@"completed");
            }
            else
            {
                NSLog(@"cancel");
            }
            
        };
        
        // 初始化completionHandler,当post结束之后(无论是done还是cancell)该blog都会被调用
        activityVC.completionWithItemsHandler = myBlock;
    }else{
        
        UIActivityViewControllerCompletionHandler myBlock = ^(NSString *activityType,BOOL completed)
        {
            NSLog(@"activityType :%@", activityType);
            if (completed)
            {
                NSLog(@"completed");
            }
            else
            {
                NSLog(@"cancel");
            }
            
        };
        // 初始化completionHandler,当post结束之后(无论是done还是cancell)该blog都会被调用
        activityVC.completionHandler = myBlock;
    }
    
    //Activity 类型又分为“操作”和“分享”两大类
    /*
     UIKIT_EXTERN NSString *const UIActivityTypePostToFacebook     NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypePostToTwitter      NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypePostToWeibo        NS_AVAILABLE_IOS(6_0);    //SinaWeibo
     UIKIT_EXTERN NSString *const UIActivityTypeMessage            NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypeMail               NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypePrint              NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypeCopyToPasteboard   NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypeAssignToContact    NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypeSaveToCameraRoll   NS_AVAILABLE_IOS(6_0);
     UIKIT_EXTERN NSString *const UIActivityTypeAddToReadingList   NS_AVAILABLE_IOS(7_0);
     UIKIT_EXTERN NSString *const UIActivityTypePostToFlickr       NS_AVAILABLE_IOS(7_0);
     UIKIT_EXTERN NSString *const UIActivityTypePostToVimeo        NS_AVAILABLE_IOS(7_0);
     UIKIT_EXTERN NSString *const UIActivityTypePostToTencentWeibo NS_AVAILABLE_IOS(7_0);
     UIKIT_EXTERN NSString *const UIActivityTypeAirDrop            NS_AVAILABLE_IOS(7_0);
     */
    
    // 分享功能(Facebook, Twitter, 新浪微博, 腾讯微博...)需要你在手机上设置中心绑定了登录账户, 才能正常显示。
    //关闭系统的一些activity类型
    activityVC.excludedActivityTypes = @[];
    
    //在展现view controller时,必须根据当前的设备类型,使用适当的方法。在iPad上,必须通过popover来展现view controller。在iPhone和iPodtouch上,必须以模态的方式展现。
    [self presentViewController:activityVC animated:YES completion:nil];
    
}

相关文章

  • 分享功能的实现

    可以分享图片、文字、链接:

  • Android开发之分享功能(一)

    1.实现系统自带的分享功能 使用android系统提供的分享功能:点击分享按钮,系统会自动获取手机内提供分享功能的...

  • 选项菜单分享功能实现

    Android选项菜单分享功能实现

  • 2019-12-03

    Swift使用UIActivityViewController实现分享文件功能

  • App分享功能实现

    功能点:在分享后的H5页面上点击 打开客户端 ,判断是否手机安装App,如果安装了就打开App,否则跳转到AppS...

  • 学习笔记-使用Airdrop进行文件分享

    Airdrop分享功能实现 UIActivityViewController类提供了内置的AirDrop功能,在应...

  • Vue<分享功能>

    今天分享一个小技巧,教你如何一分钟内学会用vue实现分享功能。 H5无法实现直接调用手机App并实现分享功能,如果...

  • android系统分享的自定义功能

    分享功能是app中特别常见的功能,国内的app基本都支持分享到微信 QQ等主流的社交应用。至于分享功能的实现大多是...

  • Django打造文件分享系统

    本教程介绍如何使用Django框架快速打造文件分享系统,实现搜索功能,分享功能,用户分享文件查询。通过本课程,我们...

  • 小程序入门技术点总结第三篇

    今天这篇分享几个小功能点,主要讲如何让实现。 1、页面的收藏和分享功能 2、背景音乐播放 一、页面的收藏和分享功能...

网友评论

      本文标题:分享功能的实现

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