Xamarin iOS 权利未发布

Posted

技术标签:

【中文标题】Xamarin iOS 权利未发布【英文标题】:Xamarin iOS entitlements not published 【发布时间】:2020-04-27 10:26:48 【问题描述】:

在 Xamarin ios 中,当我修改 Entitlements.plist 并启用 Associated Domains 或 NFC,然后使用临时配置文件存档时,生成的 .ipa 文件不包含权利。

我用这个:

codesign -d --entitlements :- "MyApp.iOS.app"

检查 .ipa。

权利.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>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:XY.com</string>
    </array>
    <key>com.apple.developer.nfc.readersession.formats</key>
    <array>
        <string>NDEF</string>
        <string>TAG</string>
    </array>
</dict>
</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>application-identifier</key>
    <string>AAAAAAA.com.XY</string>
    <key>get-task-allow</key>
    <false/>
    <key>com.apple.developer.team-identifier</key>
    <string>AAAAAAA</string>
    <key>keychain-access-groups</key>
    <array>
        <string>AAAAAAA.com.XY</string>
    </array>
</dict>
</plist>

为什么 .ipa 中没有权利?

编辑:我刚刚发现我没有在 Visual Studio 的 iOS 捆绑签名页面上填写自定义权利。这可能是问题所在。

【问题讨论】:

【参考方案1】:

我认为您应该指定自定义 entitlement.plist 的路径。

codesign --entitlements /path/to/entitlements.plist -s <identity> <code-path>

检查https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Procedures/Procedures.html

搜索关键词Entitlements

【讨论】:

我刚刚发现我没有在 Visual Studio 的 iOS 捆绑签名页面上填写自定义权利。这可能是问题所在。 我填了,还是有问题!【参考方案2】:

仅填写 Entitlements.plist 是不够的。您还必须在 iOS Bundle Signing 页面上分配它 -> 自定义权利。

在我这样做之后,codesign 显示正确的输出(这次我移除了 NFC)

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>AAAAAAA.com.XY</string>
    <key>get-task-allow</key>
    <false/>
    <key>com.apple.developer.team-identifier</key>
    <string>AAAAAAAA</string>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:XY.com</string>
    </array>
</dict>
</plist>

【讨论】:

嗨,你能更明确地说明你必须在哪里分配它吗?我在 Visual Studio Mac 中找不到任何“iOS Bundle 签名页面”。 我用的是Windows,会是这个原因吗?

以上是关于Xamarin iOS 权利未发布的主要内容,如果未能解决你的问题,请参考以下文章

未调用 ItemSelected - Xamarin.iOS F#

Xamarin.Forms IOS 断点未命中

Xamarin.iOS 应用程序未运行时未处理 Amazon SNS 推送通知

Xamarin.iOS SKProductRequest 事件未在 Debug 中调用(在 iOS 15 和 xCode 13 之前工作)

单击未调用的 UICollectionViewCell 中的特定元素(而不是从 Source 触发的 ItemSelected)Xamarin.ios

尝试放置 AdMob 后未找到 Xamarin.iOS Runtime.cs