首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS:在UIActivityViewController中禁用WhatsApp?

iOS:在UIActivityViewController中禁用WhatsApp?
EN

Stack Overflow用户
提问于 2015-10-08 09:44:44
回答 2查看 4.6K关注 0票数 2

我使用以下代码通过UIActivityViewController将字符串仅共享给Facebook

代码语言:javascript
复制
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图标和more图标。有没有办法去掉这两个?提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2019-03-13 16:33:25

虽然rmaddy的答案曾经是正确的,但对于从iOS 10开始遇到这个问题的任何人来说,做起来都相当简单:

代码语言:javascript
复制
activityController.excludedActivityTypes = [
    UIActivity.ActivityType(rawValue: "net.whatsapp.WhatsApp.ShareExtension")
]

如果您想隐藏其他非系统活动类型,可以与它们共享,然后使用在completionWithItemsHandler闭包中返回的标识符:

代码语言:javascript
复制
shareActivityController.completionWithItemsHandler = { [weak self] (activityType, completed, returnedItems, activityError) in
    print("Activity Type", activityType?.rawValue ?? "?") // <--- Use the identifier this logs!
}

虽然无可否认,在OP的问题中,这仍然不会对你有帮助,因为将其仅限于 Facebook,你必须安装所有其他数以千计的具有分享活动的应用程序才能禁用它们!

以下是我在iPhone上安装的应用程序的所有标识符:

代码语言:javascript
复制
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")
票数 7
EN

Stack Overflow用户

发布于 2015-10-08 09:56:05

不能,您只能删除Apple为其提供常量的activity类型。没有办法删除出现的第三方应用程序或“更多...”活动。

如果你只想分享一个特定的应用程序,那么使用UIActivityController是没有意义的。

使用各种Facebook库/API之一与Facebook共享您的数据。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33005258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档