iOS UIActivity Sharing
iOS UIActivity Sharing
UIActivity Sharing Simplified
从iOS 6开始,第三方应用程序可以使用AirDrop等机制共享文本、URL或图像等数据,如苹果的应用间通信指南中所述。此功能通过系统范围的_共享活动表_实现,用户与“分享”按钮交互时会出现该表。
可以在UIActivity.ActivityType中找到所有内置共享选项的详尽枚举。开发人员可以选择排除特定的共享选项,如果认为这些选项不适合其应用程序。
如何共享数据
应注意以下内容:
要共享的数据的性质。
包括自定义活动。
排除某些活动类型。
通过实例化UIActivityViewController
来实现共享,将要共享的项目传递给它。这可以通过调用实现:
开发人员应该仔细审查UIActivityViewController
的初始化活动和自定义活动,以及任何指定的excludedActivityTypes
。
如何接收数据
在接收数据时,以下几个方面至关重要:
自定义文档类型的声明。
指定应用程序可以打开的文档类型。
验证接收数据的完整性。
即使没有访问源代码,也可以检查Info.plist
中的键,如UTExportedTypeDeclarations
,UTImportedTypeDeclarations
和CFBundleDocumentTypes
,以了解应用程序可以处理和声明的文档类型。
关于这些键的简明指南可在Stackoverflow上找到,强调了定义和导入UTIs以供系统广泛识别,并将文档类型与您的应用程序关联以在“打开方式”对话框中集成的重要性。
动态测试方法
要测试发送活动,可以:
钩入
init(activityItems:applicationActivities:)
方法以捕获正在共享的项目和活动。通过拦截
excludedActivityTypes
属性来识别排除的活动。
对于接收项目,涉及:
从其他来源(例如AirDrop,电子邮件)与应用程序共享文件,以触发“打开方式...”对话框。
钩入
application:openURL:options:
等在静态分析期间识别的其他方法,以观察应用程序的响应。使用格式错误的文件或模糊技术来评估应用程序的健壮性。
参考资料
最后更新于