APP备案/小程序备案说明记录
APP主办者在填写有关备案材料并实名核验后,由其网络接入服务提供者或应用分发平台通过“国家互联网基础资源管理系统”(即ICP/IP地址/域名信息备案管理系统,以下简称备案系统),向APP主办者住所所在地通信管理局在线提交备案申请。
ICP/IP地址/域名信息备案管理系统:https://beian.miit.gov.cn/#/Integrated/index
互联网信息服务算法备案系统:https://beian.cac.gov.cn/#/index
备案整体流程
备案信息填写(主体信息)、平台初审、工信部短信核验、通管局审核和备案成功
app到各大服务厂商处备案
APP 备案申请材料
APP 名称
APP 图标
APP 运行平台(iOS、安卓)
APP 包名或者 Bundle ID
公钥、MD5值, APP 证书的数字指纹值。 【详情请参见】。
SDK 功能类型与服务厂商信息
接入商可备案的云资源
前置审批文件(新闻、出版、教育、影视、宗教等审批文件)
APP 解析到服务商的域名(域名实名认证与备案主体一致)
阿里云
可选择账号内符合备案要求的云服务器(系统将自动核销该服务器内的ICP备案服务码),或使用ICP备案服务码,详情请查看帮助文档详情请查看帮助文。
App备案说明:https://wanwang.aliyun.com/qualificationrec/bazszl
备案单个网站/App 填写信息指南
腾讯云
备案说明:https://cloud.tencent.com/document/product/243/97691
腾讯云 APP 特征信息填写指南。
支付宝小程序云
用支付宝云开发免费领取域名备案码,支付宝小程序云服务空间在过去90天累计消费满100元时可申请阿里云备案码,消费账单统计时间为T+1,每个空间可申请一个备案码。
领取域名备案码:https://open.alipay.com/portal/forum/post/127201023
uniCloud-支付宝小程序云说明:https://doc.dcloud.net.cn/uniCloud/price.html#alipay
百度智能云
备案说明:https://cloud.baidu.com/doc/BeiAn/s/Sllx46whu
小程序到各自小程序平台提交备案
小程序备案资料
小程序信息
主体信息
微信小程序
小程序备案操作指引:https://developers.weixin.qq.com/miniprogram/product/record/record_guidelines.html
● 新增(未上架)小程序于9月4日开放备案入口
● 存量(已上架)小程序备案入口已开放,开发者可以通过设置页备案入口和首页的吸顶提示进行备案,服务商备案api也同步支持存量小程序备案。为保证开发者备案体验,存量小程序提交量有动态额度调整,若当日配额消耗完毕,备案入口及提交时均会有相关提示,次日早十点会刷新配额。
若微信小程序已上架,请于2024年3月31日前完成备案,逾期未完成备案,平台将按照备案相关规定于2024年4月1日起进行清退处理。详情
如果同一主体下有很多个小程序,需要一个备案通过后,再提交下一个备案申请。同时提交会提示:
抖音小程序
2024年1月22日起,未发起备案提交的小程序将限制版本更新;
2024年2月20日起,未完成备案的小程序将限制版本更新;
2024年3月15日后提交备案的小程序将不保证2024.3.31前平台可初审通过;
2024年3月31日后未完成备案小程序平台将进行清理。
小程序备案入口,详见:抖音开放平台(抖音开放平台 - 抖音小程序、字节小程序、头条小程序)-控制台-选择具体需操作备案的小程序-设置-基础设置-备案信息,点击「去填写」即可。
京东小程序
备案指引:https://mp-docs.jd.com/doc/operation/beian/2300
快手小程序
备案指引:快手小程序平台备案入口开放
小程序安全信息字段补充通知
补充信息:小程序主域名、主域名ip、ip地址归属地
百度小程序
备案指引:https://smartprogram.baidu.com/docs/introduction/register_filings/
https://cloud.baidu.com/doc/BeiAn/s/Llm492h9k
支付宝小程序
备案指引:https://opendocs.alipay.com/mini/0adg3d
常见问题
什么时间节点前需完成备案?
新 APP:2023年9月1日起,需履行备案手续后才能上架应用市场。
存量 APP(已上架):截止2024年3月31日,届时若未及时完成备案,应用市场将按照相关法律法规进行处理。
APP 备案时绑定的域名是否需要先进行网站备案?
不需要,未备案过的域名可以直接用来进行 APP 备案,注意 APP 备案的域名实名与备案主体保持一致。
APP和网站是否可以使用相同的域名?
同一主体下,APP和网站可以使用相同的域名进行备案。
开发者帐号下A应用已完成备案,B应用还需要备案吗?
需要。每一个APP都需要履行APP备案手续。
APP主办者在填写有关备案材料并实名核验后,由其网络接入服务提供者或应用分发平台通过“国家互联网基础资源管理系统”(即ICP/IP地址/域名信息备案管理系统,以下简称备案系统),向APP主办者住所所在地通信管理局在线提交备案申请。
ICP/IP地址/域名信息备案管理系统:https://beian.miit.gov.cn/#/Integrated/index
互联网信息服务算法备案系统:https://beian.cac.gov.cn/#/index
备案整体流程
备案信息填写(主体信息)、平台初审、工信部短信核验、通管局审核和备案成功
app到各大服务厂商处备案
APP 备案申请材料
APP 名称
APP 图标
APP 运行平台(iOS、安卓)
APP 包名或者 Bundle ID
公钥、MD5值, APP 证书的数字指纹值。 【详情请参见】。
SDK 功能类型与服务厂商信息
接入商可备案的云资源
前置审批文件(新闻、出版、教育、影视、宗教等审批文件)
APP 解析到服务商的域名(域名实名认证与备案主体一致)
阿里云
可选择账号内符合备案要求的云服务器(系统将自动核销该服务器内的ICP备案服务码),或使用ICP备案服务码,详情请查看帮助文档详情请查看帮助文。
App备案说明:https://wanwang.aliyun.com/qualificationrec/bazszl
备案单个网站/App 填写信息指南
腾讯云
备案说明:https://cloud.tencent.com/document/product/243/97691
腾讯云 APP 特征信息填写指南。
支付宝小程序云
用支付宝云开发免费领取域名备案码,支付宝小程序云服务空间在过去90天累计消费满100元时可申请阿里云备案码,消费账单统计时间为T+1,每个空间可申请一个备案码。
领取域名备案码:https://open.alipay.com/portal/forum/post/127201023
uniCloud-支付宝小程序云说明:https://doc.dcloud.net.cn/uniCloud/price.html#alipay
百度智能云
备案说明:https://cloud.baidu.com/doc/BeiAn/s/Sllx46whu
小程序到各自小程序平台提交备案
小程序备案资料
小程序信息
主体信息
微信小程序
小程序备案操作指引:https://developers.weixin.qq.com/miniprogram/product/record/record_guidelines.html
● 新增(未上架)小程序于9月4日开放备案入口
● 存量(已上架)小程序备案入口已开放,开发者可以通过设置页备案入口和首页的吸顶提示进行备案,服务商备案api也同步支持存量小程序备案。为保证开发者备案体验,存量小程序提交量有动态额度调整,若当日配额消耗完毕,备案入口及提交时均会有相关提示,次日早十点会刷新配额。
若微信小程序已上架,请于2024年3月31日前完成备案,逾期未完成备案,平台将按照备案相关规定于2024年4月1日起进行清退处理。详情
如果同一主体下有很多个小程序,需要一个备案通过后,再提交下一个备案申请。同时提交会提示:
抖音小程序
2024年1月22日起,未发起备案提交的小程序将限制版本更新;
2024年2月20日起,未完成备案的小程序将限制版本更新;
2024年3月15日后提交备案的小程序将不保证2024.3.31前平台可初审通过;
2024年3月31日后未完成备案小程序平台将进行清理。
小程序备案入口,详见:抖音开放平台(抖音开放平台 - 抖音小程序、字节小程序、头条小程序)-控制台-选择具体需操作备案的小程序-设置-基础设置-备案信息,点击「去填写」即可。
京东小程序
备案指引:https://mp-docs.jd.com/doc/operation/beian/2300
快手小程序
备案指引:快手小程序平台备案入口开放
小程序安全信息字段补充通知
补充信息:小程序主域名、主域名ip、ip地址归属地
百度小程序
备案指引:https://smartprogram.baidu.com/docs/introduction/register_filings/
https://cloud.baidu.com/doc/BeiAn/s/Llm492h9k
支付宝小程序
备案指引:https://opendocs.alipay.com/mini/0adg3d
常见问题
什么时间节点前需完成备案?
新 APP:2023年9月1日起,需履行备案手续后才能上架应用市场。
存量 APP(已上架):截止2024年3月31日,届时若未及时完成备案,应用市场将按照相关法律法规进行处理。
APP 备案时绑定的域名是否需要先进行网站备案?
不需要,未备案过的域名可以直接用来进行 APP 备案,注意 APP 备案的域名实名与备案主体保持一致。
APP和网站是否可以使用相同的域名?
同一主体下,APP和网站可以使用相同的域名进行备案。
开发者帐号下A应用已完成备案,B应用还需要备案吗?
需要。每一个APP都需要履行APP备案手续。
收起阅读 »Wot Design Uni 上新 Swiper 轮播图,赶快进来看看效果吧!
Swiper 轮播图
用于创建轮播图,它支持水平和垂直方向的滑动,可以自定义样式和指示器位置。
地址
先看交互效果
基础用法
通过设置 autoplay
属性控制轮播图是否自动播放,设置 current
属性初始化轮播图展示的滑块,监听滑块 click
来处理点击事件,而每一页轮播结束后,会触发 change
事件。通过
<wd-swiper :list="swiperList" autoplay :current="0" @click="handleClick" @change="onChange"></wd-swiper>
const swiperList = ref([
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/redpanda.jpg',
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/capybara.jpg',
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/panda.jpg',
'https://img.yzcdn.cn/vant/cat.jpeg',
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/meng.jpg'
])
function handleClick(e) {
console.log(e)
}
function onChange(e) {
console.log(e)
}
点条状指示器
<wd-swiper :list="swiperList" autoplay :current="1" :indicator="{ type: 'dots-bar' }" @click="handleClick" @change="onChange"></wd-swiper>
数字指示器
<wd-swiper
:list="swiperList"
autoplay
:current="2"
:indicator="{ type: 'fraction' }"
indicatorPosition="bottom-right"
@click="handleClick"
@change="onChange"
></wd-swiper>
手动切换
<wd-swiper
:list="swiperList"
:autoplay="false"
:current="3"
:indicator="{ showControls: true }"
:loop="false"
@click="handleClick"
@change="onChange"
></wd-swiper>
卡片样式
设置 previousMargin
和 nextMargin
实现卡片轮播的样式。
<view class="card-swiper">
<wd-swiper
autoplay
:current="4"
custom-indicator-class="custom-indicator-class"
custom-image-class="custom-image"
custom-next-image-class="custom-image-prev"
custom-prev-image-class="custom-image-prev"
:indicator="{ type: 'dots' }"
:list="swiperList"
previousMargin="24px"
nextMargin="24px"
></wd-swiper>
</view>
.card-swiper {
--wot-swiper-radius: 0;
--wot-swiper-item-padding: 0 24rpx;
--wot-swiper-nav-dot-color: #e7e7e7;
--wot-swiper-nav-dot-active-color: #4d80f0;
padding-bottom: 24rpx;
:deep(.custom-indicator-class) {
bottom: -16px;
}
:deep(.custom-image) {
border-radius: 12rpx;
}
:deep(.custom-image-prev) {
height: 168px !important;
}
}
同时展示 2 个滑块
设置 display-multiple-items
属性,控制同时展示的滑块数量。
<view class="card-swiper">
<wd-swiper
autoplay
:current="4"
:display-multiple-items="2"
custom-indicator-class="custom-indicator-class"
custom-image-class="custom-image"
custom-next-image-class="custom-image-prev"
custom-prev-image-class="custom-image-prev"
:indicator="{ type: 'dots' }"
:list="swiperList"
previousMargin="24px"
nextMargin="24px"
></wd-swiper>
</view>
.card-swiper {
--wot-swiper-radius: 0;
--wot-swiper-item-padding: 0 24rpx;
--wot-swiper-nav-dot-color: #e7e7e7;
--wot-swiper-nav-dot-active-color: #4d80f0;
padding-bottom: 24rpx;
:deep(.custom-indicator-class) {
bottom: -16px;
}
:deep(.custom-image) {
border-radius: 12rpx;
}
:deep(.custom-image-prev) {
height: 168px !important;
}
}
垂直方向
direction
设置为 vertical
后滑块会纵向排列。
<wd-swiper
:list="swiperList"
direction="vertical"
indicatorPosition="right"
autoplay
:current="1"
:indicator="{ type: 'dots-bar' }"
@click="handleClick"
@change="onChange"
></wd-swiper>
自定义指示器
通过 indicator
插槽可以自定义指示器的样式。
<wd-swiper :list="swiperList" direction="vertical" indicatorPosition="right" autoplay :current="1" @click="handleClick" @change="onChange">
<template #indicator="{ current, total }">
<view class="custom-indicator" style="position: absolute; bottom: 24rpx; right: 24rpx">{{ current + 1 }}/{{ total }}</view>
</template>
</wd-swiper>
.custom-indicator {
padding: 0 12rpx;
height: 48rpx;
line-height: 48rpx;
border-radius: 45%;
background: rgba(0, 0, 0, 0.6);
color: #ffffff;
font-size: 24rpx;
}
Attributes
参数 | 说明 | 类型 | 可选值 | 默认值 | 最低版本 |
---|---|---|---|---|---|
autoplay | 是否自动播放 | boolean |
- | true | 0.1.22 |
current | 当前轮播在哪一项(下标) | number |
- | 0 | 0.1.22 |
direction | 轮播滑动方向 | DirectionType |
horizontal, vertical |
horizontal | 0.1.22 |
displayMultipleItems | 同时显示的滑块数量 | number |
- | 1 | 0.1.22 |
duration | 滑动动画时长 | number |
- | 300 | 0.1.22 |
easingFunction | 切换缓动动画类型(微信小程序、快手小程序、京东小程序) | EasingType |
- | default | 0.1.22 |
height | 轮播的高度 | string \| number |
- | 192 | 0.1.22 |
interval | 轮播间隔时间 | number |
- | 5000 | 0.1.22 |
list | 图片列表 | string[] \| SwiperList[] |
- | - | 0.1.22 |
loop | 是否循环播放 | boolean |
- | true | 0.1.22 |
nextMargin | 后边距 | string \| number |
- | 0 | 0.1.22 |
indicatorPosition | 指示器展示位置 | IndicatorPositionType |
left, top-left, top, top-right, bottom-left, bottom, bottom-right, right |
bottom | 0.1.22 |
previousMargin | 前边距 | string \| number |
- | 0 | 0.1.22 |
snapToEdge | 边距是否应用到第一个、最后一个元素 | boolean |
- | false | 0.1.22 |
indicator | 指示器全部配置 | SwiperIndicatorProps \| boolean |
- | true | 0.1.22 |
customStyle | 外部自定义样式 | string |
- | '' | 0.1.22 |
DirectionType
轮播滑动方向,可选值为 'horizontal'
和 'vertical'
。
EasingType
切换缓动动画类型,可选值为 'default'
、'linear'
、'easeInCubic'
、'easeOutCubic'
和 'easeInOutCubic'
。
IndicatorPositionType
页码信息展示位置,可选值为 'left'
、'top-left'
、'top'
、'top-right'
、'bottom-left'
、'bottom'
、'bottom-right'
和 'right'
。
SwiperList
轮播图项的列表配置,包括 value
和 ariaLabel
属性。
SwiperIndicatorProps
参数 | 说明 | 类型 | 可选值 | 默认值 | 最低版本 |
---|---|---|---|---|---|
current | 当前轮播在哪一项(下标) | Number | - | 0 | 0.1.22 |
direction | 轮播滑动方向 | DirectionType | horizontal, vertical |
horizontal | 0.1.22 |
min-show-num | 小于这个数字不会显示导航器 | Number | - | 2 | 0.1.22 |
pagination-position | 页码信息展示位置 | IndicatorPositionType | left, top-left, top, top-right, bottom-left, bottom, bottom-right, right |
bottom | 0.1.22 |
show-controls | 是否显示控制按钮 | Boolean | - | false | 0.1.22 |
total | 总共的项数 | Number | - | 0 | 0.1.22 |
type | 导航器类型 | SwiperIndicatorType | dots, dots-bar, fraction |
dots | 0.1.22 |
autoplay | 是否自动播放 | boolean | - | true | 0.1.22 |
Events
事件名称 | 说明 | 参数 | 最低版本 |
---|---|---|---|
click | 点击轮播项时触发 | (index: number) |
0.1.22 |
change | 轮播切换时触发 | (current: number, source: 'autoplay' \| 'touch' \| 'nav') |
0.1.22 |
Slot
name | 说明 | 参数 | 最低版本 |
---|---|---|---|
indicator | 自定义指示器 | { current: number, total: number } |
0.1.22 |
外部样式类
类名 | 说明 | 最低版本 |
---|---|---|
customClass | 外部自定义类名 | 0.1.22 |
customIndicatorClass | 自定义指示器类名 | 0.1.22 |
customImageClass | 自定义图片类名 | 0.1.22 |
customPrevImageClass | 自定义上一个图片类名 | 0.1.22 |
customNextImageClass | 自定义下一个图片类名 | 0.1.22 |
地址
Swiper 轮播图
用于创建轮播图,它支持水平和垂直方向的滑动,可以自定义样式和指示器位置。
地址
先看交互效果
基础用法
通过设置 autoplay
属性控制轮播图是否自动播放,设置 current
属性初始化轮播图展示的滑块,监听滑块 click
来处理点击事件,而每一页轮播结束后,会触发 change
事件。通过
<wd-swiper :list="swiperList" autoplay :current="0" @click="handleClick" @change="onChange"></wd-swiper>
const swiperList = ref([
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/redpanda.jpg',
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/capybara.jpg',
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/panda.jpg',
'https://img.yzcdn.cn/vant/cat.jpeg',
'https://cdn.jsdelivr.net/npm/wot-design-uni-assets/meng.jpg'
])
function handleClick(e) {
console.log(e)
}
function onChange(e) {
console.log(e)
}
点条状指示器
<wd-swiper :list="swiperList" autoplay :current="1" :indicator="{ type: 'dots-bar' }" @click="handleClick" @change="onChange"></wd-swiper>
数字指示器
<wd-swiper
:list="swiperList"
autoplay
:current="2"
:indicator="{ type: 'fraction' }"
indicatorPosition="bottom-right"
@click="handleClick"
@change="onChange"
></wd-swiper>
手动切换
<wd-swiper
:list="swiperList"
:autoplay="false"
:current="3"
:indicator="{ showControls: true }"
:loop="false"
@click="handleClick"
@change="onChange"
></wd-swiper>
卡片样式
设置 previousMargin
和 nextMargin
实现卡片轮播的样式。
<view class="card-swiper">
<wd-swiper
autoplay
:current="4"
custom-indicator-class="custom-indicator-class"
custom-image-class="custom-image"
custom-next-image-class="custom-image-prev"
custom-prev-image-class="custom-image-prev"
:indicator="{ type: 'dots' }"
:list="swiperList"
previousMargin="24px"
nextMargin="24px"
></wd-swiper>
</view>
.card-swiper {
--wot-swiper-radius: 0;
--wot-swiper-item-padding: 0 24rpx;
--wot-swiper-nav-dot-color: #e7e7e7;
--wot-swiper-nav-dot-active-color: #4d80f0;
padding-bottom: 24rpx;
:deep(.custom-indicator-class) {
bottom: -16px;
}
:deep(.custom-image) {
border-radius: 12rpx;
}
:deep(.custom-image-prev) {
height: 168px !important;
}
}
同时展示 2 个滑块
设置 display-multiple-items
属性,控制同时展示的滑块数量。
<view class="card-swiper">
<wd-swiper
autoplay
:current="4"
:display-multiple-items="2"
custom-indicator-class="custom-indicator-class"
custom-image-class="custom-image"
custom-next-image-class="custom-image-prev"
custom-prev-image-class="custom-image-prev"
:indicator="{ type: 'dots' }"
:list="swiperList"
previousMargin="24px"
nextMargin="24px"
></wd-swiper>
</view>
.card-swiper {
--wot-swiper-radius: 0;
--wot-swiper-item-padding: 0 24rpx;
--wot-swiper-nav-dot-color: #e7e7e7;
--wot-swiper-nav-dot-active-color: #4d80f0;
padding-bottom: 24rpx;
:deep(.custom-indicator-class) {
bottom: -16px;
}
:deep(.custom-image) {
border-radius: 12rpx;
}
:deep(.custom-image-prev) {
height: 168px !important;
}
}
垂直方向
direction
设置为 vertical
后滑块会纵向排列。
<wd-swiper
:list="swiperList"
direction="vertical"
indicatorPosition="right"
autoplay
:current="1"
:indicator="{ type: 'dots-bar' }"
@click="handleClick"
@change="onChange"
></wd-swiper>
自定义指示器
通过 indicator
插槽可以自定义指示器的样式。
<wd-swiper :list="swiperList" direction="vertical" indicatorPosition="right" autoplay :current="1" @click="handleClick" @change="onChange">
<template #indicator="{ current, total }">
<view class="custom-indicator" style="position: absolute; bottom: 24rpx; right: 24rpx">{{ current + 1 }}/{{ total }}</view>
</template>
</wd-swiper>
.custom-indicator {
padding: 0 12rpx;
height: 48rpx;
line-height: 48rpx;
border-radius: 45%;
background: rgba(0, 0, 0, 0.6);
color: #ffffff;
font-size: 24rpx;
}
Attributes
参数 | 说明 | 类型 | 可选值 | 默认值 | 最低版本 |
---|---|---|---|---|---|
autoplay | 是否自动播放 | boolean |
- | true | 0.1.22 |
current | 当前轮播在哪一项(下标) | number |
- | 0 | 0.1.22 |
direction | 轮播滑动方向 | DirectionType |
horizontal, vertical |
horizontal | 0.1.22 |
displayMultipleItems | 同时显示的滑块数量 | number |
- | 1 | 0.1.22 |
duration | 滑动动画时长 | number |
- | 300 | 0.1.22 |
easingFunction | 切换缓动动画类型(微信小程序、快手小程序、京东小程序) | EasingType |
- | default | 0.1.22 |
height | 轮播的高度 | string \| number |
- | 192 | 0.1.22 |
interval | 轮播间隔时间 | number |
- | 5000 | 0.1.22 |
list | 图片列表 | string[] \| SwiperList[] |
- | - | 0.1.22 |
loop | 是否循环播放 | boolean |
- | true | 0.1.22 |
nextMargin | 后边距 | string \| number |
- | 0 | 0.1.22 |
indicatorPosition | 指示器展示位置 | IndicatorPositionType |
left, top-left, top, top-right, bottom-left, bottom, bottom-right, right |
bottom | 0.1.22 |
previousMargin | 前边距 | string \| number |
- | 0 | 0.1.22 |
snapToEdge | 边距是否应用到第一个、最后一个元素 | boolean |
- | false | 0.1.22 |
indicator | 指示器全部配置 | SwiperIndicatorProps \| boolean |
- | true | 0.1.22 |
customStyle | 外部自定义样式 | string |
- | '' | 0.1.22 |
DirectionType
轮播滑动方向,可选值为 'horizontal'
和 'vertical'
。
EasingType
切换缓动动画类型,可选值为 'default'
、'linear'
、'easeInCubic'
、'easeOutCubic'
和 'easeInOutCubic'
。
IndicatorPositionType
页码信息展示位置,可选值为 'left'
、'top-left'
、'top'
、'top-right'
、'bottom-left'
、'bottom'
、'bottom-right'
和 'right'
。
SwiperList
轮播图项的列表配置,包括 value
和 ariaLabel
属性。
SwiperIndicatorProps
参数 | 说明 | 类型 | 可选值 | 默认值 | 最低版本 |
---|---|---|---|---|---|
current | 当前轮播在哪一项(下标) | Number | - | 0 | 0.1.22 |
direction | 轮播滑动方向 | DirectionType | horizontal, vertical |
horizontal | 0.1.22 |
min-show-num | 小于这个数字不会显示导航器 | Number | - | 2 | 0.1.22 |
pagination-position | 页码信息展示位置 | IndicatorPositionType | left, top-left, top, top-right, bottom-left, bottom, bottom-right, right |
bottom | 0.1.22 |
show-controls | 是否显示控制按钮 | Boolean | - | false | 0.1.22 |
total | 总共的项数 | Number | - | 0 | 0.1.22 |
type | 导航器类型 | SwiperIndicatorType | dots, dots-bar, fraction |
dots | 0.1.22 |
autoplay | 是否自动播放 | boolean | - | true | 0.1.22 |
Events
事件名称 | 说明 | 参数 | 最低版本 |
---|---|---|---|
click | 点击轮播项时触发 | (index: number) |
0.1.22 |
change | 轮播切换时触发 | (current: number, source: 'autoplay' \| 'touch' \| 'nav') |
0.1.22 |
Slot
name | 说明 | 参数 | 最低版本 |
---|---|---|---|
indicator | 自定义指示器 | { current: number, total: number } |
0.1.22 |
外部样式类
类名 | 说明 | 最低版本 |
---|---|---|
customClass | 外部自定义类名 | 0.1.22 |
customIndicatorClass | 自定义指示器类名 | 0.1.22 |
customImageClass | 自定义图片类名 | 0.1.22 |
customPrevImageClass | 自定义上一个图片类名 | 0.1.22 |
customNextImageClass | 自定义下一个图片类名 | 0.1.22 |
地址
收起阅读 »求插件,uni-app,vue3
需求-TreeSelect 树形选择
- 选择任意级别,任何节点都可以被选择
- 可筛选,模糊搜索,可递归搜索
需求-TreeSelect 树形选择
- 选择任意级别,任何节点都可以被选择
- 可筛选,模糊搜索,可递归搜索
uni-app如何连接mumu模拟器12调试
1. mumu模拟器下载与安装
进入mumu浏览器官方网站下载安装,官方下载连接
2.mumu模拟器设置
a.MuMu模拟器ADB端口信息规则
模拟器端口为动态端口,一般模拟器本体(即多开器内序号0)的端口为16384,多开的模拟器会在此基础上加32,如:
0号16384,1号16416,2号16448,以此类推;
如果模拟器端口被占用了,会在原端口加1,如:
16384被占用,加1,即16385;
另,多开的端口不受占用后的端口影响,依旧在16384的基础上加32。
b.找到自己安装的模拟器的ADB端口
很重要:
c.MuMu模拟器12如何连接adb
执行adb连接命令:
第一步,打开adb安装路径,参考下图,点击地址栏输入CMD,再点击回车键呼出命令提示符窗口;
第二步,在命令提示符窗口内输入adb.exe connect 127.0.0.1:XXXXX,之后点击回车。
注:XXXXX为你安装的模拟器端口号,请参考打开的模拟器问题诊断内展示端口号或MuMu多开器12内的ADB端口信息后再输入。
【自动脚本】
将下段代码另存为.bat文件,双击即可执行。主要更换自己的adb路径和端口
start cmd /k "cd/d D:\Program Files\Netease\MuMuPlayer-12.0\shell && adb connect 127.0.0.1:16384"
3.uni-app 运行设置
打开HBuilder X 依次找到 工具 -->设置 -->运行设置 ,找到ADB路径和Android模拟器端口,
注意:此处的adb路径
(1)可以使用mumu模拟器的路径 \Netease\MuMuPlayer-12.0\shell,
(2)可以使用AndroidSDK的 \android-sdk\platform-tools
(3)可以使用HBuilder 的默认路径
4.运行uni-app项目-运行到手机或模拟器
常规操作,运行到模拟器即可看到Android设备,选中即可运行。
总结,我先安装的Android studio,但是辜负我一腔热忱,调试半天属实不好用,转而使用mumu模拟器,轻快好省,推荐。
1. mumu模拟器下载与安装
进入mumu浏览器官方网站下载安装,官方下载连接
2.mumu模拟器设置
a.MuMu模拟器ADB端口信息规则
模拟器端口为动态端口,一般模拟器本体(即多开器内序号0)的端口为16384,多开的模拟器会在此基础上加32,如:
0号16384,1号16416,2号16448,以此类推;
如果模拟器端口被占用了,会在原端口加1,如:
16384被占用,加1,即16385;
另,多开的端口不受占用后的端口影响,依旧在16384的基础上加32。
b.找到自己安装的模拟器的ADB端口
很重要:
c.MuMu模拟器12如何连接adb
执行adb连接命令:
第一步,打开adb安装路径,参考下图,点击地址栏输入CMD,再点击回车键呼出命令提示符窗口;
第二步,在命令提示符窗口内输入adb.exe connect 127.0.0.1:XXXXX,之后点击回车。
注:XXXXX为你安装的模拟器端口号,请参考打开的模拟器问题诊断内展示端口号或MuMu多开器12内的ADB端口信息后再输入。
【自动脚本】
将下段代码另存为.bat文件,双击即可执行。主要更换自己的adb路径和端口
start cmd /k "cd/d D:\Program Files\Netease\MuMuPlayer-12.0\shell && adb connect 127.0.0.1:16384"
3.uni-app 运行设置
打开HBuilder X 依次找到 工具 -->设置 -->运行设置 ,找到ADB路径和Android模拟器端口,
注意:此处的adb路径
(1)可以使用mumu模拟器的路径 \Netease\MuMuPlayer-12.0\shell,
(2)可以使用AndroidSDK的 \android-sdk\platform-tools
(3)可以使用HBuilder 的默认路径
4.运行uni-app项目-运行到手机或模拟器
常规操作,运行到模拟器即可看到Android设备,选中即可运行。
总结,我先安装的Android studio,但是辜负我一腔热忱,调试半天属实不好用,转而使用mumu模拟器,轻快好省,推荐。
收起阅读 »【新人分享】uni-starter实现登录后返回登录前页面的方法
common/appInit.js内新建拦截器
uni.addInterceptor('navigateTo', {
invoke(args) {
let redirectUrl = ''
if (uni.getStorageSync('uniIdRedirectUrl2')) {
redirectUrl = '?uniIdRedirectUrl=' + decodeURIComponent(uni.getStorageSync(
'uniIdRedirectUrl2'))
console.log("缓存页 1->" + uni.getStorageSync('uniIdRedirectUrl2'))
} else {
console.log("uniIdRedirectUrl不存在")
}
let pages = getCurrentPages() //获取加载的页面
let newPages = pages.map(item => item.route)
let nowUrl = args.url //这个是当前页面
let lastPage = newPages.length && newPages[newPages.length - 1] //这个是上一个页面
//当 当前页面不是登录页时,缓存当前页 当 当前页是登录页,上一页不是登录页时,缓存上一页
if (!nowUrl.includes("/login")) {
uni.setStorageSync('uniIdRedirectUrl2', '/' + nowUrl);
} else if (!lastPage.includes("/login")) {
uni.setStorageSync('uniIdRedirectUrl2', '/' + lastPage);
}
console.log("缓存页 2->" + uni.getStorageSync('uniIdRedirectUrl2'))
//当 当前页是登录页 且页面不含上页信息时 加上返回页地址
if (nowUrl.includes("/login") && !nowUrl.includes("?uniIdRedirectUrl=")) {
console.log("遇到login拼接新地址->" + uni.getStorageSync('uniIdRedirectUrl2'))
args.url = nowUrl + redirectUrl
}
},
success(args) {
console.log("success", args)
},
fail(err) {
console.log('interceptor-fail', err)
},
complete(res) {
console.log('interceptor-complete', res)
}
})
此方法用户名密码登录时有效,微信登录还没找到问题出在哪?有路过的高手请指教一下,免得我们新人苦苦摸索,谢谢啦
common/appInit.js内新建拦截器
uni.addInterceptor('navigateTo', {
invoke(args) {
let redirectUrl = ''
if (uni.getStorageSync('uniIdRedirectUrl2')) {
redirectUrl = '?uniIdRedirectUrl=' + decodeURIComponent(uni.getStorageSync(
'uniIdRedirectUrl2'))
console.log("缓存页 1->" + uni.getStorageSync('uniIdRedirectUrl2'))
} else {
console.log("uniIdRedirectUrl不存在")
}
let pages = getCurrentPages() //获取加载的页面
let newPages = pages.map(item => item.route)
let nowUrl = args.url //这个是当前页面
let lastPage = newPages.length && newPages[newPages.length - 1] //这个是上一个页面
//当 当前页面不是登录页时,缓存当前页 当 当前页是登录页,上一页不是登录页时,缓存上一页
if (!nowUrl.includes("/login")) {
uni.setStorageSync('uniIdRedirectUrl2', '/' + nowUrl);
} else if (!lastPage.includes("/login")) {
uni.setStorageSync('uniIdRedirectUrl2', '/' + lastPage);
}
console.log("缓存页 2->" + uni.getStorageSync('uniIdRedirectUrl2'))
//当 当前页是登录页 且页面不含上页信息时 加上返回页地址
if (nowUrl.includes("/login") && !nowUrl.includes("?uniIdRedirectUrl=")) {
console.log("遇到login拼接新地址->" + uni.getStorageSync('uniIdRedirectUrl2'))
args.url = nowUrl + redirectUrl
}
},
success(args) {
console.log("success", args)
},
fail(err) {
console.log('interceptor-fail', err)
},
complete(res) {
console.log('interceptor-complete', res)
}
})
此方法用户名密码登录时有效,微信登录还没找到问题出在哪?有路过的高手请指教一下,免得我们新人苦苦摸索,谢谢啦
收起阅读 »关于编辑器3.8.12打包APP报毒问题
经反复测试
1.使用传统打包方式(上传代码及证书)打包的安装包在所有手机管家都会报中等病毒感染
2.使用快速安心打包则绿色安全
报中等病毒,风险名称
Android.Virus.Gray.Mixopteroidea
具体原因不详,分享经验,仅供参考
经反复测试
1.使用传统打包方式(上传代码及证书)打包的安装包在所有手机管家都会报中等病毒感染
2.使用快速安心打包则绿色安全
报中等病毒,风险名称
Android.Virus.Gray.Mixopteroidea
具体原因不详,分享经验,仅供参考
离线打包场景 plus.runtime.install 安装失败
这个问题好久了,找了好多资料没有解决,准备想着等项目结束了要是还搞不定就抛弃离线打包了。
今天偶然在文档里发现了一个关键的信息,貌似跟安装不了有关系。
首先我的SDK版本是3.8.7,是从旧版本升级上来的,这个版本很关键,按照之前的旧文档配置的离线打包环境,升级3.8.7后,只替换了已经存在的 aar,导致缺少了 3.8.7 版本中一个关键的 install-apk-release.aar 包,然后死活安装不了,也没有具体的报错信息。
https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android.html#%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83
说起来我还真是碰巧,正好赶上了这个版本差。
这个问题好久了,找了好多资料没有解决,准备想着等项目结束了要是还搞不定就抛弃离线打包了。
今天偶然在文档里发现了一个关键的信息,貌似跟安装不了有关系。
首先我的SDK版本是3.8.7,是从旧版本升级上来的,这个版本很关键,按照之前的旧文档配置的离线打包环境,升级3.8.7后,只替换了已经存在的 aar,导致缺少了 3.8.7 版本中一个关键的 install-apk-release.aar 包,然后死活安装不了,也没有具体的报错信息。
https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android.html#%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83
说起来我还真是碰巧,正好赶上了这个版本差。
收起阅读 »Uniapp 底部导航栏 自定义 tabBar 全端 全页面引用跳转 组件
TC-tabBar
请观看
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/tabbargif.gif" width="300" height="570"></img>
使用教程
第一步
引入组件
<template>
<TC-tabBar :zhi="zhi"></TC-tabBar>
</template>
第二步
将给zhi赋值进行传送给组件
备注:zhi按照底部按钮对应的页面中填写该按钮的索引(从0开始)
<script>
export default {
data() {
return {
zhi:1 //填写对应按钮的索引
}
},
onLoad() {
},
methods: {
}
}
</script>
第三步
在uni_modules/TC-tabBar/components/TC-tabBar/TC-tabBar中自行修改自己对应的页面路径
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/1.png"></img>
部分代码
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/tabbar1.png"></img>
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/tabbar2.png"></img>
V:ANKR6699
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/techuang.jpg"></img>
链接:https://ext.dcloud.net.cn/plugin?id=14784
TC-tabBar
请观看
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/tabbargif.gif" width="300" height="570"></img>
使用教程
第一步
引入组件
<template>
<TC-tabBar :zhi="zhi"></TC-tabBar>
</template>
第二步
将给zhi赋值进行传送给组件
备注:zhi按照底部按钮对应的页面中填写该按钮的索引(从0开始)
<script>
export default {
data() {
return {
zhi:1 //填写对应按钮的索引
}
},
onLoad() {
},
methods: {
}
}
</script>
第三步
在uni_modules/TC-tabBar/components/TC-tabBar/TC-tabBar中自行修改自己对应的页面路径
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/1.png"></img>
部分代码
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/tabbar1.png"></img>
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/截图/tabbar2.png"></img>
V:ANKR6699
<img src="https://mp-5833fa1d-07f4-49f6-b120-c94019485776.cdn.bspapp.com/techuang.jpg"></img>
链接:https://ext.dcloud.net.cn/plugin?id=14784
收起阅读 »安卓软件彻底重启
重启app,会杀掉所有进程以及服务后重启软件;plus.runtime.restart()只能重新加载,并非彻底重启,导致之前的服务进程无法退出
const main = plus.android.runtimeMainActivity();
const Intent = plus.android.importClass("android.content.Intent");
const Process = plus.android.importClass("android.os.Process");
const intentMainActivity = new Intent(Intent.ACTION_MAIN);
const packageName = main.getPackageName();
intentMainActivity.setClassName(packageName, "io.dcloud.PandoraEntry");
intentMainActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
main.startActivity(intentMainActivity);
Process.killProcess(Process.myPid());
重启app,会杀掉所有进程以及服务后重启软件;plus.runtime.restart()只能重新加载,并非彻底重启,导致之前的服务进程无法退出
const main = plus.android.runtimeMainActivity();
const Intent = plus.android.importClass("android.content.Intent");
const Process = plus.android.importClass("android.os.Process");
const intentMainActivity = new Intent(Intent.ACTION_MAIN);
const packageName = main.getPackageName();
intentMainActivity.setClassName(packageName, "io.dcloud.PandoraEntry");
intentMainActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
main.startActivity(intentMainActivity);
Process.killProcess(Process.myPid());
收起阅读 »