您的位置:首页 > 其它

ipa使用企业账号重签名并支持推送

2015-04-07 22:30 513 查看
Apple对APP的严格管理,导致我们TM案子iOS app们如果在app store上上线面临很大的技术问题。和CP的协调以及商务上的折衷后,打算用企业签名的方案,为嵌入我们sdk的app们建立一个专门的下载渠道。

假设要重新签名的应用为iCPApp.ipa, bundleid为iCPApp,包名为cn.186.iCPApp。这个时候我们要用自己的企业账号为这个ipa重新进行一次签名,同时还要能够支持消息推送服务。如下步骤:

1. 在自己的企业账号里建立一个APP IDs,假设为com.cnc.iCPAppTMD





2. 创建一个Certificates,勾选Apple Push Notification service SSL, 然后选择刚才创建的APP IDs (com.cnc.iCPAppTMD)







3.创建一个Distribution Provisioning Profiles, 使用com.cnc.iCPAppTMD包名,这样这个distribution provisioning 才能够支持消息推送, 并下载,保存做iCPAppTMD.mobileprovision

接下来就是进行重新签名了,
1. 将ipa改名zip,并解压缩
#mv iCPApp.ipa iCPApp.zip
#unzip iCPApp.ipa

2. 删除_CodeSignature 文件
#rm -R Payload/iCPApp.app/_CodeSignature

3.用iCPAppTMD.mobileprovision覆盖embedded.mobileprovision
#cp iCPAppTMD.mobileprovision Payload/iCPApp.app/embedded.mobileprovision

4.编辑Entitlements.plist 文件,注意:一开始我也没有设置这个文件,签名可以,但是推送依然不成功。下面标记红色的地方可以cat iCPApp TMD.mobileprovision 文件得到。
<!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>XXXXXXXXXX.com.cnc.iCPAppTMD</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>XXXXXXXXXX.*</string>
</array>
</dict>
</plist>

5. 重新签名,下文标示红色为iCPAppTMD.mobileprovision对应的Certificates
/usr/bin/codesign -f -s "iPhone Distribution: XXXXX Science & Technology Co., Ltd." --entitlements Entitlements.plist --resource-rules Payload/iCPApp.app/ResourceRules.plist
Payload/iCPApp.app

Q&A:
1. 如果提示找不到resource file, 则可以从iPhoneOS SDK目录中拷贝ResourceRules.plist文件到iCPApp.app中

Ref:
http://www.cocoachina.com/bbs/read.php?tid-282106.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐