UIActivityViewController备用文件名?
我通过UIActivityViewController共享录音。 当audio文件通过电子邮件或iMessage共享时,它将显示audio文件的底层名称,而无需任何明显的方式更改。
NSArray *activityItems = [NSArray arrayWithObjects:self.audioPlayer.url, nil]; UIActivityViewController *avc = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; [self presentViewController:avc animated:YES completion:nil];
如果我不使用UIActivityViewController,并直接使用MFMessageComposeViewController,比我可以使用
[composer addAttachmentURL:self.audioPlayer.url withAlternateFilename:@"Piano Song.m4a"];
是否有可能与UIActivityViewController有一个替代文件名?
你可以用临时目录中的任何名字创build一个到文件的硬链接(这样你就不必复制实际的文件),并把它传递给UIActivityViewController
而不是文件。
- (NSURL *)createLinkToFileAtURL:(NSURL *)fileURL withName:(NSString *)fileName { NSFileManager *fileManager = [NSFileManager defaultManager]; // create a path in the temp directory with the fileName NSURL *tempDirectoryURL = [[NSFileManager defaultManager] temporaryDirectory]; NSURL *linkURL = [tempDirectoryURL URLByAppendingPathComponent:fileName]; // if the link already exists, delete it if ([fileManager fileExistsAtPath:linkURL.path]) { NSError *error; [fileManager removeItemAtURL:linkURL error:&error]; if (error) { // handle the error } } // create a link to the file NSError *error; BOOL flag = [fileManager linkItemAtURL:fileURL toURL:linkURL error:&error]; if (!flag || error) { // handle the error } return linkURL; }
像这样使用它:
NSURL *fileURL = ...; NSString *desiredName = ...; NSURL *linkURL = [self createLinkToFileAtURL:fileURL withName:desiredName]; UIActivityViewController *viewController = [[UIActivityViewController alloc] initWithActivityItems:@[linkURL] applicationActivities:nil]; [self presentViewController:viewController animated:YES completion:nil];
希望这可以帮助! 祝你好运!
不,不可能。 你能不能在分享之前重命名文件?