
加油话费软件开发的弊端
:招募代理商,你有系统源码,你是零成本的,你可以往下把卡批发给你的代理商,自定义的设置不同面值,不同金额。以100面值的加油卡为例,起订2000张,单价3元每张,那纯利润6000。有的大客户,有很多资源的,你可以根据他的拿卡量自定义的设置价格,你是零成本的,只要赚进来的都是利润。
第二:零售给有车,需要经常加油的朋友。假如一张卡可以帮他们加油省下来100元,卖给他们一张20元。这个对车主是非常有吸引力的,就是大家要思考通过什么样的方式和渠道去让有需求的车主知道并找你买单。不过这个方法并不是多挣钱的途径。
第三:为实体店引流赋能。大家都知道,今年受疫情影响,很多线下实体店都举步维艰,面临生存发展的困难,甚至出现整条街大面积的店铺转让退租的情况!那么在这样的情况下,实体店可以如何通过一些活动,来拓客引流,如何通过一些方案提升店面消费,在2020年的大环境中求生发展呢?
抓住实体店当下需要拓客引流的痛点,我开始大批量的找到线下实体门店去谈合作。通过油卡来帮助他们做活动,刺激消费。
:招募代理商,你有系统源码,你是零成本的,你可以往下把卡批发给你的代理商,自定义的设置不同面值,不同金额。以100面值的加油卡为例,起订2000张,单价3元每张,那纯利润6000。有的大客户,有很多资源的,你可以根据他的拿卡量自定义的设置价格,你是零成本的,只要赚进来的都是利润。
第二:零售给有车,需要经常加油的朋友。假如一张卡可以帮他们加油省下来100元,卖给他们一张20元。这个对车主是非常有吸引力的,就是大家要思考通过什么样的方式和渠道去让有需求的车主知道并找你买单。不过这个方法并不是多挣钱的途径。
第三:为实体店引流赋能。大家都知道,今年受疫情影响,很多线下实体店都举步维艰,面临生存发展的困难,甚至出现整条街大面积的店铺转让退租的情况!那么在这样的情况下,实体店可以如何通过一些活动,来拓客引流,如何通过一些方案提升店面消费,在2020年的大环境中求生发展呢?
抓住实体店当下需要拓客引流的痛点,我开始大批量的找到线下实体门店去谈合作。通过油卡来帮助他们做活动,刺激消费。

uniapp使用jsonp解决跨域请求jsonp接口
第一步首先安装npm i vue-isonp -save
第二步 在main.js中引入
import {VueJsonp} from 'vue-jsonp'不好使就试试import VueJsonp from 'vue-jsonp'
Vue.use(VueJsonp)
第三步 接口调用时
getList() {
var that = this
var data={
你的传参
}
let url = "你的地址";
this.$jsonp(url, data) //jsonp请求
.then(res => {
console.log('+++++++++++',res)
})
.catch(error => {
console.log(error);
})
},
第一步首先安装npm i vue-isonp -save
第二步 在main.js中引入
import {VueJsonp} from 'vue-jsonp'不好使就试试import VueJsonp from 'vue-jsonp'
Vue.use(VueJsonp)
第三步 接口调用时
getList() {
var that = this
var data={
你的传参
}
let url = "你的地址";
this.$jsonp(url, data) //jsonp请求
.then(res => {
console.log('+++++++++++',res)
})
.catch(error => {
console.log(error);
})
},

uni.loadFontFace(Object object) 方法缺少一个重要参数

如图,微信官方文档中对于loadFontFace方法有一个重要的非必填参数global,这个参数直接影响此方法是否能在入口页面调用。
但是在uniapp的对应文档中没有提示有此参数。直接导致loadFontFace 在App.vue中调用时不会有任何成功/失败的反馈。字体也无法顺利加载。
相关修正的PR已经在gitee提交了。
请官方抽空修正npm 包
@dcloudio/types -> uni-app -> uni.d.ts:9828
interface LoadFontFaceOptions {
/**
* 是否全局生效
*/
global: boolean;
/**
* 定义的字体名称
*/
family: string;
/**
* 字体资源的地址。建议格式为 TTF 和 WOFF,WOFF2 在低版本的iOS上会不兼容。
*/
source: string;
/**
* 可选的字体描述符
*/
desc?: LoadFontFaceOptionsDesc;
/**
* 接口调用成功的回调函数
*/
success?: (result: any) => void;
/**
* 接口调用失败的回调函数
*/
fail?: (result: any) => void;
/**
* 接口调用结束的回调函数(调用成功、失败都会执行)
*/
complete?: (result: any) => void;
}
如图,微信官方文档中对于loadFontFace方法有一个重要的非必填参数global,这个参数直接影响此方法是否能在入口页面调用。
但是在uniapp的对应文档中没有提示有此参数。直接导致loadFontFace 在App.vue中调用时不会有任何成功/失败的反馈。字体也无法顺利加载。
相关修正的PR已经在gitee提交了。
请官方抽空修正npm 包
@dcloudio/types -> uni-app -> uni.d.ts:9828
interface LoadFontFaceOptions {
/**
* 是否全局生效
*/
global: boolean;
/**
* 定义的字体名称
*/
family: string;
/**
* 字体资源的地址。建议格式为 TTF 和 WOFF,WOFF2 在低版本的iOS上会不兼容。
*/
source: string;
/**
* 可选的字体描述符
*/
desc?: LoadFontFaceOptionsDesc;
/**
* 接口调用成功的回调函数
*/
success?: (result: any) => void;
/**
* 接口调用失败的回调函数
*/
fail?: (result: any) => void;
/**
* 接口调用结束的回调函数(调用成功、失败都会执行)
*/
complete?: (result: any) => void;
}
收起阅读 »

video 播放本地m3u8问题.
video组件已经非常强大了;
m3u8高清流畅;
mp4支持软/硬解;
mp4小视频播放自动缓存,流畅无缝重复播放;
最新版支持自定义Header;
m3u8/mp4等格式可以通过plus.downloader.createDownload实现缓存下载;
可以满足99.9%的视频播放需求!!!
但是video的不足之处;
播放本地m3u8视频能力不足.
示例:
<template>
<view class="">
<video v-if="src" :src="src" controls @error="err"></video>
<!-- 可以正常播放 -->
<button type="default" @tap="setStr('_www/static/1.m3u8')">本地未加密本地地址</button>
<!-- 不能正常播放 -->
<button type="default" @tap="setStr('_www/static/2.m3u8')">本地未加密网络地址</button>
<!-- 不能正常播放 -->
<button type="default" @tap="setStr('_www/static/encrypt/index.m3u8')">本地加密本地地址</button>
</view>
</template>
<script>
export default {
data() {
return {
src: ''
};
},
onLoad() {
},
methods: {
setStr(src){
this.src = 'file://' + plus.io.convertLocalFileSystemURL(src);
console.log(this.src);
},
err(e) {
console.log(e);
},
}
};
</script>
<style>
</style>
video组件已经非常强大了;
m3u8高清流畅;
mp4支持软/硬解;
mp4小视频播放自动缓存,流畅无缝重复播放;
最新版支持自定义Header;
m3u8/mp4等格式可以通过plus.downloader.createDownload实现缓存下载;
可以满足99.9%的视频播放需求!!!
但是video的不足之处;
播放本地m3u8视频能力不足.
示例:
<template>
<view class="">
<video v-if="src" :src="src" controls @error="err"></video>
<!-- 可以正常播放 -->
<button type="default" @tap="setStr('_www/static/1.m3u8')">本地未加密本地地址</button>
<!-- 不能正常播放 -->
<button type="default" @tap="setStr('_www/static/2.m3u8')">本地未加密网络地址</button>
<!-- 不能正常播放 -->
<button type="default" @tap="setStr('_www/static/encrypt/index.m3u8')">本地加密本地地址</button>
</view>
</template>
<script>
export default {
data() {
return {
src: ''
};
},
onLoad() {
},
methods: {
setStr(src){
this.src = 'file://' + plus.io.convertLocalFileSystemURL(src);
console.log(this.src);
},
err(e) {
console.log(e);
},
}
};
</script>
<style>
</style>
收起阅读 »

win10 子系统 WSL2 Ubuntu20.04添加右键启动
- 先找WSL2安装路径
我是在microsoft store安装,路径在C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2020.812.0_x64__79rhkp1fndgsc\ubuntu2004.exe
- win+r 输入regedit打开注册表
计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\
然后新建一个项 bash here
- 右键bash here 新建两个字符串值 一个默认名字 一个命名为Icon
在Icon中填入值为WSL2的执行路径(1.中有写 需要自己找一下)
在bash here中新建一个项command,在其下新建一个字符串值并在其中填入 执行路径 并在后面加入 -c bash
windows访问Linux目录
ubuntu Linux子系统的目录是在这个目录下
C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
现在在用户家目录创建个文件,可以在windows文件夹下可以看到创建的文件
- 先找WSL2安装路径
我是在microsoft store安装,路径在C:\Program Files\WindowsApps\CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2020.812.0_x64__79rhkp1fndgsc\ubuntu2004.exe
- win+r 输入regedit打开注册表
计算机\HKEY_CLASSES_ROOT\Directory\Background\shell\
然后新建一个项 bash here
- 右键bash here 新建两个字符串值 一个默认名字 一个命名为Icon
在Icon中填入值为WSL2的执行路径(1.中有写 需要自己找一下)
在bash here中新建一个项command,在其下新建一个字符串值并在其中填入 执行路径 并在后面加入 -c bash
windows访问Linux目录
ubuntu Linux子系统的目录是在这个目录下
C:\Users\用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
现在在用户家目录创建个文件,可以在windows文件夹下可以看到创建的文件

网约车APP开发能够解决用户哪些问题?
1、地址位置定位功能
一般需要打车服务的人通常都会先了解当前所在的位置,以及目的地的位置,这样才能够了解到到达目的地的具体时间,避免错过一些关键的会议或者是展会等等,网约车APP开发实现了位置的实时定位,让用户快速了解具体位置并进行智能定位功能。
2、具体价格时长展示
用户通过定位之后,可以在网约车APP软件上了解当前路程所需要花费的时间以及所需要支付的金额等等信息,这些透明化的价格服务展示能够方便用户做出判断,确定该路程的使用打车服务的性价比是否合乎自身需求。
3、在线预约功能
网约车APP软件会为用户提供便捷的线上预约服务,预约的车辆型号有多种类型,例如顺风车、专车以及快车等等都会为用户展示出来,让用户可以自由进行关于打车服务的选择预约。
4、打车平台流程管理功能
对于打车平台来说,网约车APP开发能够帮助平台实现多个打车流程的管理,例如订单方面以及出租车接单匹配等等方面,有效提供平台整体的运营效率。
1、地址位置定位功能
一般需要打车服务的人通常都会先了解当前所在的位置,以及目的地的位置,这样才能够了解到到达目的地的具体时间,避免错过一些关键的会议或者是展会等等,网约车APP开发实现了位置的实时定位,让用户快速了解具体位置并进行智能定位功能。
2、具体价格时长展示
用户通过定位之后,可以在网约车APP软件上了解当前路程所需要花费的时间以及所需要支付的金额等等信息,这些透明化的价格服务展示能够方便用户做出判断,确定该路程的使用打车服务的性价比是否合乎自身需求。
3、在线预约功能
网约车APP软件会为用户提供便捷的线上预约服务,预约的车辆型号有多种类型,例如顺风车、专车以及快车等等都会为用户展示出来,让用户可以自由进行关于打车服务的选择预约。
4、打车平台流程管理功能
对于打车平台来说,网约车APP开发能够帮助平台实现多个打车流程的管理,例如订单方面以及出租车接单匹配等等方面,有效提供平台整体的运营效率。

网约车APP定制开发搭建
网约车APP制作核心功能:
1.多种出行方式:网约车APP的出行选择可以有专车出行、快车出行、拼车出行。
2.预估车费:选择出发地点和出发目的地,可以直接计算出行程、时间和车费。
3.预约用车:若用户在未来几个小时候有需要用车,可以提前预约时间段,可以让司机师傅去上车地点接人。
4.查看司机:打开APP即可查看用户自身离周边近有多少车辆。
5.账户充值:APP可以出一些优惠活动,引导用户充值,让用户更加省钱车行。
6.评估服务:可以根据用户提供的建议弥补平台的不足,从而更精进app服务。
7.线上支付:用户可以根据自己合适的支付方式,选择扣除车费。
8.地图导航:用可以通过APP定位知道自己当前的位置和要去的目的地,司机师傅可以根据用户定位上车地点前去接客户上车,两者都可以显示具体的距离和时间。
网约车APP制作核心功能:
1.多种出行方式:网约车APP的出行选择可以有专车出行、快车出行、拼车出行。
2.预估车费:选择出发地点和出发目的地,可以直接计算出行程、时间和车费。
3.预约用车:若用户在未来几个小时候有需要用车,可以提前预约时间段,可以让司机师傅去上车地点接人。
4.查看司机:打开APP即可查看用户自身离周边近有多少车辆。
5.账户充值:APP可以出一些优惠活动,引导用户充值,让用户更加省钱车行。
6.评估服务:可以根据用户提供的建议弥补平台的不足,从而更精进app服务。
7.线上支付:用户可以根据自己合适的支付方式,选择扣除车费。
8.地图导航:用可以通过APP定位知道自己当前的位置和要去的目的地,司机师傅可以根据用户定位上车地点前去接客户上车,两者都可以显示具体的距离和时间。

男子一口气充了90年爱奇艺会员被刑拘,以后还敢薅羊毛吗?
所谓薅羊毛,简单来说,就是通过一些技巧将小的利益批量化,进而取得比较大的效益。
本质上,薅羊毛就是利用互联网平台的促销活动来进行批量操作,或直接利用漏洞来领取福利。
如今互联网的繁荣,催生了各式各样的促销活动,于是便由此衍生出了一个专门薅羊毛的群体——羊毛党。
举个例子:一个账号可以领取一个红包,羊毛党可以用N个账号去领取N个红包。
这样就导致了商家的资源没有最大化的利用,而是被羊毛党薅走了。
对于人民群众来说,薅羊毛是一项喜闻乐见的活动。
大部分情况下,只要是通过合法合规的途径薅来的羊毛,都是没什么问题的。
但如果通过非法手段薅羊毛的话,那可能就属于违法犯罪行为了。
近日,杭州滨江区警方就破获了一起薅羊毛案件,引发热议。
一口气充近百年的视频会员
鼓励会员通过签到、阅读文章、观看视频、完成任务等方式获取积分、兑换奖品,是很多商家常用的促销方式,但也容易被犯罪分子利用谋取私利。
近日,杭州滨江区警方就宣布破获了一起使用违法手段薅羊毛的案件。
在该案中,一男子通过非法手段为自己的视频会员账号充值逾90年,一直到2111年到期。
据通报,10月10日,滨江某小说软件运营公司发现有人恶意刷取积分,用来兑换QQ、爱奇艺等会员,损失共计1万余元。
警方迅速锁定并抓获重庆的方某。经查,方某通过非法软件,绕开APP抽奖系统次数限制,反复刷取积分,在积分商城兑换成各种网络会员充入自己的账号。
如上图所示,方某给自己的爱奇艺视频会员充值到了2111年,一口气充会员逾90年。
他还交代了其通过类似手法侵犯多家互联网公司的事实。目前,因涉嫌盗窃罪和破坏计算机信息系统罪,方某已被滨江警方刑事拘留,案件正在进一步侦办中。
同一张优惠券充值近7000次
除了方某这样的单人作案外,作案手法类似的网络黑灰产团伙犯罪案也多不胜数。
今年8月初,某APP推出新注册用户充值任意话费立减27元的优惠活动。8月10日夜间至11日凌晨,其系统被连续攻击,话费充值模块损失十万余元。
警方调查后发现,当晚有168个账号,使用32个IP地址登录该APP,累计充值6900余笔。
最后,警方分赴贵州、山东、安徽、四川、河南、重庆等地,将凡某等11名嫌疑人抓获。
据凡某等人交代,他们先后加入过一些发布网上优惠(系统漏洞)的QQ群。通过群聊,11名“志同道合”的羊毛党组建了自己的QQ群。谁发现优惠活动和漏洞,都会发群里共享。
8月10日夜间至11日凌晨,凡某等人利用掌握的系统漏洞,采取技术手段,绕开风控规则,使用同一张优惠券反复充值,共刷单6918笔,获利十余万元。
目前,凡某等11人因涉嫌盗窃罪和破坏计算机信息系统罪,已被滨江警方刑事拘留,案件正在进一步侦办中。
分分钟薅掉400万元羊毛
通关就能提现,这样的游戏推广方式,大家应该也都见到过。
今年9月7日,瑞安警方接某科技有限公司报案,称其公司在核对前期一个游戏推广活动时,发现有人为66元的现金奖励而使用非正常手段进行操作。
该公司发现,异常游戏的用户账号高达6万个,提现金额超400万。
警察当天就将作案人员陈某抓获,并在其住所查获大量作案手机卡。
据悉,杨某是一名程序员,精通外挂软件的制作,该公司推出游戏活动后,杨某就制作了专门用于游戏活动的外挂软件。
然后,周某、陈某使用该软件用154个游戏账户进行批量操作,通过8张绑定的银行卡提现,获利过万元。
薅了1000万美金让同事背锅
薅羊毛这种事情,也不仅仅发生在国内。
据外媒报道,前段时间,前微软软件工程师沃罗德米尔·克瓦舒克便因两年内盗窃价值超过1000万美元的数字货币(代金券)而被判处了九年监禁。
据悉,他在2016年到2018年于微软工作期间,通过公司的一个系统漏洞窃取了大量的数字货币代金券,并且想办法让他的同事来背锅,愣是薅走了1000万美元的羊毛。
如今,在互联网上有很多的薅羊毛活动,多数情况下,薅羊毛无伤大雅,用户图个开心也没有什么不妥。
薅羊毛的确不违法,但绝不能使用违法手段去薅羊毛,典型案例就有去年的拼多多优惠券事件。
警方提醒,用自己的真实信息获取商家优惠券系合理合法利用规则行为,“薅羊毛”的方法一旦涉及非法使用他人信息,甚至利用技术手段突破商家安全机制获利,那就触犯了刑法。
各位在薅羊毛时切记,不能光想着占便宜,否则可能会因小失大。
【转自:程序猿DD】,声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:pufa@dcloud.io 。
所谓薅羊毛,简单来说,就是通过一些技巧将小的利益批量化,进而取得比较大的效益。
本质上,薅羊毛就是利用互联网平台的促销活动来进行批量操作,或直接利用漏洞来领取福利。
如今互联网的繁荣,催生了各式各样的促销活动,于是便由此衍生出了一个专门薅羊毛的群体——羊毛党。
举个例子:一个账号可以领取一个红包,羊毛党可以用N个账号去领取N个红包。
这样就导致了商家的资源没有最大化的利用,而是被羊毛党薅走了。
对于人民群众来说,薅羊毛是一项喜闻乐见的活动。
大部分情况下,只要是通过合法合规的途径薅来的羊毛,都是没什么问题的。
但如果通过非法手段薅羊毛的话,那可能就属于违法犯罪行为了。
近日,杭州滨江区警方就破获了一起薅羊毛案件,引发热议。
一口气充近百年的视频会员
鼓励会员通过签到、阅读文章、观看视频、完成任务等方式获取积分、兑换奖品,是很多商家常用的促销方式,但也容易被犯罪分子利用谋取私利。
近日,杭州滨江区警方就宣布破获了一起使用违法手段薅羊毛的案件。
在该案中,一男子通过非法手段为自己的视频会员账号充值逾90年,一直到2111年到期。
据通报,10月10日,滨江某小说软件运营公司发现有人恶意刷取积分,用来兑换QQ、爱奇艺等会员,损失共计1万余元。
警方迅速锁定并抓获重庆的方某。经查,方某通过非法软件,绕开APP抽奖系统次数限制,反复刷取积分,在积分商城兑换成各种网络会员充入自己的账号。
如上图所示,方某给自己的爱奇艺视频会员充值到了2111年,一口气充会员逾90年。
他还交代了其通过类似手法侵犯多家互联网公司的事实。目前,因涉嫌盗窃罪和破坏计算机信息系统罪,方某已被滨江警方刑事拘留,案件正在进一步侦办中。
同一张优惠券充值近7000次
除了方某这样的单人作案外,作案手法类似的网络黑灰产团伙犯罪案也多不胜数。
今年8月初,某APP推出新注册用户充值任意话费立减27元的优惠活动。8月10日夜间至11日凌晨,其系统被连续攻击,话费充值模块损失十万余元。
警方调查后发现,当晚有168个账号,使用32个IP地址登录该APP,累计充值6900余笔。
最后,警方分赴贵州、山东、安徽、四川、河南、重庆等地,将凡某等11名嫌疑人抓获。
据凡某等人交代,他们先后加入过一些发布网上优惠(系统漏洞)的QQ群。通过群聊,11名“志同道合”的羊毛党组建了自己的QQ群。谁发现优惠活动和漏洞,都会发群里共享。
8月10日夜间至11日凌晨,凡某等人利用掌握的系统漏洞,采取技术手段,绕开风控规则,使用同一张优惠券反复充值,共刷单6918笔,获利十余万元。
目前,凡某等11人因涉嫌盗窃罪和破坏计算机信息系统罪,已被滨江警方刑事拘留,案件正在进一步侦办中。
分分钟薅掉400万元羊毛
通关就能提现,这样的游戏推广方式,大家应该也都见到过。
今年9月7日,瑞安警方接某科技有限公司报案,称其公司在核对前期一个游戏推广活动时,发现有人为66元的现金奖励而使用非正常手段进行操作。
该公司发现,异常游戏的用户账号高达6万个,提现金额超400万。
警察当天就将作案人员陈某抓获,并在其住所查获大量作案手机卡。
据悉,杨某是一名程序员,精通外挂软件的制作,该公司推出游戏活动后,杨某就制作了专门用于游戏活动的外挂软件。
然后,周某、陈某使用该软件用154个游戏账户进行批量操作,通过8张绑定的银行卡提现,获利过万元。
薅了1000万美金让同事背锅
薅羊毛这种事情,也不仅仅发生在国内。
据外媒报道,前段时间,前微软软件工程师沃罗德米尔·克瓦舒克便因两年内盗窃价值超过1000万美元的数字货币(代金券)而被判处了九年监禁。
据悉,他在2016年到2018年于微软工作期间,通过公司的一个系统漏洞窃取了大量的数字货币代金券,并且想办法让他的同事来背锅,愣是薅走了1000万美元的羊毛。
如今,在互联网上有很多的薅羊毛活动,多数情况下,薅羊毛无伤大雅,用户图个开心也没有什么不妥。
薅羊毛的确不违法,但绝不能使用违法手段去薅羊毛,典型案例就有去年的拼多多优惠券事件。
警方提醒,用自己的真实信息获取商家优惠券系合理合法利用规则行为,“薅羊毛”的方法一旦涉及非法使用他人信息,甚至利用技术手段突破商家安全机制获利,那就触犯了刑法。
各位在薅羊毛时切记,不能光想着占便宜,否则可能会因小失大。
【转自:程序猿DD】,声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:pufa@dcloud.io 。
收起阅读 »
uniapp引入第三方js并调用方法
第一步在根目录下新建一个index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title><%= htmlWebpackPlugin.options.title %></title>
/*
在static下新建一个index.css,把公共样式放到里边(我之前写在app.vue里了,我怕不行就复制一份到这个文件里了具体没测)
*/
<link rel="stylesheet" href="<%= BASE_URL %>static/index.css" />
<!-- 引入外部js -->
<script src="你要引入的外部js地址"></script>
</hea
<body>
<noscript>
<strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
这里index.html就完事了
第二步就是配置manifest.json文件
我是这么配置的,在源码视图里(仅供参考,我只是好使了,我记录一下有问题随时评论哈我随时改进)
"h5" : {
"router" : {
"mode" : "history",
"base" : ""
},
"devServer" : {
"port" : 8000,
"disableHostCheck" : true,
"https" : false
},
// 这里引入html
"template" : "index.html",
"optimization" : {
"treeShaking" : {
"enable" : true
}
}
},
第三步调用
//这个是我的返回的点击事件
goBack() {
//调用的第三方js的方法(这里的pa是我jssdk里调用方法的)
pa.goback()
},
玩活,完事之后样式会变乱,我是关了hbuilder再重进然后就好了,再进hbuilder的时候特别慢页面不显示,我关了好几次又进的,不知道你们会不会遇到,小菜鸡一枚,欢迎大神指点
第一步在根目录下新建一个index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title><%= htmlWebpackPlugin.options.title %></title>
/*
在static下新建一个index.css,把公共样式放到里边(我之前写在app.vue里了,我怕不行就复制一份到这个文件里了具体没测)
*/
<link rel="stylesheet" href="<%= BASE_URL %>static/index.css" />
<!-- 引入外部js -->
<script src="你要引入的外部js地址"></script>
</hea
<body>
<noscript>
<strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
这里index.html就完事了
第二步就是配置manifest.json文件
我是这么配置的,在源码视图里(仅供参考,我只是好使了,我记录一下有问题随时评论哈我随时改进)
"h5" : {
"router" : {
"mode" : "history",
"base" : ""
},
"devServer" : {
"port" : 8000,
"disableHostCheck" : true,
"https" : false
},
// 这里引入html
"template" : "index.html",
"optimization" : {
"treeShaking" : {
"enable" : true
}
}
},
第三步调用
//这个是我的返回的点击事件
goBack() {
//调用的第三方js的方法(这里的pa是我jssdk里调用方法的)
pa.goback()
},
玩活,完事之后样式会变乱,我是关了hbuilder再重进然后就好了,再进hbuilder的时候特别慢页面不显示,我关了好几次又进的,不知道你们会不会遇到,小菜鸡一枚,欢迎大神指点
收起阅读 »
将自己的 uni-app 注册进分享列表,接收其他 app 的分享【Android】
社区有很多小伙伴都有此需求,有人实现了但是没有分享经验,经过半天的踩坑,在此分享一下。
- 首先最大的跨越是将在线打包改成了离线打包的形式,这一点一定要注意申请 AppKey 且各处 appId 正确。
- 找到在 官方的离线打包教程 中关于
AndroidManifest.xml
的部分,找到如下代码:<activity android:name="io.dcloud.PandoraEntry" android:configChanges="orientation|keyboardHidden|keyboard|navigation" android:hardwareAccelerated="true" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="user" android:theme="@style/TranslucentTheme" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
添加一个
intent-filter
:<!-- 接收分享 --> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/*" /> </intent-filter>
虽然注册很简单,但是离线打包是一个大坎,如果官方云打包支持就很方便了!
这里接收的是文本,可参考 Android把自己应用加入到系统文件分享中 中的其他类型
- 在 vue/js 业务代码中使用
plus.runtime.arguments
即可获取到分享的内容了!唤醒启动时可以在 vue 页面中的 onReady 接收到,也可以在 onShow 时获取,但是这里有个坑:
如果 app 在后台直接切回来, onShow 会再次获取到本次以分享形式冷启动时的内容,但如果没有完全退出,保留后台,以分享的形式切回,则是此次分享的内容,需要做好判断。
分享一下代码:// 两个变量在 vue 代码之外 let launchArgs = '' // 存储启动时的参数,用于在 onShow 中判断,如果一致则不使用 let ready = false // 因为 onShow 在 onReady 之前触发,所以可能会有没渲染完成的情况,直接跳过 // 省略... onReady() { ready = true this.onShared() }, onShow() { if (launchArgs !== plus.runtime.arguments) { this.onShared() } }, methods: { onShared() { if (ready && plus.runtime.arguments) { launchArgs = plus.runtime.arguments const sharedText = JSON.parse(launchArgs)['android.intent.extra.TEXT'] // console.log('分享的文本内容是:',sharedText) } }, }
社区有很多小伙伴都有此需求,有人实现了但是没有分享经验,经过半天的踩坑,在此分享一下。
- 首先最大的跨越是将在线打包改成了离线打包的形式,这一点一定要注意申请 AppKey 且各处 appId 正确。
- 找到在 官方的离线打包教程 中关于
AndroidManifest.xml
的部分,找到如下代码:<activity android:name="io.dcloud.PandoraEntry" android:configChanges="orientation|keyboardHidden|keyboard|navigation" android:hardwareAccelerated="true" android:label="@string/app_name" android:launchMode="singleTask" android:screenOrientation="user" android:theme="@style/TranslucentTheme" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
添加一个
intent-filter
:<!-- 接收分享 --> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/*" /> </intent-filter>
虽然注册很简单,但是离线打包是一个大坎,如果官方云打包支持就很方便了!
这里接收的是文本,可参考 Android把自己应用加入到系统文件分享中 中的其他类型
- 在 vue/js 业务代码中使用
plus.runtime.arguments
即可获取到分享的内容了!唤醒启动时可以在 vue 页面中的 onReady 接收到,也可以在 onShow 时获取,但是这里有个坑:
如果 app 在后台直接切回来, onShow 会再次获取到本次以分享形式冷启动时的内容,但如果没有完全退出,保留后台,以分享的形式切回,则是此次分享的内容,需要做好判断。
分享一下代码:// 两个变量在 vue 代码之外 let launchArgs = '' // 存储启动时的参数,用于在 onShow 中判断,如果一致则不使用 let ready = false // 因为 onShow 在 onReady 之前触发,所以可能会有没渲染完成的情况,直接跳过 // 省略... onReady() { ready = true this.onShared() }, onShow() { if (launchArgs !== plus.runtime.arguments) { this.onShared() } }, methods: { onShared() { if (ready && plus.runtime.arguments) { launchArgs = plus.runtime.arguments const sharedText = JSON.parse(launchArgs)['android.intent.extra.TEXT'] // console.log('分享的文本内容是:',sharedText) } }, }