//分享
- (IBAction)RespostClick_Action:(id)sender {
UIImage* image = [UIImage imageNamed:@"icon_share.png"]
NSString *text = @"I found an Awesome application software! InstaDown"
//https://itunes.apple.com/us/app/id1260302654?l=zh&ls=1&mt=8
NSURL *urlToShare = [NSURL URLWithString:[NSString stringWithFormat:@"https://itunes.apple.com/us/app/id%@?l=zh&ls=1&mt=8",[HHLADSManager getValueFromjsondata:@"appid"]]]
NSArray *activityItems = @[text,image,urlToShare]
UIActivityViewController *avc = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil]
[self presentViewController:avc animated:TRUE completion:nil]
// 选中分享类型
[avc setCompletionWithItemsHandler:^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
// 显示选中的分享类型
NSLog(@"act type %@",activityType)
if (completed) {
NSLog(@"ok")
}else {
NSLog(@"no ok")
}
}]
UIPopoverPresentationController *popover = avc.popoverPresentationController
if (popover) {
popover.sourceView = self.view
popover.sourceRect = self.view.bounds
popover.permittedArrowDirections = UIPopoverArrowDirectionUp
}
}
这里主要讲利用分享扩展(share extension)实现系统分享到自己app的功能,扩展里面跳转宿主app,及数据传输等
创建成功会生成一个文件夹
info.plist 里面有激活扩展的规则,匹配规则会在系统分享里面出现自己的app。
NSExtensionActivationRule:默认为字符串“TRUEPREDICATE”,表示在分享菜单中一直显示该扩展。生产环境不可用,必须将类型改为Dictionary类型,然后添加以下字段:
默认分享扩展类ShareViewController,自带视图,可以全部自定义,这里不讲诉
跳转宿主app后在一下方法中处理逻辑
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id>*)options
首先要配置相同的 App Groups,必须group.开头
NSUserDefaults *de = [[NSUserDefaults alloc]initWithSuiteName:@"group.(跟上面app groups一致)"]
[de setObject:value forKey:@"key"]
宿主app 获取数据
NSUserDefaults *de = [[NSUserDefaults alloc]initWithSuiteName:@"group.(跟上面app groups一致)"]
id value = [de objectForKey:@"key"]
扩展要选择对应宿主app运行,但扩展属于独立进程,调试的时候运行扩展,宿主app里面的断点不会走,同样运行宿主app,扩展里面的断点不会执行
这里需要将其他应用的文件分享到我们自己的应用,让我们的应用出现在任何文件分享的情况下
效果如图:
分享过来的文件,会存在沙盒下的Documents/Inbox文件夹下。
可以在AppDelegate中重写openURL方法
这里需要注意NSURL转NSString,需要用UTF-8处理下。
这样就可以获取其他App的文件了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)