首页 > 其他分享 >[React-Native] IOS 扫码下载解决方案

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

时间:2023-03-13 10:35:58浏览次数:45  
标签:dingdian 扫码 IOS ios React download 服务器 plist 下载

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>

标签:dingdian,扫码,IOS,ios,React,download,服务器,plist,下载
From: https://www.cnblogs.com/ExileRiven/p/17210457.html

相关文章

  • React渲染元素DOM
    1<!DOCTYPEhtml>2<htmllang="en">34<head>5<metacharset="UTF-8">6<metahttp-equiv="X-UA-Compatible"content="IE=edge">7<metan......
  • React之JSX 简介详细介绍
    设想如下变量声明:constelement=<h1>Hello,world!</h1>;这个有趣的标签语法既不是字符串也不是HTML。它被称为JSX,是一个JavaScript的语法扩展。我们建议在Rea......
  • 小程序扫码登录网页应用
    详细实现方式以及代码下载请前往https://www.passerma.com/article/85一、整体实现思路前端调用接口生成带唯一scene参数的小程序码,并定时器获取该参数登录状态用户扫......
  • #yyds干货盘点 【React工作记录十六】关于三个数组的判断
     目录​​前言​​​​导语​​​​数据格式​​​​代码部分​​​​总结​​前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作......
  • react-router 6.9更新内容
    有两种方式可以定义路由:传递ReactElements<Home/>或传递ReactComponentHome。但是如果它们同时存在,则以ReactComponent优先。缺点:通过ReactComponent方式定义无法......
  • React-router-dom@5
    路由的发展阶段后端路由阶段早期的网站开发整个HTML页面是由服务器来渲染的,服务器直接生产渲染好对应的HTML页面,返回给客户端进行展示但是,一个网站,有很多页面......
  • NIOS中运行μC/OS II
    NIOS中运行μC/OSII在eclipse中创建项目时选择μC/OS的模板。生成后的BSP项目不需要进行设置,默认打印是打印在IDE中(在qsys中需添加jtaguart)。在qsys工具中添加一个......
  • react antd rangPicker组件选择当月、本月时间
    可以通过设置reactantdesign的RangePicker的disableDate的属性来实现只选择当月、本月时间的效果,实现代码如下1、设置RangePicker<RangePickerdis......
  • ReactiveProperty入门
    什么是ReactivePropertyReactiveProperty在ReactiveExtensions下支持异步功能。目标框架是.NETStandard2.0。ReactiveProperty的理念是有趣的编程.您可以使用Reac......
  • vue react框架
      Vue、React框架的价值(共同点)组件化数据视图分离,数据驱动视图——这是核心!只关注业务数据,而不用再关心DOM变化  vdom并不快,js操作DOM才是最快的但“数据......