使用 Nginx 搭建应用分发服务
很多时候手机 App 的开发需要提供测试版本供测试人员测试,但是直接提供安装包让测试人员安装的话是非常麻烦的,尤其是ios版本,许多人并不知道除了AppStore之外的其它安装方式。为此,搭建一个自动分发手机 App 的服务,通过网页在线安装可以达到自动化部署,终端测试可以点击网页链接或扫一扫二维码便可以自动下载安装 App。
安装 Nginx
使用 Nginx 搭建服务器,在 Linux 系统上安装 Nginx。
使用静态文件服务器发布 Android 应用
Android 版本应用程序的一种发布方法是搭建一个静态服务器,将 apk 安装包放在对应目录下,手机端访问静态文件服务器,直接点击对应安装包,就可以完成下载,Android系统系统可以自己完成apk的安装。
这里只需要在 Nginx 配置文件中添加一个静态服务的配置即可:
http {
......
......
server {
listen 192.168.16.111:8080;
server_name 192.168.16.111 alias another.alias;
location / {
root /home/OTPMobile/android;
access_log on;
autoindex on;
}
}
}
Android 的 APK 安卓包放置在 /home/OTPMobile/android 目录下即可。
使用 HTTPS 服务发布 IPA 和 APK
IOS 的 ipa 安装包并不支持直接下载安装(上传 AppStore 的除外)。想要实现网页发布,简单的方法就是需要部署一台支持 https 服务器(Nginx),生成好数字证书,将iOS 应用使用 AdHoc 证书或企业证书打包。这样用户就可以通过 Safari 访问 ipa 页面进行安装了。
当然 Android 版本 APP 也可以通过 https 服务发布,方法要比 ios 的简单的多,因为省去了许多证书的烦恼。
-
使用 openssl 生成数字证书
-
配置 Nginx 支持 HTTPS
-
在使用 Xcode 打包 ipa 的时候会生成 manifest.plist(或则自己创建该文件),修改这个文件中关于服务器地址的配置,还需准备分辨率为 57x57 和 512x512 的 logo 图标:
<?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>https://192.168.16.111/ios/OTPMobile.ipa</string> </dict> <dict> <key>kind</key> <string>display-image</string> <key>url</key> <string>https://192.168.16.111/ios/image.57x57.png</string> </dict> <dict> <key>kind</key> <string>full-size-image</string> <key>url</key> <string>https://192.168.16.111/ios/image.512x512.png</string> </dict> </array> <key>metadata</key> <dict> <key>bundle-identifier</key> <string>com.ftsafe.otp.mobile</string> <key>bundle-version</key> <string>3.0</string> <key>kind</key> <string>software</string> <key>title</key> <string>OTPMobile</string> </dict> </dict> </array> </dict> </plist>
-
将 ipa 安装包、manifest.plist、logo 图片和证书(HTTPS 需要安装并信任证书)上传到搭建好的 https 服务器
-
在搭建 https 服务器时我们添加了一个 index.html 文件,这里需要对这个 html 文件做一些修改,以期显示我们需要的内容。如下:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>手机令牌</title