iOS:在UIActivityViewController中禁用WhatsApp?

问题描述 投票:2回答:2

我正在使用以下代码使用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图标和更多图标之外,这是有效的。有没有办法删除这两个?提前致谢!

ios objective-c uiactivityviewcontroller
2个回答
4
投票

不,您只能删除Apple为其提供常量的活动类型。无法删除显示的第三方应用或“更多...”活动。

如果您只想与一个特定的应用程序共享,那么使用UIActivityController就没有意义了。

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


1
投票

虽然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")
© www.soinside.com 2019 - 2024. All rights reserved.