You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Xamarin.iOS迁移至.NET6:如何创建Share Extension项目?

生成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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:02:07