事件需求:将微信里面的word等文件上传到我们自己的App
1、打开相关的通过其他App的代码和页面
self.documentController = [UIDocumentInteractionController interactionControllerWithURL: urlDocment];
self.documentController.delegate = self;// 遵循代理
self.documentController.UTI = @"com.adobe.pdf"; // 哪类文件支持第三方打开,这里不证明就代表所有文件!
//NSString *fileName = url.lastPathComponent;
self.documentController.name = @"111.pdf";
[self.documentController presentOpenInMenuFromRect:self.viewController.view.bounds inView:self.viewController.view animated:YES];
2、app想要接收微信共享出来的文件,需要进行相关配置
1、info.plist里面配置
参考图片
- (BOOL)application:(UIApplication*)applicationopenURL:(NSURL*)urlsourceApplication:(NSString*)sourceApplicationannotation:(id)annotation
{
/*外部文件访问本应用,会传递参数过来*/
NSLog(@"application = %@",application);
NSLog(@"url = %@",url);
NSLog(@"sourceApplication = %@",sourceApplication);
NSLog(@"annotation = %@",annotation);
/*得到微信传来的相关文件数据*/
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
NSLog(@"%@",data);
/*将数据保存到我们自己的App的沙盒*/
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
BOOL atomically = [data writeToFile:[NSString stringWithFormat:@"%@/%@",path,@"111.pdf"] atomically:YES];
}
// 当文件名为中文时,解决url编码问题
- (NSString*)URLDecodedString:(NSString*)str {
NSString *decodedString=(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));
NSLog(@"decodedString = %@",decodedString);
returndecodedString;
}