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

iOS端Google Drive「Send a copy」不显示应用扩展的激活规则咨询

解决Google Drive「Send a copy」中应用扩展不显示的问题

这问题我之前帮开发者排查过不少,核心原因是Google Drive的「Send a copy」流程传递文件的方式和Photos、Files、Safari略有差异,导致你现有激活规则没命中。下面给你几个针对性的调整方向:

1. 细化UTI匹配规则,覆盖Google Drive的文件类型传递

Google Drive在分享文件时,可能会传递更具体的UTI(而非你配置的通用UTI),比如:

  • 音频文件可能用public.mp3、com.apple.coreaudio-format而非宽泛的public.audio
  • 视频文件可能用public.mpeg-4、com.apple.quicktime-movie而非public.movie
  • PDF文件确保包含com.adobe.pdf

建议把这些具体UTI加入规则,或者更稳妥的是用UTI的「继承匹配」——比如在谓词里用UTI-CONFORMS-TO来匹配所有符合父类UTI的子类。

2. 改用谓词格式的激活规则(更灵活)

相比简单的UTI数组,谓词规则能更精准匹配复杂场景。把你的NSExtensionActivationRule替换成下面的谓词字符串(可根据你的文件类型调整):

<key>NSExtensionActivationRule</key>
<string>SUBQUERY (
    extensionItems, $extensionItem,
    SUBQUERY (
        $extensionItem.attachments, $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio" OR
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie" OR
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
    ).@count >= 1
).@count >= 1</string>

这个规则会检查每个扩展项里至少有一个附件是音频、视频或PDF类型,不管具体子UTI是什么,只要符合父类UTI就会触发。

3. 添加文件大小限制配置

Google Drive的文件可能比你默认配置的大小限制更大,导致扩展被过滤。在Info.plist里添加:

<key>NSExtensionActivationSupportsFileWithMaxSize</key>
<integer>104857600</integer> <!-- 100MB,按需调整单位为字节 -->

如果你的扩展支持更大文件,直接调高数值即可。

4. 确保支持public.file-url类型

有些APP(包括Google Drive)在分享时会传递文件URL而非直接的文件数据,所以你的规则需要支持public.file-url这个UTI。可以在谓词里补充:

ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.file-url"

这样即使是通过URL传递的文件,你的扩展也能被触发。

5. 调试验证传递的参数

如果还是不行,建议在Xcode里调试扩展的beginRequestWithExtensionContext:方法,打印extensionContext.extensionItems的详细信息,看看Google Drive传递的附件UTI、类型是什么,再针对性调整规则。比如:

- (void)beginRequestWithExtensionContext:(NSExtensionContext *)context {
    for (NSExtensionItem *item in context.extensionItems) {
        for (NSItemProvider *provider in item.attachments) {
            NSLog(@"Registered UTIs: %@", provider.registeredTypeIdentifiers);
        }
    }
    // 其他逻辑...
}

按照上面的步骤调整后,你的扩展应该就能在Google Drive的「Send a copy」里正常显示了。

内容的提问来源于stack exchange,提问作者user516542

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:49:18