美文网首页
App 企业分发

App 企业分发

作者: 小凡凡520 | 来源:发表于2020-02-17 20:35 被阅读0次
一、概念
  • ipa文件
    ipa文件就是iOS应用的安装包文件,扩展名为.ipa

  • 证书
    对于一个未上线App Store的应用,一般来说,开发者如果需要将应用安装到某些用户的设备上,就需要将应用导出为这些设备可以直接安装的安装包(.ipa文件),安装包能否正确导出,是决定了应用能否被正确安装到设备上的关键因素。其中,最关键的一个因素是,导出安装包时,应用所使用的证书(即:签名方式)。
    开发者可以选择如下两种方式的签名方式,来导出应用安装包

    Ad-hoc方式
    In-house方式
    

    其中,具体使用哪种方式,取决于开发者拥有的苹果开发者账号的类型。例如,如果开发者拥有的是苹果开发者个人开发者账号(我就是),则可以使用Ad-hoc方式;如果拥有的是苹果企业开发者账号,则可以使用In-house方式。关于苹果开发者账号支持的证书类型,如下图


    1853063-314367b3aaaa7b9d.png.jpeg

    到目前为止,苹果为iOS应用共提供了三种类型的证书签名方式,每一种都有独特的用途。这三种分别是:

    Ad-hoc
    In-house
    App-Store
    
1853063-ae5cbcad29182bc9.png.jpeg
  • UDID和Ad-hoc
    如果iOS设备要安装以Ad-hoc方式打包iOS应用时,必须将该设备的UDID加入打包应用时的证书文件(.mobileprovision文件),才可以在该设备上正常安装。
  • 开发者账号分类
类型 特点 费用
个人账号 个人开发者用,App需要上传至App Store,只能有一个开发者,测试设备数量上限100,申请不需要邓白氏码 $99
公司账号 公司或团队用,App需要上传至App Store,可以有多个开发者,测试设备数量上限100,申请需要邓白氏码 $99
企业账号 企业内部应用发布,App不需要上传至App Store,可以有多个开发者,测试设备数量没有限制,申请需要邓白氏码 $299
教育账号 教育机构专用,需要苹果审批,不可以发布到App Store 免费
  • 测试机个数达到上限
Q:删除已有设备重新添加可以吗?
A:没用!
Q:能找苹果申请增加名额吗?
A:非常非常难。
Q:可以重置现在的设备数,重新添加吗?
A:每年只要一次机会。
二、OTA

iOS4新加的一项技术,可以让开发者脱离AppStore,从指定的服务器下载安装应用。

https://itms-services://?action=download-manifest&url=https://192.168.1.xxx/manifest.plist 开头的链接,Safari会自动去读取manifest.plist中的信息,进行下载,安装等操作。

三、准备工作
  • 三种开发者账号
    • 个人账号:99$/appstore上架/设备上限100
    • 公司账号:99$/appstore上架/设备上限100
    • 企业账号:299$ /不能appstore上架/不限制设备
  • 打包模式
    • App Store Deployment:需要添加UUID/上架appstore
    • Ad Hoc Deployment:需要添加UUID/内部测试/distribution证书
    • Enterprise Deployment:不需要添加UUID/企业内部应用/企业证书
    • Development Deployment:需要添加UUID/开发调试/developer证书
  • ipa包
    • 如果只是方便内部测试的分发,用个人/公司账号/发布到Ad Hoc Deployment/Development Deployment打出来的ipa

    • 如果是企业内部应用/绕开苹果审核而发布的应用,就必须用企业账号/发布到Enterprise Deployment打出来的ipa

四、实现

在本机搭建https服务器的企业账号签名的应用分发

  • ipa包

    • 申请企业账号
    • 发布到Enterprise Deployment打包
  • 搭建本机服务器

    • Mac OS X自带Apache服务,其站点默认根目录是/Library/WebServer/Documents/
    • 启动Apache
      • sudo apachectl start
    • 测试Apache
      • safari输入http://127.0.0.1/,如果出现It Works!,则成功启动
  • 开启https服务

    • 生成ssl证书
      • 进入相应文件夹: cd /etc/apache2/
      • 生成私钥: sudo openssl genrsa -des3 -out app.key 1024
      • 生成签署申请: sudo openssl req -new -key app.key -out app.csr
      • 生成服务器私钥: sudo openssl rsa -in app.key -out server.key
      • 生成给网站服务器签署的证书: sudo openssl req -new -x509 -days 3650 -key server.key -out server.crt
    skylinedeMacBook-Air:apache2 skyline$ cd /etc/apache2/
    skylinedeMacBook-Air:apache2 skyline$ sudo openssl genrsa -des3 -out app.key 1024
    Generating RSA private key, 1024 bit long  modulus
    ..........++++++
    ...............++++++
    e is 65537 (0x10001)
    Enter pass phrase for app.key://输入密码
    Verifying - Enter pass phrase for app.key://验证密码
    skylinedeMacBook-Air:apache2 skyline$ sudo     openssl req -new -key app.key -out app.csr
    Enter pass phrase for app.key://输入密码(同上)
    You are about to be asked to enter information that   will be incorporated
    into your certificate request.
    What you are about to enter is what is called a  Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) []:CN//中国简称CN
    State or Province Name (full name) []:GD//省
    Locality Name (eg, city) []:SZ//市
    Organization Name (eg, company) []:company//组织/公司
    Organizational Unit Name (eg, section)   []:company.ltd//组织
    Common Name (eg, fully qualified host name)   []:192.168.1.1xx//本机IP
    Email Address []:xxxxxxxx@qq.com//邮箱
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:123456
    skylinedeMacBook-Air:apache2 skyline$ sudo   openssl rsa -in app.key -out server.key
    Enter pass phrase for app.key:
    writing RSA key
    skylinedeMacBook-Air:apache2 skyline$ sudo  openssl req -new -x509 -days 3650 -key server.key - out server.crt
    You are about to be asked to enter information  that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a    Distinguished Name or a DN.
    There are quite a few fields but you can leave  some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) []:CN//国家
    State or Province Name (full name) []:GD//省
    Locality Name (eg, city) []:SZ//市
    Organization Name (eg, company) []:company//组织
    Organizational Unit Name (eg, section)      []:company.lct组织
    Common Name (eg, fully qualified host name)  []:192.168.1.1xx//本机IP
    Email Address []:xxxxxxxx@qq.com//邮箱
    skylinedeMacBook-Air:apache2 skyline$ sudo   apachectl configtest
    Syntax OK
    skylinedeMacBook-Air:apache2 skyline$ sudo   apachectl
    
  • 开启ssl功能

    • 文本打开/etc/apache2/httpd.conf,去掉下面五行的#(/etc/apache2/xxx等同于/private/etc/apache2/xxx)
    #LoadModule ssl_module libexec/apache2/mod_ssl.so
    #Include /etc/apache2/extra/httpd-ssl.conf
    #Include /etc/apache2/extra/httpd-vhosts.conf
    #LoadModule socache_shmcb_module  libexec/apache2/mod_socache_shmcb.so
    #ServerName www.example.com:80
    
    • 文本打开/etc/apache2/extra/httpd-ssl.conf,去掉下面两行的#(server.crt/server.key的路径可能不在httpd-ssl.conf默认的路径/etc/apache2/ssl/下,要么修改默认路径,要么server.crt/server.key拷贝到默认路径下)
    #SSLCertificateFile "/etc/apache2/server.crt"
    #SSLCertificateKeyFile "/etc/apache2/server.key
    
    • 文本打开/etc/apache2/extra/httpd-vhosts.conf,在末尾添加
  • 编辑manifest.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>items</key>
    <array>
     <dict>
         <key>assets</key>
         <array>
             <dict>
                 <key>kind</key>
                 <string>software-package</string>
                 <key>url</key>
                 <string>https://192.168.1.xxx/tlsc.ipa</string>
             </dict>
             <dict>
                 <key>kind</key>
                 <string>display-image</string>
                 <key>url</key>
                 <string>https://192.168.1.xxx/AppIcon57x57.png</string>
             </dict>
             <dict>
                 <key>kind</key>
                 <string>full-size-image</string>
                 <key>url</key>
                 <string>https://192.168.1.xxx/AppIcon512x512.png</string>
             </dict>
          </array>
     <key>metadata</key>
         <dict>
             <key>bundle-identifier</key>
             <string>com.tlsc.shacheng</string>
             <key>bundle-version</key>
             <string>1.1.1</string>
             <key>kind</key>
             <string>software</string>
             <key>releaseNotes</key>
             <string>1.1.1版本发布</string>
             <key>title</key>
             <string>应用分发测试app</string>
         </dict>
      </dict>
    </array>
     </dict>
    </plist>
    
  • 站点根目录/Library/WebServer/Documents需要的文件

    • ipa包
    • manifest.plist
    • 57x57 / 512x512的logo
    • 前面生成的app.key/app.csr
    • server.crt
    • index.html,模版如下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://      www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <title>本机https服务应用分发</title>
        </head>
        <body>
          <h1 style="font-size:40pt">应用分发<h1/>
                  <h1 style="font-size:40pt">
                  <a title="iPhone" href="https://192.168.1.100/server.crt">ssl证书安装.      </a>
                  <h1/>
         
                  <h1 style="font-size:40pt">
                  <a href="itms-services://?action=download-manifest&url=https://192.168.1.100/manifest.plist">安装App</a>
                  <h1/>
                  <h1/>
         </body>
    </html>
    

相关文章

网友评论

      本文标题:App 企业分发

      本文链接:https://www.haomeiwen.com/subject/vzvbfhtx.html