多目标 iOS 应用程序权利中的钥匙串访问组

Keychain Access Groups in entitlements for multi target iOS apps

我有一个 iOS 应用程序项目,其中包含 2 个独立的 target。例如目标 A 和目标 B。现在在 xCode8 中,当我将 keychain sharing 设为 ON 时,Xcode 会生成两个 A.entitlementsB.entitlements 文件。出乎意料的是它们都具有这样的相同值:

<plist version="1.0">
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)target1.bundle.identifier</string>
    </array>
</dict>
</plist>

我的意思是在两个文件中都使用了我第一个目标的 bundle identifier;当我手动尝试更改其中一个的值时,另一个也会更改。

如您所知,Xcode 不会对应用程序进行签名,而 keychain-access-groups 中的值与您用于签名的配置文件的捆绑包标识符完全匹配。

所以我想知道我们如何才能为两个独立目标的两个独立权利文件提供两个独立的值?

我终于在我的权利中使用以下代码解决了这个问题:

<plist version="1.0">
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(PRODUCT_BUNDLE_IDENTIFIER)</string>
    </array>
</dict>
</plist>