实现类似自动更新下载机制(fir/蒲公英等实现原理)

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

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

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

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

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

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

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

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

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

使用 Xcode 来创建应用归档。使用分发证书给应用签名,并在归档中包括企业内部预置描述文件。有关构建和归档应用的更多信息,请访问iOS 开发者网站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:下载和安装过程中显示的应用的名称

仅对于 iOS 8 中的“报刊杂志”应用,以下栏必填:

newsstand-image:一张全尺寸 PNG 图像,用于显示在“报刊杂志”书架上

UINewsstandBindingEdgeUINewsstandBindingType:键必须和“报刊杂志”应用的 info.plist 中的键匹配

UINewsstandApp:表示该应用是“报刊杂志”应用

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

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

构建网站

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

应用 (.ipa) 文件

清单 (.plist) 文件

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

以下是示例链接:

Install App

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

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

设定服务器 MIME 类型

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

对于 Server 应用,请将 MIME 类型添加到网页服务的 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 访问。

网络配置要求

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

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

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

提供更新的应用

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

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

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

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

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

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

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

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

证书验证

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

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

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

示例 iOS 应用清单文件

itemsassetskindsoftware-packagemd5-size10485760md5s41fa64bb7a7cae5a46bfb45821ac8bba51fa64bb7a7cae5a46bfb45821ac8bbaurlhttps://www.example.com/apps/foo.ipakinddisplay-imageneeds-shineurlhttps://www.example.com/image.57x57.pngkindfull-size-imagemd561fa64bb7a7cae5a46bfb45821ac8bbaneeds-shineurlhttps://www.example.com/image.512x512.jpgmetadatabundle-identifiercom.example.fooappbundle-version1.0kindsoftwaresubtitleAppletitleExample Corporate App



1.清单plist文件怎么生成




2.所需要基本三个文件


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,928评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,032评论 3 410
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 173,382评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,580评论 1 304
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,558评论 6 403
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,018评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,261评论 3 432
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,328评论 0 281
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,858评论 1 328
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,843评论 3 351
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,954评论 1 358
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,565评论 5 352
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,251评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,677评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,834评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,558评论 3 383
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,033评论 2 368

推荐阅读更多精彩内容