【问题标题】:How to make a Keyboard extension's name shorter (via info.plist keys)如何使键盘扩展名更短(通过 info.plist 键)
【发布时间】:2015-01-10 06:31:12
【问题描述】:

我正在为 iOS 8 开发键盘扩展。

一切正常,但是当我在设备上运行时,键盘的名称是“myBoard - mBoard”。我希望它只是“myBoard”。

我的扩展 info.plist 是:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-    1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Meboard</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>tapi.Meboard.$(PRODUCT_NAME:rfc1034identifier)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSApplicationCategoryType</key>
<string></string>
<key>LSHasLocalizedDisplayName</key>
<false/>
<key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>IsASCIICapable</key>
        <false/>
        <key>PrefersRightToLeft</key>
        <false/>
        <key>RequestsOpenAccess</key>
        <true/>
    </dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.keyboard-service</string>
    <key>NSExtensionPrincipalClass</key>
    <string>${PRODUCT_MODULE_NAME}.myBoard</string>
</dict>

请帮我解决这个问题。

【问题讨论】:

  • 如果您删除应用名称,那么用户将如何知道此键盘是哪个应用的扩展。我认为,如果您这样做,Apple 可能会出于安全目的拒绝您的应用。

标签: ios xcode info-plist ios-keyboard-extension


【解决方案1】:

在您的 Contaning 应用中,将 Bundle Display Name 设置为空,并在您的 Keyboard Extension 中将 Bundle Display Name 设置为“MyBoard”。

进行此更改后,它将显示“MyBoard -”

【讨论】:

  • 感谢您的快速响应,但 MyBoard 后面仍有字符“-”:-(.
【解决方案2】:

从 iOS 8.1 开始,这似乎并不总是可行的。我们已经尝试了多种显示键组合,虽然在某些情况下您似乎可以简单地显示为“myBoard”或任何您的键盘名称,但似乎不可能简单地显示为“myBoard”而不是“myBoard - myBoard” (或类似的东西)在所有情况下。

我们最终的设置如下:

CFBundleName:在容器应用程序和键盘扩展上都相同
CFBundleDisplayName:仅在键盘扩展上存在 CFBundleExecutable:与键盘扩展上的CFBundleDisplayName 相同,容器应用的普通${EXECUTABLE_NAME}

这是我们找到的最好的。如果我发现更好的东西,我会更新。

【讨论】:

  • 经过测试,它是正确的,我将 Bundle name: ${PRODUCT_NAME} 用于 App 和 App Extension。对于 Bundle 显示名称,请使用相同的名称(例如:“myApp”)。
【解决方案3】:

要获得您想要的内容,您应该在两个 info.plist 文件(应用程序和扩展程序)中将显示名称设置为完全相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多