从Xamarin.iOS迁移至.NET6:如何创建Share Extension项目?
基础项目创建步骤
- 在Xcode中打开已迁移完成的主应用项目
- 点击菜单栏的
File > New > Target - 在弹出窗口里选择
iOS > Application Extension > Share Extension,点击Next - 填写Extension名称、团队等信息,确保与主应用签名配置一致,最后点击
Finish
MonoTouch迁移关键提示
- 权限与配置对齐:原MonoTouch版本Share Extension用到的权限(如相册、网络访问),需在新Extension的
Info.plist中重新配置,主应用的Info.plist也要同步对应权限声明 - 数据共享配置:若主应用与Extension需共享数据,需开启App Groups:在主应用和Extension的target配置中,找到
Signing & Capabilities,添加App Groups并设置同一组ID;之后可通过UserDefaults(suiteName: "你的组ID")或文件共享方式传递数据 - 代码迁移要点:原MonoTouch的C#代码需转为Swift/Objective-C,重点关注
SLComposeServiceViewController的核心重写方法:isContentValid():校验分享内容合法性didSelectPost():处理分享提交逻辑configurationItems():配置Extension的自定义UI选项
- 测试注意事项:需在真机上测试,模拟器分享功能存在限制;可通过系统相册、Safari等应用触发分享,验证Extension的调用与数据传递是否正常
核心代码示例(Swift)
import Social import UIKit class ShareViewController: SLComposeServiceViewController { override func isContentValid() -> Bool { // 简单校验分享文本是否为空 return !(textView.text?.isEmpty ?? true) } override func didSelectPost() { guard let sharedText = textView.text else { dismiss(animated: true) return } // 通过App Groups将内容传递给主应用 if let defaults = UserDefaults(suiteName: "group.com.yourapp.share") { defaults.set(sharedText, forKey: "SharedText") defaults.synchronize() } dismiss(animated: true) } override func configurationItems() -> [Any]! { // 可添加自定义配置项(如开关、输入框),此处返回空数组 return [] } }
内容的提问来源于stack exchange,提问作者canderse
相关产品推荐
相关产品推荐

