iOS ShareExtension点击Suggestion建议后extensionContext的intent为nil问题咨询
排查解决步骤
- 第一步:补全ShareExtension的Info.plist配置
你当前的配置缺少关键的意图支持声明,需要在NSExtension字段下的NSExtensionAttributes中添加IntentsSupported数组,数组中添加字符串类型元素INSendMessageIntent,明确告知系统该扩展支持处理你捐赠的发送消息意图。
同时要确保主应用和ShareExtension两个target都开启了「Intents」能力,若用到跨target数据共享还要配置相同的App Group。 - 第二步:调整intent读取的时机
不要在viewDidLoad中读取extensionContext.intent,此时扩展上下文还未完成初始化,参数还未完成注入。正确的做法是重写扩展的beginRequest(with:)方法,该方法是扩展收到系统请求时最先触发的生命周期回调,此时可以拿到完整的intent参数:override func beginRequest(with context: NSExtensionContext) { super.beginRequest(with: context) guard let intent = context.intent as? INSendMessageIntent else { return } let conversationIdentifier = intent.conversationIdentifier self.recipient = recipient(identifier: conversationIdentifier!) } - 第三步:修复扩展无法捐赠intent的问题
扩展无法正常捐赠intent通常是两个原因:- 扩展没有开启「Intents」能力,权限不足无法执行捐赠操作
- 捐赠的intent参数不完整,你当前的
serviceName设为nil,建议填入你应用唯一的服务标识,保证系统可以正确关联intent和你的应用/扩展
- 第四步:清理验证
删除设备上的旧应用,清理Xcode缓存后重新安装,捐赠intent后点击建议,在beginRequest方法中打断点确认intent是否被正确传递。
内容的提问来源于stack exchange,提问作者alionthego
相关产品推荐
相关产品推荐

