在我的应用程序中,我在共享表中实现了一个名为Open In的自定义活动,点击此图标将生成.txt文件,并显示能够打开和使用此生成的.txt文件的应用程序列表。 iOS会在共享表中的每个应用程序名称前自动添加“打开方式”。
但是现在第三方开发人员已经实现了共享扩展,出于某种原因,这些也出现在这个Open In界面中。例如,Twitter显示,但当我点击它时,.txt文件中的文本不会出现在撰写窗口中。因此,这些第三方共享扩展在此界面中完全无用。此外,它们已经在原始共享表中显示(并且它们在那里工作) - 用户点击了Open In,因此他们只关心查看可以打开.txt文件的应用程序。
如何确保此自定义活动中仅提供Open In应用程序?
//make a txt file to write the data
NSString *fileName = [NSString stringWithFormat:@"%@Text.txt", NSTemporaryDirectory()];
[self.textToShare writeToFile:fileName
atomically:NO
encoding:NSUTF8StringEncoding
error:nil];
NSURL *textFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"Text.txt"]];
self.openInController = [UIDocumentInteractionController interactionControllerWithURL:textFileURL];
self.openInController.delegate = self;
BOOL didPresentOpenIn = [self.openInController presentOpenInMenuFromBarButtonItem:self.buttonToPresentFrom animated:YES];
if (!didPresentOpenIn) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No Apps Available"
message:@"You do not have any apps installed that can open text files."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}