我使用以下代码通过 UIActivityViewController 仅将字符串共享给 Facebook
UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:nil];
activityViewController.excludedActivityTypes = @[UIActivityTypePostToWeibo,
UIActivityTypeMessage,
UIActivityTypeMail,
UIActivityTypePrint,
UIActivityTypeCopyToPasteboard,
UIActivityTypeAssignToContact,
UIActivityTypeSaveToCameraRoll,
UIActivityTypeAddToReadingList,
UIActivityTypePostToFlickr,
UIActivityTypePostToVimeo,
UIActivityTypePostToTencentWeibo,
UIActivityTypeAirDrop,
UIActivityTypePostToTwitter];
[self presentViewController:activityViewController animated:YES completion:^{
...
}
除了它还显示 WhatsApp 图标和更多图标外,这有效。有没有办法删除这两个?提前致谢!
最佳答案
虽然 rmaddy 的回答曾经是正确的,但对于自 iOS 10 以来遇到此问题的任何人来说,做起来相当简单:
activityController.excludedActivityTypes = [
UIActivity.ActivityType(rawValue: "net.whatsapp.WhatsApp.ShareExtension")
]
如果你想隐藏其他非系统事件类型,你可以分享给他们,然后使用completionWithItemsHandler
闭包中返回的标识符:
shareActivityController.completionWithItemsHandler = { [weak self] (activityType, completed, returnedItems, activityError) in
print("Activity Type", activityType?.rawValue ?? "?") // <--- Use the identifier this logs!
}
尽管不可否认,就 OP 的问题而言,这仍然无法帮助您将其限制为仅 Facebook,您必须安装所有其他数千个应用程序共享事件以禁用所有事件!
以下是我碰巧在 iPhone 上安装的应用程序的所有标识符:
UIActivity.ActivityType(rawValue: "com.apple.reminders.RemindersEditorExtension"),
UIActivity.ActivityType(rawValue: "com.apple.mobilenotes.SharingExtension"),
UIActivity.ActivityType(rawValue: "net.whatsapp.WhatsApp.ShareExtension"),
UIActivity.ActivityType(rawValue: "pinterest.ShareExtension"),
UIActivity.ActivityType(rawValue: "com.facebook.Messenger.ShareExtension"),
UIActivity.ActivityType(rawValue: "com.tinyspeck.chatlyio.share"), // Slack!
UIActivity.ActivityType(rawValue: "ph.telegra.Telegraph.Share"),
UIActivity.ActivityType(rawValue: "com.google.Drive.ShareExtension"),
UIActivity.ActivityType(rawValue: "com.toyopagroup.picaboo.share"), // Snapchat!
UIActivity.ActivityType(rawValue: "wefwef.YammerShare"),
UIActivity.ActivityType(rawValue: "com.fogcreek.trello.trelloshare"),
UIActivity.ActivityType(rawValue: "com.linkedin.LinkedIn.ShareExtension"),
UIActivity.ActivityType(rawValue: "com.hammerandchisel.discord.Share"),
UIActivity.ActivityType(rawValue: "com.google.Gmail.ShareExtension"),
UIActivity.ActivityType(rawValue: "com.google.inbox.ShareExtension"),
UIActivity.ActivityType(rawValue: "com.riffsy.RiffsyKeyboard.RiffsyShareExtension"), //GIF Keyboard by Tenor
UIActivity.ActivityType(rawValue: "com.google.hangouts.ShareExtension"),
UIActivity.ActivityType(rawValue: "com.ifttt.ifttt.share")
关于iOS:在 UIActivityViewController 中禁用 WhatsApp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005258/