iOS自建分发平台_ios分发-程序员宅基地

技术标签: 前端  html  typescript  javascript  

前言
一、什么是APP分发?
二、如何自建iOS分发

  1. 准备工作
  2. 开工

(1)plist文件:
(2)要把所有需要的文件都上传到https服务器中,然后拿到访问地址,确保可以访问,如:
(3)不出意外的话,到这一步就可以直接在iOS的Safari浏览器中直接访问
(4)大致说说iOS从Safari跳转到描述文件与设备管理

  1. 总结

前言

一、什么是APP分发?
APP分发其实就是APP推广,因为某些原因导致开发的APP无法上线下载市场,此时就需要进行APP分发(推广)了,Android的分发就很简单,只需要下载apk包安装即可,只不过iOS的就稍稍复杂一点点。

二、如何自建iOS分发
1.准备工作
iOS自建分发也是需要些准备工作的,您需要的准备是:

a. 具有https证书的域名和空间。
b. 企业签名过后的ipa包。
c. plist文件。
d. icon图标两个,分辨率分别是57×57和512×512;(可以不准备,但是下载的时候不会显示图标)

2.开工
针对准备工作中需准备的文件,做部分说明:

(1)plist文件:

plist文件被iOS的Safari浏览器识别之后会下载配置好的ipa文件,具体内容如下:

<?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>IPA的地址</string>
					</dict>
					<dict>
						<key>kind</key>
						<string>display-image</string>
						<key>url</key>
						<string>57×57图片的地址</string>
					</dict>
					<dict>
						<key>kind</key>
						<string>full-size-image</string>
						<key>url</key>
						<string>512×512图片的地址</string>
					</dict>
				</array>
				<key>metadata</key>
				<dict>
					<key>bundle-identifier</key>
					<string>Bundle ID(需要填写)</string>
					<key>bundle-version</key>
					<string>1.1.0(版本号)</string>
					<key>kind</key>
					<string>software</string>
					<key>title</key>
					<string>APP的名称</string>
					<key>New item - 2(选填)</key>
					<string></string>
					<key>New item(选填)</key>
					<string></string>
				</dict>
			</dict>
		</array>
	</dict>
</plist>

(2)要把所有需要的文件都上传到https服务器中,然后拿到访问地址,确保可以访问,如:

需要ipa、plist、icon四个文件的下载地址。
`https://xxxx.xxxx.com/xxx.ipa`
`https://xxxx.xxxx.com/xxx.plist`
`https://xxxx.xxxx.com/57分辨率.png`
`https://xxxx.xxxx.com/512分辨率.png`

(3)不出意外的话,到这一步就可以直接在iOS的Safari浏览器中直接访问

itms-services:///?action=download-manifest&url=plist下载路径

就可以进行下载了,网上说一定是三个///,否则不能下载,但是我试过两个//也行,但是大家输入路径的时候还是注意检查一下。这里建议做一个下载页,点击下载按钮进行下载,简单的效果如下:

<!doctype html>
<html>
    <head>
        <meta charset="UTF-8">
            <title>下个载</title>
    </head>
    <a style="text-align:center" href="itms-services:///?action=download-manifest&url=plist下载路径">下载</a>
</html>

这里有个建议,大家做下载页面的时候最好不要让Android端手机用户下载文件,以及iPhone端手机用户也要考虑指引用户打开Safari浏览器才让他们下载,即微信端打开的时候做个提示。

这是下载页:
在这里插入图片描述

这是下载效果:

(4)大致说说iOS从Safari跳转到描述文件与设备管理

做过企业级IOS App的开发者应该都遇到过这样的困扰:用户下载完成企业级App后,需要进入经历一个痛苦的手动信任过程:

进入 【设置】 -> 【通用】 -> 【描述文件与设备管理】 -> 找到对应证书 -> 点击信任 -> 回到桌面打开

很多不熟悉信任过程的用户基本很难完成这样的操作。所以为了能让用户完成信任操作,开发者们也是想尽办法做出各种方案。

IOS是支持通过 *url schemes * 的方式打开应用的,也可以用这样的方式直接打开 【描述文件与设备管理】:

//html文件
<a href="prefs:root=General&path=ManagedConfigurationList">前往信任</a>

不过这个方式早已在 iOS10 中已经失效。
但是可以通过另一种手段达到同样的效果。非常简单,步骤如下:

  • 从到苹果开发者的证书管理中,下载企业发布证书 xxx.mobileprovision。
  • 把证书放到服务器上
  • href 改为证书在服务器上的路径
// html
<a href="https://xxx/xxx.mobileprovision">前往信任</a>

总结

  • 尝试这个功能,建议还是找一个有https证书的服务器
  • 存放IPA文件的服务器也很重要,一般iOS的IPA包都在50M以上,如果服务器的带宽太小,那么下载这个过程都有很久!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zl198931/article/details/123661703

智能推荐

未处理System.BadImageFormatException”类型的未经处理的异常在 xxxxxxx.exe 中发生_“system.badimageformatexception”类型的未经处理的异常在 未知模块。 -程序员宅基地

文章浏览阅读2.4k次。“System.BadImageFormatException”类型的未经处理的异常在 xxxx.exe 中发生其他信息: 未能加载文件或程序集“xxxxxxx, Version=xxxxxx,xxxxxxx”或它的某一个依赖项。试图加载格式不正确的程序。此原因是由于 ” 目标程序的目标平台与 依赖项的目标编译平台不一致导致,把所有的项目都修改到同一目标平台下(X86、X64或AnyCPU)进行编译,一般即可解决问题“。若果以上方式不能解决,可采用如下方式:右键选择配置管理器,在这里修改平台。_“system.badimageformatexception”类型的未经处理的异常在 未知模块。 中发生

PC移植安卓---2018/04/26_电脑软件移植安卓-程序员宅基地

文章浏览阅读2.4k次。记录一下碰到的问题:1.Assetbundle加载问题: 原PC打包后的AssetBundle导入安卓工程后,加载会出问题。同时工程打包APK时,StreamingAssets中不能有中文。解决方案: (1).加入PinYinConvert类,用于将中文转换为拼音(多音字可能会出错,例如空调转换为KongDiao||阿拉伯数字不支持,如Ⅰ、Ⅱ、Ⅲ、Ⅳ(IIII)、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ、Ⅹ..._电脑软件移植安卓

学习笔记(03):高并发下的Nginx性能优化实战-Nginx优势特点总结-程序员宅基地

文章浏览阅读87次。 高并发下的Nginx性能优化实战、解读Nginx的核心知识、掌握nginx核心原理?通过本期课程将解答我们的疑惑。_随着 nginx 发展,高并发、轻量的优势,近几年

Linux环境 docker启动redis命令_linux docker 重启 redis-程序员宅基地

文章浏览阅读1.1k次。docker启动redis命令_linux docker 重启 redis

【总结】插头DP-bzoj1210/2310/2331/2595_dp插头模型-程序员宅基地

文章浏览阅读325次。插头DP小结_dp插头模型

关于测试工作效率低的一些思考和改进方法_测试人员不足与改进-程序员宅基地

文章浏览阅读3.5k次。关于测试工作效率低的一些思考和改进方法引子  汇总统计了一下项目组近期测试项目实际工作量与基线工作量的对比,发现一个严重问题。就是工作效率特别低下。下面简单列举一下几个项目预期工作量和实际工作量以及时间耗费严重的地方、项目简要背景。  1、B版本测试。版本预期工作量15人天,实际耗费工作量在30人天。更为严重的是测试人员并没有因为测试周期延长和工作量投入加大而测试的更轻松,反而是测试期..._测试人员不足与改进

随便推点

NumPy科学数学库_数学中常用的环境有numpy-程序员宅基地

文章浏览阅读101次。NumPy是Python中最常用的科学数学计算库之一,它提供了高效的多维数组对象以及对这些数组进行操作的函数NumPy的核心是ndarray(N-dimensional array)对象,它是一个用于存储同类型数据的多维数组Numpy通常与SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用,用于替代MatLabSciPy是一个开源的Python算法库和数学工具包;Matplotlib是Python语言及其Numpy的可视化操作界面'''_数学中常用的环境有numpy

dind(docker in docker)学习-程序员宅基地

文章浏览阅读1.1w次。docker in docker说白了,就是在docker容器内启动一个docker daemon,对外提供服务。优点在于:镜像和容器都在一个隔离的环境,保持操作者的干净环境。想到了再补充 :)一:低版本启动及访问启动1.12.6-dinddocker run --privileged -d --name mydocker docker:1.12.6-dind在其他容器访问d..._dind

com.sun.org.apache.xerces.internal.dom.DeferredTextImpl cannot be cast to org.w3c.dom.Element-程序员宅基地

文章浏览阅读1.4k次。代码 List<book> list = new ArrayList<book>(); Document doc = new DOCUntil().getDocument("src/ww/t/qp/books.xml"); Element root = doc.getDocumentElement(); NodeList books = root.getElementsByTagName("book"); for _com.sun.org.apache.xerces.internal.dom.deferredtextimpl cannot be cast to or

计算机网络 (ISP、计算机网络体系结构 拓扑图)-程序员宅基地

文章浏览阅读2.9k次。计算机网络定义: 一些互相连接的,自治的计算机或者智能硬件设备集合信息是如何交换的?1、电路交换(电话)线路被某个终端占用后不会被释放 除非主动释放2、分组交换分组交换是 把大数据拆分成小数据进行分组传输 提高传输效率计算机上的数据是突发的,所以不采用电路交换,而采用分组交换3、ISP(internet service provider)网络服务提供商终端通过交换机连接一级ISP(国际性区域)之间互相连接 某一条线路断后可以通过其他设备进行通信二级ISP(国家/区域性规模)与一级相互连接三级ISP(本地区域

集通字库芯片GT20L16S1Y 读取字体数据-程序员宅基地

文章浏览阅读3.5k次,点赞12次,收藏46次。/** * @brief * @note * @param None * @retval None * @author PWH * @date 2021/4 */int32_t GT20L16S1Y_Get_Addr_Ascii_7x8(char *asciiCode){ if (*asciiCode >= ' ' && *asciiCode <= '~') { return 0x66C0 + (*asciiCode - ._gt20l16s1y

关于ETH的NONCE_ethers获取交易nonce-程序员宅基地

文章浏览阅读1.3k次。最近我的ETH交易里面出现了一种情况,交易虽然返回了hash,但是却迟迟未被确认,连在区块浏览器上也找不到对应的pending交易, 但是通过节点api调用hash获取记忆记录却有数据返回。这种情况问了人也查了资料,最后得出的结果是,交易可能在矿池,但是却没有被矿工打包。于是想到了imtoken钱包的加速交易内容。说到加速交易,不得不说的就是ETH交易内重要的一个内容, nonce。nonc..._ethers获取交易nonce

推荐文章

热门文章

相关标签