iOS shareExtension总结分享

本文总结了iOS shareExtension的实现,包括NSExtensionActivationRule配置、分享数据获取与UI搭建、内存限制处理,特别是针对图片、视频和大文件分享时的内存优化策略,如图片压缩、视频封面获取、文件大小计算等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非常感谢大家利用自己宝贵的时间来阅读我的文章 ,好久没有写东西了,这几天给项目添加苹果iOS8之后的shareExtension功能,踩了些坑,做下总结,希望后面的朋友们做这个功能的时候可以在这里一站式解决😄。希望这篇文章能给你的开发过程带来一些帮助。喜欢的可以关注一下我的简书我的博客   
关于shareExtension的基本功能和实现网上有很多资料,作者不想多说并向你扔了个传送门iOS Share Extension开发

下面主要说一下再整个过程中个人觉得比较重要的几个地方
#1、NSExtensionActivationRule配置

NSExtensionActivationSupportsAttachmentsWithMaxCount(附件最多限制)NSExtensionActivationSupportsAttachmentsWithMinCount(附件最少限制)NSExtensionActivationSupportsImageWithMaxCount(图片最多限制)NSExtensionActivationSupportsMovieWithMaxCount(视频最多限制)NSExtensionActivationSupportsWebPageWithMaxCount(Web页面最多限制)NSExtensionActivationSupportsWebURLWithMaxCount(Web链接最多限制)NSExtensionActivationSupportsFileWithMaxCount(文件最多限制)NSExtensionActivationSupportsText(是否支持文本类型)

这些属性根据自己的需求设置好数量就行。说一下可能遇到的问题
**1.1、**NSExtensionActivationSupportsText,主要用于备忘录之类文本分享,网上资料有的说设置bool类型,有的说设置string类型,值为YES,我这边都不好使,最后设置为值为1的number类型可以了。如果跟我遇到同样问题的可以试下
**1.2、**在App Store分享APP时,有两个NSExtensionItem,UTI分别为public.url和public.png,loadItemForTypeIdentifier获取item类型为NSURL和UIImage,截图分享的item类型也为UIImage
#2、获取分享数据搭建UI
在自定义VC的viewDidLoad异步获取分享数据,获取完毕刷新UI

[MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{//异步获取分享内容
        dispatch_group_t group = dispatch_group_create();
        [self.extensionContext.inputItems enumerateObjectsUsingBlock:^(NSExtensionItem *  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            [obj.attachments enumerateObjectsUsingBlock:^(NSItemProvider *  _Nonnull itemProvider, NSUInteger idx, BOOL * _Nonnull stop) {
                dispatch_group_enter(group);
                NSString *utiStr = @"要分享文件的UTI";
                if ([itemProvider hasItemConformingToTypeIdentifier:utiStr])
                {
                    [itemProvider loadItemForTypeIdentifier:“utiStr” options:nil completionHandler:^(id<NSSecureCoding>  _Nullable item, NSError * _Null_unspecified error) {//在这里保存获取到的分享数据
                        if ([(NSObject *)item isKindOfClass:[NSURL class]]){
                        } else if ([(NSObject *)item isKindOfClass:[UIImage class]]) {//截图||APP图片       
                       }else if ([(NSObject *)item isKindOfClass:[NSString class]]) {//文本 
                        }
                        dispatch_group_leave(group);
                    }];
                }
            }];
        }];
        dispatch
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值