使用uni-app开发App简易教程

使用uni-app开发App简易教程

  • 前言
  • app端开发步骤
    • 1、 申请uniapp开发者账号
    • 2、登录后开始新建应用
    • 3、下载安装 HBuildder X 。
    • 4、新建项目
    • 5、开启webview,在pages-index里面写一点点代码
    • 6、配置mainifest.json
    • 7、打包
  • h5工程配置
    • 在html中引入uniapp-sdk
    • 解决后退问题
  • 上架

前言

在工作中,有时候会遇到需要开发app的情况,但是公司又没有andriond、ios,这个时候如果不想外包,就要前端上场了,本文介绍使用uinapp+webview做一个app壳子,然后整个app使用内嵌h5的方式来开发APP.

app端开发步骤

1、 申请uniapp开发者账号

uniapp是没有企业账号的,所以申请个公共邮箱注册一下就行
登录注册地址: https://dev.dcloud.net.cn/

2、登录后开始新建应用

在这里插入图片描述

3、下载安装 HBuildder X 。

链接:https://www.dcloud.io/hbuilderx.html

4、新建项目

文件->新建->项目
在这里插入图片描述
在这里插入图片描述
因为我们不是真的要开发一个app,只是要一个webview,所以选择默认模板就行

5、开启webview,在pages-index里面写一点点代码

在这里插入图片描述
我们把webview要打开的链接放在某台确认的服务器上面,方便更新已经放一些配置,使用webview的@message来监听h5回传的消息,可以做一些原生操作,如打开摄像头,请求打开蓝牙等。

<template><view><web-view :src="url" @message="getMessage"></web-view></view>
</template><script>export default {data() {return {url: ''}},onLoad(options) {uni.request({// new Date().getTime()是为了确保不用缓存url: 'https://存放配置的服务器/config.json?t=' + new Date().getTime(),complete: (res)=> {let url = "默认链接";if(res.statusCode == 200){url = res.data.url;}// 可以获取用户设备号let pinf = plus.push.getClientInfo(); let cid = pinf && pinf.clientid || '';// 处理服务器配置的链接let d = url.indexOf('?') > -1? '&' : '?';this.url = `${url}${d}t=${new Date().getTime()}&cid=${cid}`}});},methods: {// 可以把开启蓝牙、定位等原生操作放在webview消息里面回传getMessage(event) {let data = event.detail.data;if(data.action){uni[data.action](data.options)}}}}
</script>
<style>
</style>

6、配置mainifest.json

  1. 首先是id跟包名这些
    在这里插入图片描述

  2. 然后是app的图标,准备一个1024x1024的图标,hbuilder会自动帮转分辨率
    在这里插入图片描述

  3. app模块配置,作者只用过推送功能,要额外看uniapp文档,很容易踩坑。但是uniapp也提供技术支持,不过人家是收费的。个人开发者也可以在上面回答问题赚点外快,嘿嘿嘿

  4. 然后就是权限,一般就是定位功能、摄像头功能。怎么知道配置项是哪个呢?其实命名很清楚了,camera(相机)、capture_audio_output(捕获音频输出),然后再到uniapp官网上搜索确认一下会保险一点
    在这里插入图片描述

7、打包

原生打包太麻烦了,直接使用云打包
在这里插入图片描述
然后把证书填一填,证书生成教程
注意:
1、快速安心打包可能有问题,用传统打包
2、注意保存好证书跟密码,最好上传到git
3、ios的还得申请ios的开发账号,教程
4、其实打包面板上就有“如何生成证书”的按钮,教程就在里面
5、包名很重要,不能随便改的,一开始就要起好名字
在这里插入图片描述

h5工程配置

既然用uniapp,那作者肯定是用vue的了

在html中引入uniapp-sdk

官网提供了cdn,可以自己下载下来放到本地或者自己公司的cdn

<script src="static/js/uniapp-sdk.js"></script>

解决后退问题

因为是整个app就是一个壳子套了h5,所以后退按钮就会存在退不出页面的问题,所以需要用uniapp-sdk来调用原生的后退方法
作者自己写个简单的路由控制

const control = {// 在这些页面上后退按钮点两次会退出apphomePaths: ['/index','/login'],state: [],vueObj: null,init(vueObj){this.vueObj = vueObj;this.addListener();return this;},// 判断是否首页(需要后退能退出app的页面)isHome(path) {return this.homePaths.includes(path);},// 在beforeEnter里面加上它,把路由状态保存起来pushState(path) {if(path!==this.state[this.state.length-1]){this.state.push(path);}},// 页面在后退的地方调用它back() {// 在首页等需要退出app的地方直接后退if(this.isHome(this.vueObj.$route.path)){window.uni.navigateBack();return}// 如果在非app环境刷新了页面if(this.state.length){// 自己的路由状态保存this.state.pop();// 这里这么写是因为有些手机后退,页面状态会很奇怪,所有即使直接push上一个页面进来this.vueObj.$router.push({ path: this.state[this.state.length-1] });} else {history.go(-1);}},// 监听后退按钮addListener(){// 本地开发的时候不用监听后退if(typeof window.plus === 'undefined'){console.log("当前不是app环境");return;}const _this = this;document.addEventListener('UniAppJSBridgeReady', function() {var webview = window.plus.webview.currentWebview(); window.plus.key.addEventListener('backbutton', function() {webview.canBack(function(e) {if (e.canBack) {_this.back();} else {window.uni.navigateBack();}})});})}
};
export default control;

使用自己的路由控制
在vue的main.js中注入

import Vue from 'vue';
import VueRouter from 'vue-router';
import HistoryCtrl from "static/js/history-ctrl";
const router = new VueRouter({routes: routerConfig
});
router.beforeEach(async (to, from, next) => {// 自己的路由HistoryCtrl.pushState(to.path);next();
});
const vueObj = new Vue({el: "#app",router,store
});
// 把自己做的前进后退挂载到vue里面方便调用
Vue.prototype.$historyctrl = HistoryCtrl.init(vueObj);
// 解决弹窗遮罩滑动穿透的问题
document.querySelector('body').addEventListener('touchmove', function(e) {e.preventDefault();
})

在页面中只要使用后退的时候

this.$historyctrl.back();

上架

说实话这么做的app就不适合上架,太low了,基本上就是发包做给客户私用的。
如果要上架,需要到每个手机厂商上都注册企业开发者。上传营业执照是最基础的,有些要法人身份证,尤其是vivo最恶心,需要法人手持身份证,所以只适合很小的公司,有点规模的公司只能是另想办法了,所以我们在看到一些app的开发商的时候,经常是一个不知名的公司(你懂的)。
这里只是忍不住吐槽一下,上架照着各个手机厂商的教程操作就行,傻瓜式操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254917.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

instant app入门和开发指南

本文由玉刚说写作平台提供写作赞助&#xff0c;赞助金额&#xff1a;300元原作者&#xff1a;AndroFarmer版权声明&#xff1a;未经本公众号许可&#xff0c;不得转载 概述 instant app 是谷歌推出的类似于微信小程序&#xff08;或者说小程序类似于instant app&#xff09;的一…

逆向技巧-快速定位App请求协议加密解密位置的方法

在App的逆向破解或者渗透测试过程中&#xff0c;经常会遇到网络请求协议被加密的情况&#xff0c;这个时候如果不对请求协议封包进行解密&#xff0c;找到其加密解密方法&#xff0c;就无法再进行下一步的操作。之前还好&#xff0c;大多数APP的加密解密方式为国际通用的算法&a…

uniApp实现h5页面唤醒app

如果想app跳app看这篇文章&#xff1a;app跳转app 说一下最近公司的需求 公司目前需要后台向每个用户发送一个带链接的短信&#xff0c;然后点击链接唤醒app。 注意 app配置ios&#xff0c;androi。app记得打包h5需要window.location.href进入 逻辑 当用户点击链接进入h5…

app采集的10个经典方法

app采集的抓取数据、app抓包、网页爬虫、采集网站数据、app数据采集软件、python爬虫、HTM网页提取、APP数据抓包、APP数据采集、一站式网站采集技术、BI数据的数据分析、数据标注等成为大数据发展中的热门技术关键词。那么app采集数据的方法有哪些呢&#xff1f;我给大家分享一…

辣椒app软件测试,testflight辣椒视频APP

辣椒视频test flight其实是一款关于系统类型的工具软件&#xff0c;看起来很像是影视播放器但其实并不是。testflight辣椒视频最近非常的红包&#xff0c;不少的小伙伴都想要知道辣椒视频test flight邀请码、兑换码&#xff0c;一起来看看吧~ 辣椒视频test flight简介 testflig…

app反编译

在进行安卓开发或者爬虫开发过程中&#xff0c;偶尔会遇到需要将app进行反编译分析参考源码的需求&#xff0c;接下来&#xff0c;笔者将自己实践过程记录下来&#xff0c;給需要的朋友一个参考。仅供学习之用&#xff0c;勿做坏事儿&#xff0c;哈哈哈&#xff01; 准备工作&…

这些旅行必备APP,你知道几个?

虽说疫情还在继续&#xff0c;但是有时候我们仍然会控制不住自己想要旅游想要呼吸其他地方空气的心情。在了解知悉目的地的防疫政策并做好充足的防疫准备后&#xff0c;我们不妨来一场告别已久的旅行。但在旅行前&#xff0c;请先马住这些旅游必备app。 1.穷游行程助手 行程攻…

APP启动流程解析

前言 当我们点击手机屏幕上的软件图标时&#xff0c;就可以打开这个软件&#xff0c;看似很简单的过程其实包含了许多的底层交互&#xff0c;看了还不明白&#xff0c;欢迎来打我。 一 . 启动流程简介 首先要知道的是&#xff0c;手机屏幕其实就是一个Activity&#xff0c;我…

uniapp实现app跳转app

需要H5唤醒App看这篇文章&#xff1a;H5唤醒App 需求&#xff1a;公司的app跳转公司的另一个app 注意看注释&#xff01;&#xff01;&#xff01; 注意看注释&#xff01;&#xff01;&#xff01; 注意看注释&#xff01;&#xff01;&#xff01; 如何实现呢&#xff0c;…

【Spring】— 动态SQL :<if>元素

动态SQL &#xff1a;元素 在MyBatis中&#xff0c;<if>元素是常用的判断语句&#xff0c;主要用于实现某些简单的条件选择。在实际应用中&#xff0c;我们可能会通过多个条件来精确地查询某个数据。 【示例8-1】下面通过一个具体的案例来演示元素的使用。 &#xff0…

数组及详解冒泡排序

数组及详解冒泡排序 一维数组的创建和初始化一维数组的创建一维数组的初始化一维数组的应用一维数组在内存中的存储 二维数组的创建和初始化二维数组的创建二维数组的初始化二维数组的应用二维数组在内存中的存储 数组越界问题数组作为函数参数数组名的含义及特殊两个例子 冒泡…

chatgpt赋能python:Python中累乘的作用和用法

Python中累乘的作用和用法 在Python编程语言中&#xff0c;累乘指的是连续乘法&#xff0c;或者说是一系列数字的乘积。累乘的概念非常简单&#xff0c;但是实际上它在编程中有着广泛的应用。 累乘在Python中的实现方式 Python中&#xff0c;累乘可以通过多种方式来实现&…

25条关于人生感悟的经典句子

1.活得糊涂的人&#xff0c;容易幸福&#xff1b;活得清醒的人&#xff0c;容易烦恼。这是因为&#xff0c;清醒的人看得太真切&#xff0c;一较真&#xff0c;生活中便烦恼遍地&#xff1b;而糊涂的人&#xff0c;计较得少&#xff0c;虽然活得简单粗糙&#xff0c;却因此觅得…

佛家经典禅语语录句子

【1】&#xff1a;在天地之间觅得一方安详&#xff0c;听风雨&#xff0c;听山语&#xff0c;听禅语。 【2】&#xff1a;心是一方砚&#xff0c;不空亦不满。眼是一片天&#xff0c;不奢亦不贪。字是一盘餐&#xff0c;不腻亦不淡。深邃梅婷花向晚&#xff0c;零落幻影墨里寒。…

知足常乐--每日十问

如果你想走出常规&#xff0c;放松心情&#xff0c;以积极的的心态开始新的一天&#xff0c;那就很有必要以自问的方式开始一天&#xff0c;这些问题会给我们带来力量和好心情. 1、我拥有什么&#xff1f; 通常我们会为自己没有的东西而苦恼&#xff0c;却看不到自己拥有的&…

chatgpt赋能python:Python中的“5“+“5“:了解运算符重载和字符串拼接

Python中的 “5”“5”: 了解运算符重载和字符串拼接 Python中的运算符重载允许我们自定义类型的操作符行为。当我们使用加号运算符将两个对象相加时&#xff0c;Python会动态地确定该使用哪种类型的操作符行为。在使用字符串时&#xff0c;加号可以用于字符串的连接&#xff…

chatgpt赋能python:Python中的提取函数——数据清洗中必不可少的利器

Python中的提取函数——数据清洗中必不可少的利器 数据清洗是数据分析过程中不可或缺的一步&#xff0c;而Python中的提取函数则是数据清洗中必不可少的利器。本文将重点介绍一些Python中常用的提取函数&#xff0c;以帮助数据分析师更好地应对实际问题。 什么是提取函数&…

chatgpt赋能python:Python中的“或”语句:使用方法和示例

Python中的“或”语句&#xff1a;使用方法和示例 在Python编程中&#xff0c;“或"语句表示为"or”&#xff0c;它是逻辑运算符的一种形式。"或"语句可以用于组合两个或多个条件&#xff0c;只要其中一个条件成立&#xff0c;整个语句就会返回True。在本…

css3和h5的新特性

H5的新特性 1. 用于绘画 canvas 元素。 2. 用于媒介回放的 video 和 audio 元素。 3. 本地离线存储 localStorage 长期存储数据&#xff0c;浏览器关闭后数据不丢失&#xff1b; sessionStorage 的数据在浏览器关闭后自动删除。 4. 语意化更好的内容元素&#xf…

六、H5新特性

文章目录 一、H5的兼容二、H5新增特性2.1 语义化标签2.2 增强表单2.3 音频、视频 一、H5的兼容 支持 HTML5的浏览器包括Firefox(火狐浏览器)&#xff0c;IE9及其更高版本&#xff0c;Chrome(谷歌浏览器)&#xff0c;Safari,Opera等&#xff0c;国内的遨游浏览器&#xff0c;以…