无需Extension,能否在UIActivityViewController中显示自身App并跳转?
嘿,我来帮你把这两个问题的答案理清楚哈~
1. 不用Extension,能不能让自己的App出现在其他App的UIActivityViewController里?
答案是不行的。UIActivityViewController里的第三方应用选项,本质上是靠系统识别的「分享扩展(Share Extension)」或「操作扩展(Action Extension)」来展示的。系统不会自动把你的主App加到这个列表里——毕竟主App是独立的进程,而UIActivityViewController的选项是给扩展准备的入口。
你提到的那篇Stack Overflow帖子用Extension是标准方案,这也是苹果官方推荐的方式。要是想让你的App出现在其他App的分享菜单里,必须创建对应的Extension Target,在Info.plist里配置好NSExtension相关参数(比如指定支持的内容类型、扩展类别),这样系统才会把它纳入UIActivityViewController的选项中。
2. 点击UIActivityViewController中的其他App时,能不能跳转至该App?
这个是可以的,不过要分几种情况来看:
- 如果是系统自带的活动(比如短信、邮件),点击后系统会直接打开对应的系统App,或者唤起相应的功能界面。
- 如果是第三方App的扩展选项,点击后首先会启动该App的Extension进程处理分享内容。处理完成后,你可以在Extension里通过
openURL(_:options:completionHandler:)方法跳转——不过得先在Extension的Info.plist里配置NSExtensionActivationRule,申请com.apple.security.network.client权限,同时目标App要配置好对应的URL Scheme才行。 - 另外,要是你是在自己的App里展示UIActivityViewController,想跳过扩展直接跳转其他App,那可以自定义UIActivity:在自定义活动的处理方法里,直接调用
UIApplication.shared.open(_:options:completionHandler:)跳转目标App,前提是你知道对方的URL Scheme。
内容的提问来源于stack exchange,提问作者V D Purohit
相关产品推荐
相关产品推荐

