Peut aider en fonction de la version:
Apple ne cesse de changer l'ID du bundle pour cette extension. Vous pourriez avoir besoin d'exclure ceci aussi, mais cela dépend de la version de l'iOS SDK:
UIActivityType(rawValue: "com.apple.CloudDocsUI.AddToiCloudDrive")
Fournisseurs d'éléments d'activité après la sélection de l'utilisateur:
Vous pourriez également transmettre des objets UIActivityItemProvider au lieu d'objets bruts à votre initialisateur UIActivityViewController. Malheureusement, cela ne change pas les options activées dans l'interface utilisateur, mais cela se fermera s'il n'y a aucun élément retourné après la sélection de l'utilisateur.
Tout d'abord, créez une nouvelle classe pour votre fournisseur. Vous pourriez l'utiliser pour retourner différents contenus basés sur différents fournisseurs aussi! Par exemple, une image et un texte pour le mail, seulement du texte pour iMessage.
class ShareActivityItemProvider: UIActivityItemProvider {
override func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? {
print("type d'activité sélectionné: \(activityType.rawValue)")
// Ce sont vos types d'activité acceptés
if activityType == .postToFacebook || activityType == .postToTwitter || activityType == .postToWeibo || activityType == .mail || activityType == .message {
return placeholderItem
}
return nil
}
}
Ensuite, vous initialisez votre UIActivityItemProvider comme ceci:
let avc = UIActivityViewController(activityItems: [ShareActivityItemProvider(placeholderItem: "Message de test ou tout objet")], applicationActivities: nil)
Ou, la manière bricolage mais légale de faire ce que vous voulez:
Après ce qui précède, vous pourriez ajouter une UIImage vide de substitution, supprimer les options supplémentaires qui sont maintenant disponibles, et ne retourner que ce que vous voulez de votre fournisseur:
let avc = UIActivityViewController(activityItems: [ShareActivityItemProvider(placeholderItem: "Message de test ou tout objet"), ShareActivityItemProvider(placeholderItem: UIImage())], applicationActivities: nil)
avc.excludedActivityTypes = [.assignToContact, .saveToCameraRoll, ... autres ...]
class ShareActivityItemProvider: UIActivityItemProvider {
override func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivityType) -> Any? {
print("type d'activité \(activityType.rawValue) \(activityType)")
if placeholderItem is String, activityType == .postToFacebook || activityType == .postToTwitter || activityType == .postToWeibo || activityType == .mail || activityType == .message {
return placeholderItem
}
return nil
}
}