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

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



猜你喜欢

转载自blog.csdn.net/wadahana/article/details/44926799