ios 分享扩展
来源:互联网 发布:区网络信息管理中心 编辑:程序博客网 时间:2024/06/06 08:49
1, 创建分享扩展
File --- New -- Target
2, 设置分享的时候必须要指定 一个扩展规则
3,设置 APP Group 来实现 实现应用共享 数据
读取 group 中的数据就可以使用 “group.xxxxxx” 来获取数据
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *groupURL = [fileManager containerURLForSecurityApplicationGroupIdentifier:@"group.DoubiDemo"];
简单的理解就是: 扩展 是一个中转站, 其他应用将文件地址发给 扩展 ,并将文件复制到 扩展中,我们自己的应用将从 扩展 中读取数据
我们在扩展中处理 接收到的文件路径 复制到 扩展
<span style="color:#000000;"> -(void)viewDidLoad{ [super viewDidLoad]; NSExtensionItem *extensionItem = [self.extensionContext.inputItems firstObject]; __weak __typeof(self) __weak_self = self; BOOL isExit = YES; for(NSItemProvider *itemProvider in [extensionItem attachments]) { if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypeFileURL]) { isExit = NO; [itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypeFileURL options:nil completionHandler:^(id<NSSecureCoding> _Nullable item, NSError * _Null_unspecified error) { NSURL *URL = (NSURL *)item; if ([URL isFileURL] && [__weak_self copyResToAppGroup:URL]) [__weak_self openApp ]; else [self.extensionContext completeRequestReturningItems:nil completionHandler:NULL]; }]; } } if (isExit) [self.extensionContext completeRequestReturningItems:nil completionHandler:NULL];}</span>将文件复制到 扩展
// 将文件复制到 app group<span style="color:#000000;">- (BOOL) copyResToAppGroup:(NSURL *) sorURL{ NSError *error = nil; NSFileManager *fileManager = [NSFileManager defaultManager]; NSURL *groupURL = [fileManager containerURLForSecurityApplicationGroupIdentifier:@"group.DoubiDemo"]; groupURL = [groupURL URLByAppendingPathComponent:@"upload"]; BOOL isDir = NO; if (![fileManager fileExistsAtPath:groupURL.relativePath isDirectory:&isDir] && !isDir) [fileManager createDirectoryAtURL:groupURL withIntermediateDirectories:YES attributes:nil error:&error]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyyMMddHHmmss"]; NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]]; NSString *name = [[sorURL lastPathComponent] stringByDeletingPathExtension]; NSString *ext = [sorURL pathExtension]; groupURL = [groupURL URLByAppendingPathComponent:[NSString stringWithFormat:@"%@-%@.%@", name, currentDateStr, ext]]; return [fileManager copyItemAtURL:sorURL toURL:groupURL error:&error];}</span>
在扩展中打开 Container app
<span style="color:#000000;">- (void)openApp { NSString *destURLString = @"doubiDemo://"; UIResponder* responder = self; while ((responder = [responder nextResponder]) != nil){ if([responder respondsToSelector:@selector(openURL:)] == YES){ [responder performSelector:@selector(openURL:) withObject:[NSURL URLWithString:destURLString]]; [self.extensionContext completeRequestReturningItems:nil completionHandler:NULL]; } }}</span>
注意 :这个的@"doubiDemo://" 是container app 设置的 url Scheme
示例代码地址:git@github.com:Gaolili/ShareExtDemo.git
0 0
- IOS 应用 分享 扩展
- ios 分享扩展
- IOS分享扩展使用JS脚本
- iOS新特性扩展之Today分享(1)
- iOS新特性扩展之Today分享(2)
- ios扩展
- 分享 iOS
- [iOS 扩展转] iOS扩展开发-Today扩展&share扩展
- AIR功能扩展的分享
- iOS社会化分享-iOS系统分享,shareSDK分享,Umeng分享
- iOS - 社交分享- weibo分享
- iOS UITableView扩展样式使用之初级剑客篇(欢迎提建议和分享遇到的问题)
- iOS扩展机制 - associative
- iOS: 实践 NSString扩展
- ios 类别和扩展
- iOS属性的扩展
- 【iOS】UIWebView HTML5 扩展
- ios 类别和扩展
- solrcloud整合zookeper
- 【分类】朴素贝叶斯算法学习
- 链表的动态输入、插入 、与删除
- java RSA 加密(配置文件)
- poj 2236 **(需要找关系)
- ios 分享扩展
- ovs bond
- Android Drawable 那些不为人知的高效用法
- 员工部门工资SQL面试题
- 人生路
- linux AB压力测试工具
- java equals()方法的写法
- QQ第三方登录
- New Year Table