我的应用未显示在共享表中

时间:2017-11-22 12:49:40

标签: swift share-extension ios11.1.1

我在我的应用程序中集成了共享扩展。这是我的分享扩展的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,那么apple将拒绝我的申请。所以我尝试添加其他激活规则,如下所述

<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共享扩展功能完美无缺。 任何人都可以帮我,我该怎么办? 我已经为音乐相关应用集成了扩展分享。

2 个答案:

答案 0 :(得分:2)

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

这完全正常!

答案 1 :(得分:1)

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

将其放回代码中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>