将ipa包上传到服务器供测试人员下载

news/2024/7/20 20:11:06 标签: ios

参考文档:

  1. https://www.jianshu.com/p/e85f859b555a
  2. https://www.jianshu.com/p/2f5ec1ab46f4
  3. https://blog.csdn.net/linxinfa/article/details/88540213
  4. https://blog.csdn.net/Drunkard_001/article/details/103275114

1. 前言

我们打出的ipa包,有两种主要的方式投放到市场上:

  1. 一个是上架AppStore
  2. 一个是放到自己的http/https服务器上,通过自己的网页下载。

上架AppStore可能会遇到一些限制,审核严格,过程坎坷,这里主要介绍如何放到自己的http服务器上以供外部玩家进行下载安装ipa。

注意,必须使用企业证书打的ipa包 或者”AH-hoc 打的包“才可以通过自己的http/https服务器下载安装。

2. 准备的资料

  • 一张57 * 57 的Icon
  • 一张 512 * 512 的Icon
  • 一个IPA包(用企业证书或者Ad_Hoc证书打出来的包)
  • 一个https 的服务器

3. 流程

  • 将57 * 57 的图标 和 512 * 512 的图标放到服务器上,并返回对应的地址,例如:
  • https://cloudvideo.copperflow.cn/icon-57.png
  • https://cloudvideo.copperflow.cn/icon-512.png
  • 将IPA 放到服务器上,并返回对应的地址,例如:

https://cloudvideo.copperflow.cn/smartlord.ipa

  • 创建mainfest

参考下面的plist示例, 可以用vsCode新建一个文件,把代码复制上去。
这个文件是苹果用于解析下载用的。非常重要

<?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的链接地址(https://XXX.ipa)</string>
				</dict>
				<dict>
					<key>kind</key>
					<string>full-size-image</string>
					<key>needs-shine</key>
					<false/>
					<key>url</key>
					<string>(512 * 512 的图片地址(https://xxxx.png)</string>
				</dict>
				<dict>
					<key>kind</key>
					<string>display-image</string>
					<key>needs-shine</key>
					<false/>
					<key>url</key>
					<string>57 * 57 的图片地址(https://xxxx.png)</string>
				</dict>
			</array>
			<key>metadata</key>
			<dict>
				<key>bundle-identifier</key>
				<string>你app的bundleId</string>
				<key>bundle-version</key>
				<string>你的版本号</string>
				<key>kind</key>
				<string>software</string>
				<key>title</key>
				<string>你app的标题</string>
			</dict>
		</dict>
	</array>
</dict>
</plist>

  • 将这个mainfest.plist文件 放到服务器上,并返回一个链接地址,例如:

https://cloudvideo.copperflow.cn/manifest.plist

4. 访问mainfest.plist 文件并下载的两种方式

4.1 直接拼接地址访问

  • 链接的拼接格式如下:
    itms-services://?action=download-manifest&url=https://xxxx/manifest.plist
  • 注意: url 中的地址,需要替换成你mainfest 在服务器中的地址。
  • 然后,将整个itms-services://?action=download-manifest&url=https://xxxx/manifest.plist链接,放到苹果手机的默认浏览器访问,就可以提示下载。

4.2 添加一个html引导下载页面

这个页面只是方便操作,页面功能可以很简单,就一个下载按钮,点击下载后,开始下载。
然后将这个页面,放到服务器上,通过链接访问
注意: 必须用手机系统自带的浏览器,才能下载。
代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>你app的名称</title>
  </head>
  <body>
    <div class="container">
      <h1>你app的名称</h3>
      <h3 class="h5Styple">请复制链接到系统的浏览器打开</h5>
      <img
        src="https://cloudvideo.copperflow.cn/icon-512.png" // 为了美观,放了一张图片
        width="40%"
        height="40%"
      />
      <a
        class="buttonStyle"
        href="itms-services://?action=download-manifest&url=https://cloudvideo.copperflow.cn/manifest.plist"
        >点击下载安装</a
      >
    </div>
  </body>

  <style>
    .container {
      display: flex; /* 使用 Flex 布局 */
      flex-direction: column; /* 将子元素垂直排列 */
      justify-content: center; /* 在容器内垂直居中元素 */
      align-items: center; /* 在容器内水平居中元素 */
      min-height: 100vh; /* 设置容器高度为视口高度 */
      margin-top: -50px;
    }
    .buttonStyle {
      width: 40%;
      height: 85px;
      background: rgb(233, 163, 59);
      font-size: 25px;
      border-radius: 5px;
      border-width: 0px;
      color: white;
      text-align: center;
      align-items: center;
      margin-top: 30px;
      line-height: 85px;
      text-decoration: none;
    }
    .h5Styple {
      color: red;
    }
  </style>
</html>


http://www.niftyadmin.cn/n/388700.html

相关文章

渗透测试适合小白学习吗会让人感觉到无聊吗?

渗透测试是一项复杂的技能&#xff0c;需要具备扎实的计算机知识&#xff0c;对网络和系统安全有深入的理解和认识。对于初学者来说&#xff0c;建议先学习计算机网络、操作系统、编程语言等相关基础知识&#xff0c;了解渗透测试的概念、流程和常用工具。同时&#xff0c;需要…

健康医疗类APP开发 满足民众在线医疗需求

生活水平和社会大环境的变化让人们对于医疗服务的要求也随之提高&#xff0c;传统的到医院就诊已经无法更好的满足现代人多元化的医疗服务需求了。于是很多医院诊所等都考虑通过互联网技术来实现诊疗和科普健康知识的目的&#xff0c;为用户提供更加便捷化多元化的健康诊疗服务…

量化多因子——描述数据(空值、重复值、异常值)

数据清洗是量化的第一步&#xff0c;也是非常关键的一步。 检查数据的空值、重复值、异常值&#xff0c;并进行描述性数据分析&#xff0c;观察数据的分布情况。 缺失值&#xff1a; return_all.info() np.where(np.isnan(return_all)) np.where(np.isinf(return_all)) 重复值&…

罗德与施瓦茨FSWP26相位噪声分析仪

罗德与施瓦茨FSWP26 相位噪声分析仪和VCO测试仪 FSWP相位噪声分析仪和VCO测试仪结合极低噪声内源和互相关技术&#xff0c;实现了相位噪声测量的超高灵敏度。因此&#xff0c;即便测量高度稳定的源 (例如在雷达应用中的源) 也只需几秒钟。脉冲信号测量、附加相位噪声 (包括脉冲…

创建型设计模式04-建造者模式

✨作者&#xff1a;猫十二懿 ❤️‍&#x1f525;账号&#xff1a;CSDN 、掘金 、个人博客 、Github &#x1f389;公众号&#xff1a;猫十二懿 建造者模式 1、建造者模式介绍 建造者模式是一种创建型设计模式&#xff0c;用于将一个复杂对象的构造过程与其表示分离开来&…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第一章 网络协议基础 )

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而且…

音视频团队

作为音视频负责人&#xff0c;需要具备以下优势&#xff1a; 1.对公司战略的充分理解和关注&#xff0c;将团队工作目标与公司战略目标相统一&#xff0c;促进团队与公司整体发展。 2.专业技能的深厚积累&#xff0c;熟练掌握音视频领域技术&#xff0c;能够解决音视频编解码…

jwt加密权限验证

1.pom文件 <!--JWT依赖--> <dependency><groupId>com.nimbusds</groupId><artifactId>nimbus-jose-jwt</artifactId><version>6.0</version> </dependency> 2.在工具类中设置密钥和有效时间 //密钥 private static f…