iOS:在 UIActivityViewController 中禁用 WhatsApp?

标签 ios objective-c uiactivityviewcontroller

我使用以下代码通过 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/

相关文章:

ios - 如何使用 self 和 enum 在 Swift 中设置条件断点的条件?

ios - 在 iOS 中对位串进行简单的按位操作

objective-c - 我如何配置 CocoaPods 以使用 https ://github. com/RestKit/cocoa-oauth 而不是过时的?

ios - Swift UIActivityViewController Image&Url Share 不适用于 FB

ios - 如何将我的当前位置分享给 UIActivityViewController?

iphone - iOS UIActivity View Controller Opera 迷你按钮?

iphone - iOS 导航面包屑路径

ios - CS193P 作业3,Graphing MVC 的模型应该是什么?

ios - 离线使用 Mapkit

ios - 无法更改 View 的默认布局边距