iOS企业版(Enterprise)app部署到自己服务器(不通过AppStore,在iOS设备上直接安装ipa)

一、前言

我们打出的ipa包,有两种主要的方式投放到市场上,一个是上架AppStore,一个是放到自己的http/https服务器上,通过自己的网页下载。上架AppStore可能会遇到一些限制,审核严格,过程坎坷,这里主要介绍如何放到自己的http服务器上以供外部玩家进行下载安装ipa。注意,必须使用企业证书打的ipa包才可以通过自己的http/https服务器下载安装。

二、必须有一个https外链

针对iOS升级得iOS7以后,plist文件必须放到https的服务器上了,http不可以用了。
解决办法:
找一个第三方https外链的网盘(比如阿里云企业网盘),将plist文件放到网盘上,ipa安装包可以放在自己的http服务器上。
: 其实将plist托管到GitHubgetee或者CODE.CHINA等代码托管云上也是可以的,支持https即可。

三、企业版ipa下载安装流程

通过itms-services协议,在safari浏览器可以直接在iOS设备上安装应用程序。itms-services协议需要一个plist配置文件,这个plist文件必须放在https服务器上,通过plist中的配置,再指向回http服务器中的ipa地址。

画成流程图就是下面这样:

 

四、部署的具体过程

1. 搭建一个自己的http服务器

linux下搭建基本web服务: 见下文PS1

假设地址是:http://mywebserver.com

2. 用企业证书打出一个ipa包,并放到自己的http服务器上

企业证书打包ipa文件(图文详解): 见下文PS2

假设打出来的包名字是 mygame.ipa
放到http服务器上,对应的下载地址假设是http://mywebserver.com/mygame.ipa
但这个并不能直接在苹果手机上下载安装,而必须通过https服务器和一个plist文件。

3. 申请一个https云盘(比如阿里云企业网盘)   这里可以通过github或者码云oschina托管plist    https://blog.csdn.net/qq_34823218/article/details/111299922

阿里云:https://www.aliyun.com/
在这里插入图片描述
大致流程是:
1 购买云服务器
2 购买OSS存储
3 部署DzzOffice网盘
4 连接OSS存储
下载配套的OSS客户端,方便后面上传文件到https服务器上
阿里OSS客户端 windows下载与使用:https://blog.csdn.net/zhuiqiuk/article/details/53697223

假设我们申请到的https地址是:https://myhttpswebserver.com

4. 写一个plist文件,并放到https云上

参考下面的plist示例。注意几个地方:ipa的http地址,图标.pnghttp地址,游戏的bundleId,游戏的名字
假设我们的plist文件叫:mygame.plist
放到https服务器上,假设对应的plist文件的地址是:https://myhttpswebserver.com/mygame.plist
plist文件示例:

<!-- mygame.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>http://mywebserver.com/mygame.ipa</string>          <!-- ipa的http地址 -->
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>needs-shine</key>
                    <false/>
                    <key>url</key>
                    <string></string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>needs-shine</key>
                    <false/>
                    <key>url</key>
                    <string>http://mywebserver.com/显示的图标.png</string>      		<!-- 显示的图标.png的http地址 -->
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>游戏的bundleId</string>        				<!-- 游戏的bundleId, 比如com.linxinfa.mygame -->
                <key>bundle-version</key>
                <string>1.0.0</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>游戏名字</string>   							 <!-- 游戏名字 -->
            </dict>
        </dict>
    </array>
</dict>
</plist>

5. 写一个html下载页面,放到自己的http服务器上

假设我们的html文件叫:mygame.html
这个html页面放到http服务器上,假设对应的页面地址是 http://mywebserver.com/mygame.html
html下载页示例:(这个里面    itms-services://?action=download-manifest&url=   后面的地址在ios7以后苹果要求一定要是https)

<!-- mygame.html-->

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width; initial-scale=1.0"> 
<title>iOS企业版下载测试</title> 
</head> 
<body> 

<div class="doc"> 
<p align="center"><font size="7">iOS企业版下载测试</font></p>
<p align="center">
	<!-- 这里就用到了上文提到的itms-services协议了 -->
	<a href="itms-services://?action=download-manifest&url=https://myhttpswebserver.com/mygame.plist">点击下载</a>		
</p>
</div>
</body> 
</html>

以上都弄好了之后,在手机safari浏览器上输入html的路径: http://mywebserver.com/mygame.html
在这里插入图片描述
点击[点击下载]

回到桌面,即可看到正在下载安装了。注意,必须在苹果手机上才可以下载安装哦

 

 

 

PS1:linux下搭建基本web服务

服务端配置:

1.安装一个可以提供Web功能软件

[root@server0 ~]# yum -y install httpd

2.启动httpd服务

[root@server0 ~]# systemctl restart httpd
[root@server0 ~]# systemctl enable httpd

 

3.编写自己的测试页面文件

在web服务中默认存放网页文件的路径:/var/www/html

默认网页文件名字:index.html

[root@server0 ~]# vim /var/www/html/index.html

<marquee><font color=red><h1>hello world!

 

客户端访问

[root@desktop0 /]# firefox 172.25.0.11
 

 

 

 

PS2:企业证书打包ipa文件(图文详解)

在公司中,经常遇到使用企业证书打包ipa文件的情况,然后发给测试。通常不会让你自己去申请证书,合成profile文件等等。会直接发给你两个证书,两个描述文件。一个是开发者developer,一个是发布distribute.如下图:
这里写图片描述
首先点掉自动管理签名 automatically manage signing,然后选择对应的描述文件,也就是profile文件,如下图:
这里写图片描述
这里写图片描述
这里写图片描述
接下来在build setting中搜索sign,在对应的位置看一下profile文件是否选上,然后把对应证书的地方选为自动即可,一般这步只验证。默认的就是如图所以,不需要改动。
这里写图片描述
这里写图片描述
接下来选择release模式,设置如下:
这里写图片描述
这里写图片描述
这里写图片描述
选完以后close,开始打包,选到generic ios Device,comand+b编译一下,如果成功,继续,不成功,解决错误。
这里写图片描述
然后开始生成包:
这里写图片描述
稍等一下,会出现下面弹窗,继续按图片操作:注意,由于是企业包,企业证书,所以打包的时候选第三个选项
这里写图片描述
继续下一步
这里写图片描述
继续这里注意,需要选择对应的发布的描述文件。也就是distribute对应的,如下图:
这里写图片描述
这里写图片描述
然后等待,生成以后export
这里写图片描述
选择一个桌面位置,生成,大功告成
这里写图片描述
这里写图片描述

 

PS3:信任此设备(未受信任的企业级开发者)

位置就是在设置——》通用——》设备管理——》此处位置:

 

PS4:信任描述文件(无法连接到xxxxxx)

1.确保描述文件信任:设置-通用-描述文件

2.设置-通用-关于本机-证书信任设置

参考链接

https://blog.csdn.net/linxinfa/article/details/88540213?utm_medium=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v29-3.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task--2~all~first_rank_v2~rank_v29-3.nonecase

https://blog.csdn.net/lee727n/article/details/78286178

https://blog.csdn.net/zhydream77/article/details/79683912

https://blog.csdn.net/zhanghuiqi205/article/details/82942310

https://blog.csdn.net/bugscode/article/details/68925826

 


版权声明:本文为qq_34823218原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。