[React-Native] IOS 扫码下载解决方案

IOS 扫码下载解决方案

Step0 将打包好的 ipa 格式文件部署到下载服务器上

比如放在 tomcat 中供下载:dingdian.ipa

然后将 ipa 包所在的服务器地址配置成内网、外网等形式,生成二维码地址或者链接。

如:http://apexsoft.dingdian.ios.download/app_update/dingdian/dev/ios/dingdian.ipa

注:有图标的还要放上图标信息。

Step1 将 plist 文件放到 https 服务器上做代理

可以使用 githubgitee 等服务器。

新建仓库、导入附件一的代码到仓库文件中,比如,新建仓库:ios-dingdian-ipa-download ,新建文件 dingdian.plist ,粘贴附件一代码。提交后点击 row 或者 原始数据 生成文件链接。

注:plist 文件中的 bundleid 以及文件下载地址等配置项需要自行配置。

Step2 将下载页面放到下载服务器上

下载配置页面是指用户扫码到该页面,由该页面来判断用户终端,然后去走对应的下载方案,需要用这个文件生成下载二维码。

详细代码见 附件二。

注:下载页面代码也要根据客户实际情况调整下载地址

Step3 写在最后

ios下载并不复杂,唯一要注意的是,下载时需要经过 plist 文件代理一下,比安卓的下载多一个步骤。

安卓下载:生成服务器下载地址的链接——> 通过链接生成二维码 ——> 扫码访问下载地址下载。

ios下载:生成服务器下载地址的链接——> 挂载 plist 文件指向服务器下载地址 ——> 编写下载页面访问 plist ——> 生成下载页面的二维码 ——> 扫码访问下载页面(访问 plist ,然后获取下载地址)下载。

本文所需要的软硬件配置以及文件:

  1. Ipa 包
  2. 下载服务器
  3. plist文件
  4. plist代理
  5. logo图片
  6. 下载页面文件

下载服务器上:


// ip/opt/download/dingdian/

dingdian.ipa
download_page_dingdian.html
logo.png
display_icon.png

gitee服务器上:


// https://gitee.com/apexsoft/dingdian/download/master

dingdian.plist
README.md

附件一:Step1 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://apexsoft.dingdian.ios.download/app_update/dingdian/dev/ios/dingdian.ipa</string>
				</dict>
				<dict>
					<key>kind</key>
					<string>full-size-image</string>
					<key>url</key>
					<string>http://apexsoft.dingdian.ios.download/app_update/dingdian/dev/ios/logo.png</string>
				</dict>
				<dict>
					<key>kind</key>
					<string>display-image</string>
					<key>url</key>
					<string>http://apexsoft.dingdian.ios.download/app_update/dingdian/dev/ios/dingdian.ipa/display._icon.png</string>
				</dict>
			</array>
			<key>metadata</key>
			<dict>
				<key>bundle-identifier</key>
				<string>cn.com.dingdian.ios</string>
				<key>kind</key>
				<string>software</string>
				<key>subtitle</key>
				<string>by AssetsDepartment</string>
				<key>title</key>
				<string>顶点软件</string>
			</dict>
			
		</dict>
	</array>
</dict>
</plist>

附件二:

<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="pragma" content="no-cache">
  <meta http-equiv="Cache-Control" content="no-store, must-revalidate">
  <meta http-equiv="expires" content="0">
  <title>顶点软件</title>
</head>

<body>
  <div id="wxalert" style="display:none;">
    <p></p>
    <p style="font-size:50px;color: chocolate;text-align: center;padding-left: 100px;padding-right: 100px;">
      您使用的是微信,无法直接安装,请点击右上角选项菜单,选择"在浏览器中打开"。</p>
  </div>

  <script type="text/javascript">
    var androidDownCount = 0
    var iosDownCount = 0
    if (/android/i.test(navigator.userAgent)) {
      if (/micromessenger/i.test(navigator.userAgent)) {
        document.getElementById("wxalert").style.display = "";
      } else {
        window.location.href = "http://apexsoft.dingdian.ios.download/app_update/dingdian/dev/ios/dingdian.apk";
        androidDownCount++;
      }
    } else if (/ipad|iphone|mac/i.test(navigator.userAgent)) {
      if (/micromessenger/i.test(navigator.userAgent)) {
        document.getElementById("wxalert").style.display = "";
      } else {
        window.location.href = "itms-services://?action=download-manifest&url=https://gitee.com/apexsoft/dingdian/raw/master/dingdian.plist";
        iosDownCount++;
      }
    } else {
      window.location.href = "http://apexsoft.dingdian.ios.download/app_update/dingdian/dev/ios/dingdian.apk";
      androidDownCount++;
    }
  </script>
</body>

</html>
posted @ 2023-03-13 10:18  绎丶江忆南  阅读(118)  评论(0编辑  收藏  举报