我的应用没有出现在分享 Sheet 中

My app is not showing up in Share Sheet

我在我的应用程序中集成了共享扩展。这是我的共享扩展 plist 文件。

<key>NSExtension</key>
    <dict>
        <key>NSExtensionAttributes</key>
        <dict>
            <key>NSExtensionActivationRule</key>
            <string>TRUEPREDICATE</string>
        </dict>
        <key>NSExtensionMainStoryboard</key>
        <string>MainInterface</string>
        <key>NSExtensionPointIdentifier</key>
        <string>com.apple.share-services</string>
    </dict>

我在 Xcode 中收到警告,如果我使用 Truepredicate,苹果将拒绝我的申请。所以我尝试添加下面提到的其他激活规则

<key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationSupportsImageWithMaxCount</key>
        <integer>1</integer>
        <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
        <integer>1</integer>
    </dict>
    <key>NSExtensionMainStoryboard</key>
    <string>MainInterface</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.share-services</string>
    </dict>

但是,如果我删除 Truepredicate 并添加以上规则,我的共享扩展将不再显示。使用 truepredicate 共享扩展工作得很好。 谁能帮我在这里做什么? 我为音乐相关应用程序集成了共享扩展。

我的 Plist 文件中有错误,这就是为什么会遇到这样的问题。

发布这个答案只是因为将来可能有人会犯这样的错误所以我的答案可以提供帮助!

<key>NSExtension</key>
    <dict>
        <key>NSExtensionAttributes</key>
        <dict>
            <key>NSExtensionActivationRule</key>
            <dict>
                <key>NSExtensionActivationSupportsText</key>
                <true/>
                <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
                <integer>1</integer>
                <key>NSExtensionActivationSupportsImageWithMaxCount</key>
                <integer>1</integer>
            </dict>
        </dict>
        <key>NSExtensionMainStoryboard</key>
        <string>MainInterface</string>
        <key>NSExtensionPointIdentifier</key>
        <string>com.apple.share-services</string>
    </dict>

一切正常!

你必须包装你的新 keys 例如 NSExtensionActivationSupportsWebURLWithMaxCountdictionary 标签内。

将此放回您的代码中:NSExtensionActivationRule,这个key需要引用新key的字典

我不为 ios 编写应用程序,所以我不确定为什么 <string>TRUEPREDICATE</string> 是默认值。我只知道它允许隐式传递所有数据类型。数据类型必须明确如下所示。

示例:

<key>NSExtensionActivationRule</key>
    <dict>
        <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
        <integer>1</integer>
        <key>NSExtensionActivationSupportsImageWithMaxCount</key>
        <integer>1</integer>
        <key>NSExtensionActivationSupportsFileWithMaxCount</key>
        <integer>0</integer>              
        <key>NSExtensionActivationSupportsMovieWithMaxCount</key>
        <integer>0</integer>            
        <key>NSExtensionActivationSupportsText</key>
        <false/>
    </dict>
    <key>NSExtensionPointName</key>
    <string>com.apple.ui-services</string>
    <key>NSExtensionPointVersion</key>
    <string>1.0</string>
    </dict>
    <key>NSExtensionMainStoryboard</key>
    <string>MainInterface</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.ui-services</string>