最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用uni-app開發(fā)App的超簡易教程

 更新時間:2022年11月22日 12:28:24   作者:飛飛飛魚  
uni-app是一個使用Vue.js開發(fā)所有前端應用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應式)、以及各種小程序,下面這篇文章主要給大家介紹了關于如何利用uni-app開發(fā)App的相關資料,需要的朋友可以參考下

前言

在工作中,有時候會遇到需要開發(fā)app的情況,但是公司又沒有andriond、ios,這個時候如果不想外包,就要前端上場了,本文介紹使用uinapp+webview做一個app殼子,然后整個app使用內(nèi)嵌h5的方式來開發(fā)APP.

app端開發(fā)步驟

1、 申請uniapp開發(fā)者賬號

uniapp是沒有企業(yè)賬號的,所以申請個公共郵箱注冊一下就行

登錄注冊地址: https://dev.dcloud.net.cn/

2、登錄后開始新建應用

3、下載安裝 HBuildder X 。

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

4、新建項目

文件->新建->項目

因為我們不是真的要開發(fā)一個app,只是要一個webview,所以選擇默認模板就行

5、開啟webview,在pages-index里面寫一點點代碼

我們把webview要打開的鏈接放在某臺確認的服務器上面,方便更新已經(jīng)放一些配置,使用webview的@message來監(jiān)聽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}$wppm3vysvbpt=${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

首先是id跟包名這些

然后是app的圖標,準備一個1024x1024的圖標,hbuilder會自動幫轉(zhuǎn)分辨率

app模塊配置,作者只用過推送功能,要額外看uniapp文檔,很容易踩坑。但是uniapp也提供技術支持,不過人家是收費的。個人開發(fā)者也可以在上面回答問題賺點外快,嘿嘿嘿

然后就是權限,一般就是定位功能、攝像頭功能。怎么知道配置項是哪個呢?其實命名很清楚了,camera(相機)、capture_audio_output(捕獲音頻輸出),然后再到uniapp官網(wǎng)上搜索確認一下會保險一點

7、打包

原生打包太麻煩了,直接使用云打包

然后把證書填一填,證書生成教程

注意:

1、快速安心打包可能有問題,用傳統(tǒng)打包

2、注意保存好證書跟密碼,最好上傳到git

3、ios的還得申請ios的開發(fā)賬號,教程

4、其實打包面板上就有“如何生成證書”的按鈕,教程就在里面

5、包名很重要,不能隨便改的,一開始就要起好名字

h5工程配置

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

在html中引入uniapp-sdk

官網(wǎng)提供了cdn,可以自己下載下來放到本地或者自己公司的cdn

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

解決后退問題

因為是整個app就是一個殼子套了h5,所以后退按鈕就會存在退不出頁面的問題,所以需要用uniapp-sdk來調(diào)用原生的后退方法
作者自己寫個簡單的路由控制

const control = {
	// 在這些頁面上后退按鈕點兩次會退出app
    homePaths: ['/index','/login'],
    state: [],
    vueObj: null,
    init(vueObj){
        this.vueObj = vueObj;
        this.addListener();
        return this;
    },
    // 判斷是否首頁(需要后退能退出app的頁面)
    isHome(path) {
    	return this.homePaths.includes(path);
    },
    // 在beforeEnter里面加上它,把路由狀態(tài)保存起來
    pushState(path) {
        if(path!==this.state[this.state.length-1]){
        	this.state.push(path);
        }
    },
    // 頁面在后退的地方調(diào)用它
    back() {
    	// 在首頁等需要退出app的地方直接后退
        if(this.isHome(this.vueObj.$route.path)){
            window.uni.navigateBack();
            return
        }
        // 如果在非app環(huán)境刷新了頁面
        if(this.state.length){
        	// 自己的路由狀態(tài)保存
            this.state.pop();
            // 這里這么寫是因為有些手機后退,頁面狀態(tài)會很奇怪,所有即使直接push上一個頁面進來
            this.vueObj.$router.push({ path: this.state[this.state.length-1] });
        } else {
            history.go(-1);
        }
    },
    // 監(jiān)聽后退按鈕
    addListener(){
    	// 本地開發(fā)的時候不用監(jiān)聽后退
         if(typeof window.plus === 'undefined'){
             console.log("當前不是app環(huán)境");
             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里面方便調(diào)用
Vue.prototype.$historyctrl = HistoryCtrl.init(vueObj);
// 解決彈窗遮罩滑動穿透的問題
document.querySelector('body').addEventListener('touchmove', function(e) {
    e.preventDefault();
})

在頁面中只要使用后退的時候

this.$historyctrl.back();

上架

說實話這么做的app就不適合上架,太low了,基本上就是發(fā)包做給客戶私用的。

如果要上架,需要到每個手機廠商上都注冊企業(yè)開發(fā)者。上傳營業(yè)執(zhí)照是最基礎的,有些要法人身份證,尤其是vivo最惡心,需要法人手持身份證,所以只適合很小的公司,有點規(guī)模的公司只能是另想辦法了,所以我們在看到一些app的開發(fā)商的時候,經(jīng)常是一個不知名的公司(你懂的)。

這里只是忍不住吐槽一下,上架照著各個手機廠商的教程操作就行,傻瓜式操作。

總結(jié)

到此這篇關于利用uni-app開發(fā)App的文章就介紹到這了,更多相關uni-app開發(fā)App內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 原生javascript的ajax請求及后臺PHP響應操作示例

    原生javascript的ajax請求及后臺PHP響應操作示例

    這篇文章主要介紹了原生javascript的ajax請求及后臺PHP響應操作,結(jié)合示例形式分析了JavaScript前臺ajax請求的原理、調(diào)用、后臺PHP響應請求及cookie保存相關操作技巧,需要的朋友可以參考下
    2020-02-02
  • js實現(xiàn)自定義路由

    js實現(xiàn)自定義路由

    本文介紹了js實現(xiàn)自定義路由,主要是事件hashchange的使用,然后根據(jù)我們的業(yè)務需求封裝。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 全面解析Bootstrap彈窗的實現(xiàn)方法

    全面解析Bootstrap彈窗的實現(xiàn)方法

    這篇文章全面解析Bootstrap彈窗的實現(xiàn)方法,對其結(jié)構(gòu)進行詳細分析,感興趣的小伙伴們可以參考一下
    2015-12-12
  • JS模板實現(xiàn)方法

    JS模板實現(xiàn)方法

    我們在使用JS渲染DOM時,一般使用字符串創(chuàng)建DOM然后附加到父元素上,如果附加的DOM是動態(tài)易變的,那需要在函數(shù)中寫大量邏輯。如果在控件實現(xiàn)過程中,這帶來的問題更為嚴重。
    2013-04-04
  • Jil,高效的json序列化和反序列化庫

    Jil,高效的json序列化和反序列化庫

    下面小編就為大家?guī)硪黄狫il,高效的json序列化和反序列化庫。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • layer實現(xiàn)彈出層自動調(diào)節(jié)位置

    layer實現(xiàn)彈出層自動調(diào)節(jié)位置

    今天小編就為大家分享一篇layer實現(xiàn)彈出層自動調(diào)節(jié)位置,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 用javascript實現(xiàn)始終保持打開同一個子窗口以及關閉父窗口同時自動關閉所有子窗口

    用javascript實現(xiàn)始終保持打開同一個子窗口以及關閉父窗口同時自動關閉所有子窗口

    用javascript實現(xiàn)始終保持打開同一個子窗口以及關閉父窗口同時自動關閉所有子窗口...
    2007-06-06
  • js中json對象和字符串的理解及相互轉(zhuǎn)化操作實現(xiàn)方法

    js中json對象和字符串的理解及相互轉(zhuǎn)化操作實現(xiàn)方法

    這篇文章主要介紹了js中json對象和字符串的理解及相互轉(zhuǎn)化操作實現(xiàn)方法,結(jié)合實例形式分析了json對象與字符串的功能以及相互轉(zhuǎn)換操作實現(xiàn)技巧,需要的朋友可以參考下
    2017-09-09
  • JS實現(xiàn)頁面數(shù)據(jù)懶加載

    JS實現(xiàn)頁面數(shù)據(jù)懶加載

    這篇文章主要為大家詳細介紹了JS實現(xiàn)頁面數(shù)據(jù)懶加載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 詳解JavaScript節(jié)流函數(shù)中的Throttle

    詳解JavaScript節(jié)流函數(shù)中的Throttle

    函數(shù)節(jié)流,就是對會頻繁觸發(fā)的函數(shù)事件做一些限制,讓這些函數(shù)可以在每隔一定的時間或者每次滿足一定的條件下再觸發(fā)。一般我們會給他起一個名字throttle。也就是節(jié)流的意思。一般這樣的函數(shù)有 resize事件、ontouchmove事件等。
    2016-07-07

最新評論

莒南县| 桂平市| 运城市| 台东市| 夹江县| 康定县| 定边县| 赫章县| 青海省| 阳曲县| 那曲县| 丰都县| 浦县| 南召县| 万载县| 宁都县| 崇阳县| 陵川县| 海口市| 车险| 吉首市| 开鲁县| 临湘市| 深泽县| 郓城县| 志丹县| 泗水县| 晋江市| 同仁县| 宝清县| 安顺市| 同仁县| 东丽区| 化隆| 新乡市| 仲巴县| 浑源县| 肇州县| 方正县| 灵璧县| 县级市|