2

我在我的应用程序中集成了共享扩展。这是我用于共享扩展的 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 共享扩展工作得非常好。谁能帮我在这里做什么?我为音乐相关的应用程序集成了共享扩展。

4

2 回答 2

7

我的 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>

这工作得很好!

于 2017-11-22T13:35:33.340 回答
2

您必须将新产品包装keysNSExtensionActivationSupportsWebURLWithMaxCount 标签内dictionary

把它放回你的代码中: , NSExtensionActivationRule,这个键需要引用新键的字典。

我不为 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> 
于 2017-11-22T13:57:20.650 回答