ios - 我如何对 iOS .xcarchive 进行代码签名,以便客户端可以正确辞职? (使用推送通知)

标签 ios xcode apple-push-notifications code-signing

我需要使用开发人员配置文件创建一个 iOS .xarchive 文件,客户可以使用他们的分发配置文件退出。

(我读过这个但是没有任何真正的解决方案:How can I send iOS app to client, for them to code-sign)

客户不想分享他们的私钥,也不想在成员(member)中心的“开发者”上方给我访问权限。而且我们不想共享我们的源代码。

我们需要支持推送通知,所以这意味着我们需要一个完全合格的应用程序 ID。

我想不出一种方法来构建和导出使用“aps production”、“get-task-allow”签名的 .xarchive 为 false,但还使用与客户端分发证书匹配的证书。

这感觉像是 Xcode 中的错误,难道不应该将“aps production”和“get-task-allow”的更改与配置相关联,而不是与供应配置文件的类型相关联吗?我正在使用“发布”,但使用的是我的开发者资料。

我是不是遗漏了什么,或者这是不可能的?

最佳答案

我通过反复试验找到了这个问题的答案。尽管技术说明和大多数 Web 资源都说如果您使用的是 XCode4+,则不需要 entitlements.plist,但在某些情况下您确实需要。我上面的问题代表了两种情况:

  • 构建发布配置(即:存档),但使用开发人员配置文件签名
  • 使用推送通知

我最终的自定义 entitlements.plist 有 3 个值:

<?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>get-task-allow</key>
    <false/>
    <key>aps-environment</key>
    <string>production</string>
    <key>keychain-access-groups</key>
    <array>
        <string>L23874DF.com.your.appid</string>
    </array>
</dict>
</plist>

在我的 entitlements.plist 中拥有它后,我使用此应用程序 ID 的开发人员配置文件进行构建。然后我存档了,并从组织者那里导出了文件。导出后,我将其发送给我的客户。客户端能够使用临时配置文件重新注册存档,并向我发送一个 IPA 文件,我将其加载到我的设备上。我也成功收到了 Urban Airship 给这个 IPA 的推送通知!

关于ios - 我如何对 iOS .xcarchive 进行代码签名,以便客户端可以正确辞职? (使用推送通知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9708090/

相关文章:

ios - UIDocumentPickerViewController:从 Dropbox 打开文件夹

objective-c - 在 UIWebView 上请求 http ://mobile. twitter.com

xcode - (Swift) 条件绑定(bind)的初始化程序必须具有可选类型,而不是 'AVAudioInputNode'

iphone - 多个服务器使用相同的 SSL 证书连接到 APNS

iphone - 在CGMutablePath中绘制UIImage

php - 在 iOS 上通过 ASIFormDataRequest 发送视频时出现部分上传错误

ios - 在 ScrollView Swift 中忽略 Superview 的尾随空间

swift - 复制捆绑资源构建阶段无法处理 Xcode 生成的 CoreData 文件

PHP 循环操作

ios - apns http2 api 在卸载应用程序后不返回状态 410