当前位置: 首页 > 编程日记 > 正文

uniapp开发App从开发到上架全过程

当我们的APP开发完毕,最终交付的时候,必然要经历的一个环节,就是APP上架,国内APP上架一般为IOS端appstore上架,安卓端应用商店比较多,最常见的应用商店有华为应用商店、小米应用商店、OPPO应用商店、VIVO应用商店、应用宝应用商店等。

在开始上架

前,需要准备好相应的材料,安卓端需要准备一张软著材料(软著文件的简称要与APP的名称一致)、企业营业执照、企业银行公户相关材料、对应公户主体的域名ICP备案以及手机号、邮箱等相关材料。IOS端需要准备好一台MAC电脑,一台IOS系统的手机或平板以及99美元的认证费用。

安卓端上架安卓端上架最常见的问题是隐私政策问题,不同的应用市场对于APP的隐私政策都有相应的要求,大家可以提前阅读相应应用市场的隐私政策来进对自己APP的隐私政策进行修改(还有一个野路子解决方案:找到你要上架的相应应用市场中与你APP功能类似的APP,借鉴一下他的隐私政策,记得修改里边的公司名称、地址、联系方式等信息)。

对于隐私政策,APP要在三个地方进行展示,第一个地方是要在APP首次打开的时候以弹窗形式进行展示

 

 

 

第二则是要在APP进行账户登录的时候进行展示,并要求用户勾选并同意隐私协议才可进行登录

 

 

 

第三处则是要在我的或设置页面中再次展示隐私协议

 

 

 

 对于首次打开APP的隐私弹窗,uniapp已经帮我们集成了此功能,在我们项目的manifest.json文件中,选择“App启动界面配置”,勾选使用原生隐私政策提示框选项,勾选后会在项目中自动添加androidPrivacy.json文件,可以双击打开自定义配置以下内容:

{  "version": "1",    "prompt": "template",  "title": "服务协议和隐私政策",  "message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",  "buttonAccept": "同意并接受",  "buttonRefuse": "暂不同意",  "hrefLoader": "system|default",  "second": {    "title": "确认提示",    "message": "  进入应用前,你需先同意<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>,否则将退出应用。",    "buttonAccept": "同意并继续",    "buttonRefuse": "退出应用"  },  "disagreeMode":{    "support": false,    "loadNativePlugins": false,    "visitorEntry": true,    "showAlways": false   },  "styles": {    "backgroundColor": "#00FF00",    "borderRadius":"5px",    "title": {      "color": "#ff00ff"    },    "buttonAccept": {      "color": "#ffff00"    },    "buttonRefuse": {      "color": "#00ffff"    },    "buttonVisitor": {      "color": "#00ffff"    }  }}

 将我们编辑好的隐私政策内容做成url访问链接,然后在上边message 中的超链接处将链接放入即可。如想实现更多自定义功能和样式,可以参考uniapp官方关于隐私政策配置的说明uni-app官网 (dcloud.net.cn) 配置好后即可以对APP进行打包上架操作,在进行打包前,我们需要关注下应用的版本号,需保证每次打包的应用版本号是大于当前已上架的版本号的,关于版本号的设置可以在manifest.json文件中选择“基础配置-应用版本名称”和“应用版本号”进行设置

 

 

 

 配置完成后,我们选择Hbuilder菜单“发行-原生APP云打包进行打包”,填写Android报名并选择证书后,即可进行打包,关于包名和证书的设置,在我的上一篇文章uniapp开发App从开发到上架全过程(二)-真机调试_阳光shine的博客-CSDN博客https://blog.csdn.net/JiayaoXu/article/details/128467553

中有提到,朋友们如果有不懂的可以查看上一篇文章进行操作。

打包完成后我们会得到一个下载链接,通过下载链接即可以得到.APK文件了。

应用商店注册不同的手机厂商都拥有自己的应用商店,我们需要分别来进行注册并上传我们的APK,在此列出市面上常见的厂商开放平台地址:

1、腾讯应用宝开放平台地址:http://open.qq.com

2、360手机助手开放平台地址:http://dev.360.cn 

3、百度手机助手/安卓市场/91助手开发者平台地址:http://app.baidu.com 

4、小米应用商店开放平台网站:https://dev.mi.com

5、华为应用商店开放平台网站:http://developer.huawei.com/consumer/cn/

6、魅族应用开放平台网站:http://open.flyme.cn/

7、VIVO应用商店开放平台网站:https://dev.vivo.com.cn

8、OPPO应用商店开放平台网站:http://open.oppomobile.com

9、三星应用开发者平台地址:http://support-cn.samsung.com/ 

10、阿里应用商店/豌豆荚/PP助手开发者平台地址:http://open.uc.cn 

不同平台的注册和认证方式大同小异,朋友们分别进入相应平台注册认证即可。注册并认证过程大约需要2-3个工作日左右。

注册并认证完成之后就可以提交APP了,需根据要求提供APP页面截图并处理成规定的尺寸大小,部分平台还会要求提供APP的LOGO,此处LOGO要保持跟打包的APK中LOGO保持一致

在应用版权证书处需上传APP的软件著作权证书和ICP备案截图,部分平台需在备注中提供。

如APP中有需要进行登录的模块,还需要提供测试账号密码供审核人员进行审核

其他信息根据不同平台要求进行填写即可,填写完成后即可提交审核,一般在5个工作日内会有反馈结果。

苹果端上架首先需要确定好需要注册的账号类型,一般可以选择个人账号或公司账号,个人账号相对来说注册会更简单。

 

 

 

首先需要有一个苹果账号,打开Apple Developer,进入登录界面,如无账号可以选择“Creates Your Now” 进行注册

 

 

 

注册完成进行登录,如果是个人账号则可以忽略这一步,如果需要注册公司账号,那么我们还需要注册一个DUNS编码,进入网址:Look up your D-U-N-S Number - Enroll - Apple Developer 并填写相关信息,检测是否拥有邓白氏编码,点击继续后一般会提示你没有找到邓白氏编码

 

 

 

此时滑动到最下方后,勾选协议后点击提交即可

 

 

 

提交成功后需等待邓白氏官方回复邮件,按照回复邮件的要求提交更多资料进行审核,不出问题的话在5个工作日之内会以邮件的形式发送给你邓白氏编码。

接下来的注册步骤需要在手机端完成:

手机appstore中搜索Apple Developer并安装,使用注册的账号进行登录,登录成功后在账户中点击立即注册按钮,进行填写信息 

 

根据需要注册的账号类型选择个人或组织

 

 然后在根据提示填写信息并扫脸后,等待审核即可。

审核通过后,会通过邮件的形式通知,此时继续打开Apple DeveloperAPP,点击继续注册,同意各种协议并支付订阅费用后,即可注册成功。

证书申请直接使用 appuploder制作证书,创建一个证书(Certificates),点击+进行新建,对于上架我们需要选择Apple Distribution或者iOS Distribution模式,点击继续后会要求我们上传CSR文件,此时选择我们在电脑上生成的CSR文件,点击继续即可生成证书文件,此时点击download按钮即可下载此证书文件

接下来我们需要创建一个Identifiers,点击+新建,选择AppIDs,点击继续,选择APP,此时需要输入我们自定义的Identifiers,并且要选择我们App所使用到的功能,如Apple 登录、通知等,都要在此选择,否则是无法使用的。填写完成后点击继续即可。 最后我们还需要获取描述文件,点击Proffiles目录,点击+新建,注意此时也要选择Distribution下的App Store选项,点击下一步,选择我们提前创建的AppId点击继续,选择我们刚刚创建好的证书文件,再次点击继续,输入描述文件名称后即可生成并进行下载。

 

 

 

 

制作好证书 ,描述文件,我们下载保存下来后面打包需要。

上架前调整根据苹果AppStore最新政策,对于需要登录的APP,需要提供给用户可以无需登录可以浏览非核心页面的权限,也就是用户不需要登录即可以访问一些不需要账号的页面,等确实需要用户信息的操作权限,如提交信息等功能在要求用户进行登录

第二点用户登录的情况下,需要提供给用户注销账号的权限,因此需要在设置中提供账号注销菜单。

 第三点如果在使用第三方登录(如微信登录等)的情况下,需要提供Apple登录选项

 如果没有使用到uni内置的广告模块的话,那么需要关闭IDFA广告标示

在manifest.json中选择“App常用其他设置”,取消勾选使用广告标识选项即可。

App权限权限配置

对于IOSAPP中如果使用到了关于用户隐私相关的功能需要填写访问许可描述,在manifest.json的权限配置菜单中,找到ios隐私信息访问的许可描述项,将此处你用到的权限填写描述,如你用到了相册上传图片功能,那么需要在“相册-读”权限中进行填写。

最后在配置下应用版本名称和应用版本号后就可以进行打包了。

选择Hbuilder菜单“发行-原生APP云打包”来进行打包,其中的证书要选择我们导出的正式版证书,不要选择测试证书。

如果想要你的APP同时支持在Ipad上运行的话,可以勾选支持Ipad选项,如果不需要的话,则尽量不要进行勾选,最后选择完成之后点击打包即可。

 

打包完成之后会获得一个下载链接,点击下载链接就可以获得以.ipa为结尾的安装包了。

APP信息填写登录AppleDeveloper,在账户界面选择App选项,进入appstoreconnect界面

点击+按钮新建一个APP

 

新建完成之后点击进入APP信息填写页面,填下APP的基础信息、售卖价格(如果免费选择0元即可)以及隐私政策等信息后进入版本提交页面。

 

在此界面我们需要上传App的页面截图、版本和二进制安装包等信息,对于截图,必须使用真机进行截图,否则苹果审核人员会给我们进行驳回 

二进制包上传不同于安卓APP可以直接在网页端上传安装包,IOS的安装包需要使用到Mac电脑上的App才能上传,我们这边可以使用appuploder工具,在进行登录过后直接将打包好的ipa文件拖到软件上进行上传,等待上传完成之后即可上传成功。

 

 

 

 上传完成之后,再次打开appstoreconnect界面,在构建版本界面处选择刚刚上传的IPA文件即可,如果没有显示的话,需要稍等等待几分钟在查看下,如果等待时间过长还没有显示,则需要查看下你的邮箱是否是你上传的文件被驳回。

 最后,全部填写完信息后,点击添加以提供审核按钮来提交审核即可。

 

 最后,上架可能不会一次就成功,总会有各种奇奇怪怪的问题出现而被驳回,此时就需要根据驳回的修改意见来灵活修改了,祝每一位开发者都能够上架自己心仪的App~

相关文章:

vue实现动态路由菜单!!!

文章浏览阅读244次,点赞2次,收藏2次。递归处理后端响应的菜单树,后依次通过addRoute方法往静态父路由,添加动态子路由,添加完使用el-menu渲染并添加router属性实现路由菜单模式。

GaussDB数据库SQL系列-触发器

文章浏览阅读680次,点赞37次,收藏33次。GaussDB数据库中的触发器是一种强大的工具,可用于自动化数据处理、数据验证、日志记录等任务。通过使用触发器,您可以提高数据一致性、减少数据冗余、实施业务规则并增强数据安全性。本文介绍了GaussDB数据库中触发器的基本概念、创建步骤和示例。希望能够帮助您更好地了解和使用GaussDB中的触发器功能。

本地Nginx服务搭建结合内网穿透实现多个Windows Web站点公网访问

文章浏览阅读1.1k次,点赞96次,收藏91次。访问http://127.0.0.1:9200/登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。接下来,我们通过强大的且稳定的内网穿透工具cpolar,将本地nginx服务暴露至公网环境,以实现穿透多个站点端口需求,无需公网IP,也不用设置路由器。提示更新隧道成功,点击左侧仪表盘的状态——在线隧道列表,可以看到公网地址已经更新为保留成功的二级子域名,将其复制下来。修改隧道信息,将保留成功的二级子域名配置到隧道中。

swagger注解属性设置导致的报错:For input string: ““

文章浏览阅读61次。使用swagger的时候,用 @ApiModelProperty 修饰的类的属性如果没设置的话默认赋值为“”,当Integer类型的属性没设置example的话就会报错。

go的HTTP网络编程

文章浏览阅读258次,点赞8次,收藏2次。本文教大家用go实现http网络编程

Flask 实现Token认证机制

在Flask框架中,实现Token认证机制并不是一件复杂的事情。除了使用官方提供的`flask_httpauth`模块或者第三方模块`flask-jwt`,我们还可以考虑自己实现一个简易版的Token认证工具。自定义Token认证机制的本质是生成一个令牌(Token),并在用户每次请求时验证这个令牌

elasticsearc DSL查询文档

文章浏览阅读68次。精确查询常见的有哪些?term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段range查询:根据数值范围查询,可以是数值、日期的范围。

什么是分布式锁?Redis实现分布式锁详解

文章浏览阅读151次,点赞4次,收藏3次。在分布式系统中,涉及多个主机访问同一块资源,此时就需要锁来做互斥控制,避免出现类似线程安全问题。而Java中的synchronized只是对当前进程中的线程有效,多个主机实际上是多个进程,那么它就无能为力了,此时就需要分布式锁。

MySQL运行在docker容器中会损失多少性能

前言 自从使用docker以来,就经常听说MySQL数据库最好别运行在容器中,性能会损失很多。一些之前没使用过容器的同事,对数据库运行在容器中也是忌讳莫深,甚至只要数据库跑在容器中出现性能问题时,首先就把问题推到容器上。 那么到底会损失多少,性能损失会很多吗? 为此我装了两个MySQL,版本都是8.

【Docker】Docker与Kubernetes:区别与优势对比

一种革新性的容器技术一、Docker与Kubernetes简介二、架构和部署模型1. Docker 部署模型2. 构建 Docker 镜像3. 运行容器4. 编排工具三、可移植性和可扩展性1. 可移植性(Portability):2. 可扩展性(Scalability):四、管理和编排能力五、生态系统和社区支持

微信小程序完整实现微信支付功能(SpringBoot和小程序)

然后到提供前端调用支付路由的类,WechatController类,注意我这里路由拼接的有/wechat/pay/notify,这个要和之前配置yml文件的支付回调函数一样,要不然不行。不久前给公司实现支付功能,折腾了一阵子,终于实现了,微信支付对于小白来说真的很困难,特别是没有接触过企业级别开发的大学生更不用说,因此尝试写一篇我如何从小白实现微信小程序支付功能的吧,使用的后端是SpringBoot。效果如下,这里因为我的手机不能截图支付页面,所以用的开发者工具支付的效果,都是一样的。4.前端(小程序端)

IT行业哪个方向比较好就业?

文章浏览阅读12次。在IT行业中,就业前景好的方向有很多,以下是一些比较热门的:

通过内网穿透本地MariaDB数据库,实现在公网环境下使用navicat图形化工具

文章浏览阅读113次,点赞50次,收藏40次。cpolar安装成功后,双击打开cpolar【或者在浏览器上访问本地9200端口 127.0.0.1:9200】,使用cpolar邮箱账号登录 web UI管理界面,如果还没有注册cpolar账号的话,点击免费注册,会跳到cpolar官网注册一个账号就可以了.在浏览器上访问9200端口,http://127.0.0.1:9200/,登录cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到mariaDB隧道,点击右侧的编辑。修改隧道信息,将保留成功的固定tcp地址配置到隧道中。

MySQL数据库索引以及使用唯一索引实现幂等性

一次和多次请求某一个资源对于资源本身应该具有同样的结果任意多次执行对资源本身所产生的影响均与一次执行的影响相同。

PVE 下虚拟机 Ubuntu 无法进入恢复模式的解决方案——提取原有系统文件

问题说明 某天重启虚拟机 Ubuntu,发现虚拟机只有容器IP,桥接的接口在虚拟机显示状态为 DOWN: 想重启进入恢复模式,却发现恢复模式一直花屏,无法使用: 没有办法了,只能想办法提取原有系统内原有文件。 解决方案 定位虚拟机编号: 找到虚拟机主硬盘: SSH 登录宿主机,执行以下命令 ls -

Nginx 核心配置文 nginx.conf介绍

文章浏览阅读38次。我们都知道浏览器中可以显示的内容有HTML、XML、GIF等种类繁多的文件、媒体等资源,浏览器为了区分这些资源,就需要使用MIME Type。所以说MIME Type是网络资源的媒体类型。Nginx作为web服务器,也需要能够识别前端请求的资源类型。在Nginx的配置文件中,默认有两行配置:用来配置Nginx响应前端请求默认的MIME类型。语法默认值位置在default_type之前还有一句。

如何快速本地搭建悟空CRM结合内网穿透工具高效远程办公

如何快速本地搭建悟空CRM结合内网穿透工具高效远程办公。

Kafka 集群如何实现数据同步?

哈喽大家好,我是咸鱼 最近这段时间比较忙,将近一周没更新文章,再不更新我那为数不多的粉丝量就要库库往下掉了 T﹏T 刚好最近在学 Kafka,于是决定写篇跟 Kafka 相关的文章(文中有不对的地方欢迎大家指出) 考虑到有些小伙伴可能是第一次接触 Kafka ,所以先简单介绍一下什么是 Kafka

使用 Hexo 搭建个人博客并部署到云服务器

目录1 整体流程2. 本地环境准备2.1 安装 Node.js 和 Git2.2 安装 Hexo3. 服务端环境准备3.1 Nginx 环境配置3.1.1 安装 Nginx3.1.2 更改 Nginx 配置文件3.2 Node.js 环境配置3.3 Git 环境配置3.3.1 安装 Git3.3.2

过滤器模式 rust和java的实现

文章浏览阅读301次。我们将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。我们制作一个Person实体类,Criteria为标准条件,CriteriaMale等为实现的具体判断器,是需要为person类使用meetCriteria方法便可以进行不同条件的判断。我们制作一个Person实体类,Criteria为标准条件,CriteriaMale等为实现的具体判断器,是需要为person类使用meetCriteria方法便可以进行不同条件的判断。

python最流行的适合计算积分和微分方程的库

SciPy有一个子模块scipy.integrate,包含多种数值积分方法,如牛顿哥特法(quad)、梯形法(trapz)、辛普森法(simps)等

c语言如何生成随机数以及设置随机数的范围

这篇文章介绍c语言如何生成随机数以及设置随机数的范围。本文主要介绍了rand函数、srand函数、以及time函数和时间戳的概念和如何控制随机数的范围。下一篇文章将介绍利用随机数和循环来写一个猜数字游戏。

Java虚拟机的垃圾回收机制

在Java语言中不再被任何引用所指向的对象被称为垃圾,这也是非常容易理解的,因为我们在对对象进行创建时,就需要给出一个对象引用变量用于指向我们在堆内存中创建的对象,所以如果一个对象没有被任何引用变量所指向的话,那么我们也就获取不到对象,也就没有办法对对象进行操作,这个对象自然就成了垃圾。引用计数算法判断对象是否为垃圾时比较方便快捷只是根据计数器中的值进行判断,但是会在每个对象的对象头中添加属性占用额外的空间,并且引用变量每一次指向对象都需要对对象的属性进行更新操作,占用大量的时间。为什么需要回收垃圾?

require()、import、import()有哪些区别?

require()、import、import()是我们常用的引入模块的三种方式,代码中几乎处处用到。如果对它们存在模糊,就会在工作过程中不断产生困惑,更无法做到对它们的使用挥洒自如。今天我们来一起捋一下,它们之间有哪些区别? 一、前世今生 学一个东西,先弄清楚它为什么会出现、它的发展历史、它是做什

如何保护电动汽车充电站免受网络攻击

文章浏览阅读228次。从电动汽车、传感器、充电站和支持基础设施的设计阶段开始就强调安全性作为首要任务。

Vite4+Typescript+Vue3+Pinia 从零搭建(3) - vite配置

项目代码同步至码云 weiz-vue3-template 关于vite的详细配置可查看 vite官方文档,本文简单介绍vite的常用配置。 初始内容 项目初建后,vite.config.ts 的默认内容如下: import { defineConfig } from &#39;vite&#39; i

原型模式 rust和java的实现

文章浏览阅读218次。意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决:在运行期建立和删除原型。何时使用: 1、当一个系统应该独立于它的产品创建,构成和表示时。2、当要实例化的类是在运行时刻指定时,例如,通过动态装载。3、为了避免创建一个与产品类层次平行的工厂类层次时。4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。如何解决:利用已有的一个原型对象,快速地生成和原型对象一样的实例。关键代码。

c语言const修饰变量与assert断言详解

const修饰变量与assert断言详解,const修饰变量。作用:const用于修饰变量使其不能再被修改。

Linux如何修改主机名(hostname)(亲测可用)

文章浏览阅读1k次。要想在虚拟机的 Linux 系统内部改变主机名(hostname),需要通过系统的配置来修改。文件,将其中引用旧主机名的条目更新为新主机名。文件,并将里面的内容替换为新主机名。但是大多数情况可能无需更改,除非在。文件里做了什么硬编码骚操作🤣。替换为想要设置的新主机名。或者使用文本编辑器手动编辑。需要重新设置主机名。

Linux下内网穿透实现云原生观测分析工具的远程访问

夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。夜莺于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 100 多个版本。本地部署后,为解决无法远程访问的难题,今天我们介绍如何实现让本地nightingale 结合cpolar 内网穿透工具实现 远程也可以访问,提高运维效率.