企业证书重签名发布APP(支持APNS)
2015-09-01 21:37
357 查看
针对内部企业或者内测用户,我们希望APP测试完成后能立即在小范围内测用户手中进行体验以及相关功能的验证以及反馈。
为了达到目的,一般我们会自己做一套内部发布系统,既然需要做内测发布,那么首先得有可以用的ipa包。并且保证功能不缺少。
苹果的开发者证书只能保证最多100个用户安装,并且还得提供udid,苹果提供的企业证书可以免去udid。但是当我们兴冲冲去申请了企业证书后,问题来了:
每个bundleid只能存在于一个账号,当需要推送APNS时,企业证书也得生成一个跟开发证书一样的bundleid,否则企业证书发布的版本要跟提交APPSTORE的版本不同bundleid,到时无法相互覆盖以及做兼容。
是否有办法使用相同的bundleid,又能使用推送功能呢?
方法是有的,那就是重签名。
重签名方法如下:
假如APPSTORE上的版本bundleid为:com.zalejiang.appstore
1、用企业证书 生成一个其他bundleid的能支持APNS推送的证书。bundleid不限。例如:com.zalejiang.inhouse
2、拿到提交APPSTORE的ipa包,解压:unzip
appstore.ipa
3、删除Payload/appstore.app/_CodeSignature
4、更换描述文件:cp inhouse.mobileprovision
Payload/appstore.app/embedded.mobileprovision
5、重签名:codesign -f -s "iPhone
Distribution: inhouse" --entitlements Entitlements.plist --resource-rules
Payload/appstore.app/ResourceRules.plist Payload/appstore.app
Entitlements.plist 是很重要的一个文件,具体格式见后文
6、压缩成ipa包:zip -r New_appstore.ipa
Payload
其中Entitlements.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>JDL5JS4SKC.com.zalejiang.inhouse</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>JDL5JS4SKC.*</string>
</array>
</dict>
</plist>
标红的地方要跟使用的inhouse.mobileprovision文件里面的信息一致。
压缩后安装的包直接用com.zalejiang.appstore的消息推送证书即可收到消息。
?
为了达到目的,一般我们会自己做一套内部发布系统,既然需要做内测发布,那么首先得有可以用的ipa包。并且保证功能不缺少。
苹果的开发者证书只能保证最多100个用户安装,并且还得提供udid,苹果提供的企业证书可以免去udid。但是当我们兴冲冲去申请了企业证书后,问题来了:
每个bundleid只能存在于一个账号,当需要推送APNS时,企业证书也得生成一个跟开发证书一样的bundleid,否则企业证书发布的版本要跟提交APPSTORE的版本不同bundleid,到时无法相互覆盖以及做兼容。
是否有办法使用相同的bundleid,又能使用推送功能呢?
方法是有的,那就是重签名。
重签名方法如下:
假如APPSTORE上的版本bundleid为:com.zalejiang.appstore
1、用企业证书 生成一个其他bundleid的能支持APNS推送的证书。bundleid不限。例如:com.zalejiang.inhouse
2、拿到提交APPSTORE的ipa包,解压:unzip
appstore.ipa
3、删除Payload/appstore.app/_CodeSignature
4、更换描述文件:cp inhouse.mobileprovision
Payload/appstore.app/embedded.mobileprovision
5、重签名:codesign -f -s "iPhone
Distribution: inhouse" --entitlements Entitlements.plist --resource-rules
Payload/appstore.app/ResourceRules.plist Payload/appstore.app
Entitlements.plist 是很重要的一个文件,具体格式见后文
6、压缩成ipa包:zip -r New_appstore.ipa
Payload
其中Entitlements.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>JDL5JS4SKC.com.zalejiang.inhouse</string>
<key>aps-environment</key>
<string>production</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>JDL5JS4SKC.*</string>
</array>
</dict>
</plist>
标红的地方要跟使用的inhouse.mobileprovision文件里面的信息一致。
压缩后安装的包直接用com.zalejiang.appstore的消息推送证书即可收到消息。
?
相关文章推荐
- Android ListView错位问题之背景色错位
- ios开发之-从服务器下载文件
- Android “fragment” 替换 “Tabhost”技术
- Swift1
- Objective-C 【autorelease基本使用】
- android CountDownTimer 倒计时
- Objective-C 【autorelease基本使用】
- iOS多线程
- android:SQLite--触发器详解
- Android问题集(三)——禁止进入新Activity界面后因Edittext而弹出输入法;禁止横屏效果
- Android之Adapter用法总结
- ios 的 工程内的多Targets有什么用
- stream_register_wrapper 注册一个用 PHP 类实现的 URL 封装协议 允许用户实现自定义的协议处理器和流
- Android项目开发实战:倒计时
- 关于ormapping
- Android Emulator 不能运行cocos2dx的解决方案
- Android通用生命周期
- zTouch-移动端触屏开发利器(zepto touch扩展)
- Android基础入门教程——6.1 数据存储与访问之——文件存储读写
- Android问题集(二)——TextView在点击时显示不同颜色,Button点击效果