我正在使用
我不喜欢的是在显示的
我不想让这些应用程序在我的活动共享中出现,因为大多数应用程序无法正常工作,最终会给我的用户带来不好的体验,并且可能会将我的应用程序归咎于糟糕的实现。事实是这些应用程序不能处理它们所声称能够处理的数据。例如,Evernote总是只呈现一个空的发布对话框。有些应用程序,如Facebook的共享扩展程序,甚至在无法处理数据类型时记录错误(真的吗?)。 是否可能阻止所有第三方共享扩展程序? 如果答案是否定的,似乎我只有两个选择:
我想为我的用户提供最灵活的共享体验,但不以牺牲差劲的第三方实现为代价。
UIActivityViewController
和一些自定义的UIActivityProviders
,我的提供者返回NSString
、UIImage
和自定义数据对象。我通过设置 UIActivityViewController excludedActivityTypes
和苹果内置的活动类型来排除我不想分享的活动。我不喜欢的是在显示的
UIActivityViewController
中出现的应用程序不是内置活动类型。我假设这些应用程序已告知iOS 8可处理文本和图像数据。例如,Flickr、Evernote和Facebook的共享扩展程序就是这样的应用程序。这些活动有它们自己的活动URL类型,我不想硬编码。我不想让这些应用程序在我的活动共享中出现,因为大多数应用程序无法正常工作,最终会给我的用户带来不好的体验,并且可能会将我的应用程序归咎于糟糕的实现。事实是这些应用程序不能处理它们所声称能够处理的数据。例如,Evernote总是只呈现一个空的发布对话框。有些应用程序,如Facebook的共享扩展程序,甚至在无法处理数据类型时记录错误(真的吗?)。 是否可能阻止所有第三方共享扩展程序? 如果答案是否定的,似乎我只有两个选择:
- 只与苹果内置的活动和我的自定义活动共享
- 允许第三方扩展程序破坏传递
- 将所有内容都包装在一个自定义类中,这样扩展程序就无法识别。这会导致Facebook记录错误。
initWithPlaceholderItem:(id)placeholderItem
方法。我传回一个通用的NSString或UIImage,扩展程序称它们可以处理,但通常不会或在发布时记录错误。这将是检测共享扩展的可怕地方。我想为我的用户提供最灵活的共享体验,但不以牺牲差劲的第三方实现为代价。