我正在通过 UIActivityViewController 共享录音。当音频文件通过电子邮件或 iMessage 共享时,它会显示音频文件的基本名称,无需任何明显的更改方式。
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 的备用文件名?
最佳答案
您可以在临时目录中使用您想要的任何名称创建到文件的硬链接(hard link)(这样您就不必复制实际文件)并将其传递给 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];
希望对您有所帮助!祝你好运!
关于ios - 具有备用文件名的 UIActivityViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19959642/