文档章节

以无线方式安装企业内部应用(apple官网)

哈特中尉
 哈特中尉
发布于 2016/01/28 22:24
字数 2446
阅读 212
收藏 0

原文地址:http://help.apple.com/deployment/ios/#/apda0e3426d7

说明:转载至apple官网,红色部分未注意部分。

iOS 支持以无线方式安装自定的企业内部应用,而无需使用 iTunes 或 App Store。应用的格式必须为 .ipa,并且使用企业内部预置描述文件进行构建。无线安装要求:

  • XML 清单文件(本节已有描述)

  • 可让设备访问 Apple iTunes 服务器的网络配置

  • 对于 iOS 7.1 或更高版本,使用 HTTPS

为了安装应用,用户使用特殊的 URL 前缀从您的网站上下载清单文件。您可以通过短信或电子邮件分发用于下载清单文件的 URL,或将其嵌入创建的另一企业应用中。

您负责设计和托管用于分发应用的网站。请确定用户已通过认证(可能是使用基本认证或基于目录的认证),并确定网站可通过内联网或互联网进行访问。您可以将应用和清单文件放入隐藏目录或任何可使用 HTTPS 读取的位置。

【注】创建自助服务门户时,请考虑在用户的主屏幕中添加一个 Web Clip,以便他们可以轻松返回门户以获取更多信息,如新的配置描述文件、推荐的 App Store 应用以及允许他们在 MDM 解决方案中进行注册。

准备以无线方式分发的企业内部应用

为准备以无线方式分发的企业内部应用,请构建归档版本(.ipa 文件)和用于启用无线分发和应用安装的清单文件。

使用 Xcode 来创建应用归档。使用分发证书给应用签名,并在归档中包括企业内部预置描述文件。有关构建和归档应用的更多信息,请访问 iOS Dev Center 网站(iOS 开发者中心),或参阅 Xcode“Help”(帮助)菜单中可用的《Xcode User Guide》(Xcode 使用手册)。

关于无线清单文件

清单文件是一个 XML plist 文件,可供 Apple 设备用来从您的 Web 服务器上查找、下载和安装应用。清单文件由 Xcode 创建,使用的是您在共享用于企业分发的归档应用时所提供的信息。

以下栏是必填项:

  • URL:应用 (.ipa) 文件的完全限定 HTTPS URL

  • display-image:57 x 57 像素的 PNG 图像,在下载和安装过程中显示。指定图像的完全限定 URL

  • full-size-image:512 x 512 像素的 PNG 图像,表示 iTunes 中相应的应用

  • bundle-identifier:应用的包标识符,与 Xcode 项目中指定的完全一样

  • bundle-version:应用的包版本,在 Xcode 项目中指定

  • title:下载和安装过程中显示的应用的名称

样本清单文件还包含可选键。例如,如果应用文件太大,并且想要在执行错误检验(TCP 通信通常会执行该检验)的基础上确保下载的完整性,可以使用 MD5 键。

通过指定项目数组的附加成员,您可以使用一个清单文件安装多个应用。

构建网站

将这些项目上传到网站上可供已认证的用户访问的区域:

  • 应用 (.ipa) 文件

  • 清单 (.plist) 文件

您的网站可以是链接到清单文件的单个页面。用户轻点 Web 链接后会下载清单文件,并触发下载和安装。

以下是示例链接:

<a href="itms-services://?action=download-manifest&url=https://example.com/manifest.plist">Install App</a>

请勿添加归档应用 (.ipa) 的网站链接。载入清单文件时,设备会下载该 .ipa 文件。虽然 URL 的协议部分是“itms-services”,但 iTunes Store 并不参与此过程。

此外,请确定 .ipa 文件可通过 HTTPS 进行访问,并且您的站点已使用 iOS 信任的证书进行了签名。如果自签名证书没有受信任的锚点并且无法由 iOS 设备验证,安装会失败。

设定服务器 MIME 类型

您可能需要配置 Web 服务器,让清单文件和应用文件可正确传输。

对于 OS X Server,请将 MIME 类型添加到 Web 服务的 MIME 类型设置:

  • application/octet-stream ipa

  • text/xml plist

对于微软的互联网信息服务器 (IIS),请使用 IIS Manager 在服务器的“属性”页面中添加 MIME 类型:

  • .ipa application/octet-stream

  • .plist text/xml

无线 iOS 应用分发故障诊断

如果无线应用分发失败,并显示“无法下载”信息:

  • 请确定应用已正确进行签名。测试方法是使用 Apple Configurator 2 将它安装到设备上,然后查看是否发生错误。

  • 请确定清单文件的链接是否正确,清单文件是否可供网络用户访问。

  • 请确定 .ipa 文件(在清单文件中)的 URL 是否正确,并且该 .ipa 文件是否可供网络用户通过 HTTPS 访问。

网络配置要求

如果设备连接到封闭式内部网络,那么您必须允许它访问以下站点:

  • ax.init.itunes.apple.com:使用蜂窝移动网络下载应用时,设备会限制其当前文件大小。如果无法访问此站点,安装可能会失败。

  • ocsp.apple.com:设备会联系此网站,检查用来给预置描述文件签名的分发证书状态。

提供更新的应用

您自己分发的应用不会自动更新。有新版本时,应通知用户进行更新并指导他们安装应用。请考虑让应用检查更新,并在打开应用时通知用户。请确保通知中提供了 itms-services 链接。您还可以使用应用内部的 openURL 来安装更新。

如果想要用户保留他们设备上储存的应用数据,请确保新版本与要替换的版本使用的捆绑标识符相同,并告知用户在安装新版本之前不要删除旧版本。

预置描述文件过期之前,请访问 iOS for Developers 网站(面向开发者的 iOS)为应用创建新描述文件。对于首次安装应用的用户,请使用新预置描述文件创建新应用归档 (.ipa)。

如果用户已有该应用,您不妨设定发布下一个版本的时间,并在该版本中包括新预置描述文件,这样用户在使用应用工作时不会被打断。如果不想这样做,您可以仅分发新的 .mobileprovision 文件,这样用户便不必再次安装该应用。新的预置描述文件会覆盖应用归档中已有的描述文件。

分发预置描述文件自签发之日起 12 个月后过期。过期后,系统会删除描述文件,应用将不会启动。

您可以使用 MDM 安装和管理预置描述文件,然后用户通过应用更新或使用 MDM 进行下载并安装。

如果您的分发证书过期,应用将不会启动,而您需要使用新的分发证书来重新构建应用。分发证书自签发之日起三年内有效,或者在您的 Apple Developer Enterprise Program(Apple 开发者企业级计划)成员资格过期之前一直有效,二者以先到者为准。若要防止证书过期,请确保在成员资格过期之前先进行续订。

您可以拥有同时处于活跃状态的两个证书,并且它们彼此独立。第二个证书提供了一个重叠期,让您能够在第一个证书过期前更新应用。从 iOS Dev Center 请求第二个分发证书时,请确保不要撤销第一个证书。

证书验证

用户首次打开应用时,系统会通过联系 Apple 的 OCSP 服务器来验证分发证书。如果证书已撤销,应用将不会启动。为了验证状态,设备必须能够访问 ocsp.apple.com。

OCSP 响应会在设备上缓存一段时间(由 OCSP 服务器指定),当前为 3 到 7 天之间。在重新启动设备和缓存的响应过期之前,将不会再次检查证书的有效性。如果当时收到撤销命令,系统将阻止应用运行。

【警告】撤销分发证书会导致使用该证书签名的所有应用失效。只有万不得已时才应撤销证书,比如确定专用密钥已丢失或确信证书已遭破解。

示例 iOS 应用清单文件

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <!-- array of downloads.-->
  <key>items</key>
  <array>
   <dict>
    <!-- an array of assets to download -->
     <key>assets</key>
      <array>
       <!-- software-package: the ipa to install.-->
        <dict>
         <!-- required. the asset kind.-->
          <key>kind</key>
          <string>software-package</string>
          <!-- optional. md5 every n bytes. will restart a chunk if md5 fails.-->
          <key>md5-size</key>
          <integer>10485760</integer>
          <!-- optional. array of md5 hashes for each "md5-size" sized chunk.-->
          <key>md5s</key>
          <array>
            <string>41fa64bb7a7cae5a46bfb45821ac8bba</string>
            <string>51fa64bb7a7cae5a46bfb45821ac8bba</string>
          </array>
          <!-- required. the URL of the file to download.-->
          <key>url</key>
          <string>https://www.example.com/apps/foo.ipa</string>
        </dict>
        <!-- display-image: the icon to display during download.-->
        <dict>
         <key>kind</key>
         <string>display-image</string>
         <!-- optional. indicates if icon needs shine effect applied.-->
         <key>needs-shine</key>
         <true/>
         <key>url</key>
         <string>https://www.example.com/image.57x57.png</string>
        </dict>
        <!-- full-size-image: the large 512x512 icon used by iTunes.-->
        <dict>
         <key>kind</key>
         <string>full-size-image</string>
         <!-- optional. one md5 hash for the entire file.-->
         <key>md5</key>
         <string>61fa64bb7a7cae5a46bfb45821ac8bba</string>
         <key>needs-shine</key>
         <true/>
         <key>url</key><string>https://www.example.com/image.512x512.jpg</string>
        </dict>
      </array>
<key>metadata</key>
      <dict>
       <!-- required -->
       <key>bundle-identifier</key>
       <string>com.example.fooapp</string>
       <!-- optional (software only) -->
       <key>bundle-version</key>
       <string>1.0</string>
       <!-- required. the download kind.-->
       <key>kind</key>
       <string>software</string>
       <!-- optional. displayed during download; typically company name -->
       <key>subtitle</key>
       <string>Apple</string>
       <!-- required. the title to display during the download.-->
       <key>title</key>
       <string>Example Corporate App</string>
      </dict>
    </dict>
  </array>
</dict>
</plist>

© 著作权归作者所有

共有 人打赏支持
哈特中尉
粉丝 0
博文 7
码字总数 4212
作品 0
西安
CTO(技术副总裁)
私信 提问
iOS实现OTA无线安装App

引用Apple说明: 您可以使用 Apple Developer Enterprise Program(Apple 开发者企> 业级计划)开发 iOS 和 macOS 应用,对于开发、测试应用以及将> > 其分发给用户,此计划提供了完整的流程...

LuisX
2018/08/29
0
0
十大策略保证内网计算机安全

几乎所有企业对于网络安全的重视程度一下子提高了,纷纷采购防火墙等设备希望堵住来自internet的不安全因素。然而,intranet内部的攻击和入侵却依然猖狂。事实证明,公司内部的不安全因素远比...

科技探索者
2017/11/14
0
0
网络初级工程师入门1

第一章网络基本知识 1.1 网络是何物 网络就是不同的人群,把资源进行了分享,你,我,他都可以得到这个的公开的资源。比如QQ、微信、LOL、迅雷极速版,这些都是网上的资源,不需要你去开发。...

han1266
2017/05/02
0
0
怎么做办公室网络布线

怎么做办公室网络布线 浏览:1144 | 更新:2014-10-07 17:43 1 2 3分步阅读 网络布线实现广域网或者局域网的链接和应用。 工具/原料 网线 光纤 路由器 方法/步骤 一、办公室网络布线设计原则...

james_laughing
2016/02/26
21
0
中小企业组网方案分享

1、ADSL+代理服务器(软路由) 这种模式在前几年比较流行,小型单位、网吧用的比较多。 ADSL+代理服务器(软路由),需要一台服务器做代理。 1、Windows自带的internet共享 2、第三方代理服务...

周志超
2014/09/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Httpd 整合 Tomcat 步骤

环境:Tomcat8 + Httpd2.4 工作原理:借助于Tomcat的AJP连接器实现Apache与Tomcat的通信 配置步骤: 1. 配置httpd.conf 新增: Include conf/extra/mod_jk.conf 修改:添加 index.jsp <IfM...

ZeroneLove
昨天
0
0
Docker笔记3——容器命令(未写完,明天整理接着写)

未写完,明天整理接着写 新建并启动容器 docker run docker run [OPTIONS] IMAGE [COMMEND] [ARG...] OPTIONS: --name=[容器新名字] :为容器指定一个名称 -d:后台运行容器,并返回容器ID,...

HappyBKs
昨天
0
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
昨天
8
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
昨天
2
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部