HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

文档api的平台差异说明能否改进一下?

文档上的属性平台差异说明真的看的是模棱两可。
比如某个api属性,平台差异只写上H5+,那么是支持还是不支持?我和同事两脸懵逼啊!只能去测试,然后其他人估计也是差不多这样,阅读和开发起来效率就不是很好了。希望官方能改进,写好文档的东西也不是很难,强烈建议写明白清楚!
如下图,我一开始以为是支持除了h5不支持,结果测试了半天才发现根本不支持!
而且这样的情况已经不是一次两次了,有的就还好,有的就需要自己看着办?文档本来就应该清晰明了啊

继续阅读 »

文档上的属性平台差异说明真的看的是模棱两可。
比如某个api属性,平台差异只写上H5+,那么是支持还是不支持?我和同事两脸懵逼啊!只能去测试,然后其他人估计也是差不多这样,阅读和开发起来效率就不是很好了。希望官方能改进,写好文档的东西也不是很难,强烈建议写明白清楚!
如下图,我一开始以为是支持除了h5不支持,结果测试了半天才发现根本不支持!
而且这样的情况已经不是一次两次了,有的就还好,有的就需要自己看着办?文档本来就应该清晰明了啊

收起阅读 »

Hippy

Hippy腾讯?

Hippy腾讯?

WebStorm 开发 UNI-APP 配置

推送插件配置指南

=======================================================================================
知识点:
=======================================================================================
引自 W3School 教程:
=======================================================================================
XSD
XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 描述 XML 文档的结构。
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。
=======================================================================================
DTD
文档类型定义(Document Type Definition)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
<!DOCTYPE 根元素 [元素声明]>
=======================================================================================
安装保存 uni-app d.ts 声明文件

npm install --save @types/uni-app

源 https://www.npmjs.com/package/@types/uni-app
=======================================================================================
配置WebStorm (xsd文件 在附件里), (命令行运行与编译 npm run dev: ,npm run build:,这个不详写:官方-看这里)过桥不能拆板 推荐配合 使用HBuilerX IDE 打包与调试


=======================================================================================
<<xsd文件 在这里 >>

继续阅读 »

=======================================================================================
知识点:
=======================================================================================
引自 W3School 教程:
=======================================================================================
XSD
XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 描述 XML 文档的结构。
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。
=======================================================================================
DTD
文档类型定义(Document Type Definition)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。
DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
<!DOCTYPE 根元素 [元素声明]>
=======================================================================================
安装保存 uni-app d.ts 声明文件

npm install --save @types/uni-app

源 https://www.npmjs.com/package/@types/uni-app
=======================================================================================
配置WebStorm (xsd文件 在附件里), (命令行运行与编译 npm run dev: ,npm run build:,这个不详写:官方-看这里)过桥不能拆板 推荐配合 使用HBuilerX IDE 打包与调试


=======================================================================================
<<xsd文件 在这里 >>

收起阅读 »

uniapp兼容electron踩坑

uniapp

1、环境
electron 7.1.7
electron-package 14.1.1

2、修改
①package.json:
electron打包命令修改
"electron":"electron main.js"

②mainfest.json:
index.html页面里静态资源路径
"h5": {
"template": "index.html",
"publicPath":"./"
}

③uniapp源码修改
1)底部tabbar路径修改
node_modules/@dcloudio/uni-h5/dist/index.umd.min.js
_getRealPath方法修改:

_getRealPath: function (t) {  
                            return 0 !== t.indexOf("/") && (t = "/" + t), Object(i["a"])(t)  
                        }

修改成

_getRealPath: function (t) {  
                            return 0 !== t.indexOf("/") && (t = t), Object(i["a"])(t)  
                        }

2)静态资源路径修改
在vue.config.js里修改
(尝试了方案,没有起作用,和官网说的不一样啊)

④关于electron配置
1)出现不可引用本地资源错误:
在main.js添加配置
webPreferences: {
webSecurity: false
}
同时静态资源不要放在dist目录;

2)出现打包错误
package.json里添加入口配置
"main": "main.js",

3) 打包完成后,应用打开乱码,或者js报错
是electron-pakcage问题,尝试多打包几次就好

4)应用静态资源要加http(s)头,否则是按本地资源加载,会把错
5)使用electron-package打包,使用命令行不够灵活
可以使用js脚本,引入electron-package进行打包,更加灵活

6)关于electron API
①document.location.protocol 结果是 file:

继续阅读 »

1、环境
electron 7.1.7
electron-package 14.1.1

2、修改
①package.json:
electron打包命令修改
"electron":"electron main.js"

②mainfest.json:
index.html页面里静态资源路径
"h5": {
"template": "index.html",
"publicPath":"./"
}

③uniapp源码修改
1)底部tabbar路径修改
node_modules/@dcloudio/uni-h5/dist/index.umd.min.js
_getRealPath方法修改:

_getRealPath: function (t) {  
                            return 0 !== t.indexOf("/") && (t = "/" + t), Object(i["a"])(t)  
                        }

修改成

_getRealPath: function (t) {  
                            return 0 !== t.indexOf("/") && (t = t), Object(i["a"])(t)  
                        }

2)静态资源路径修改
在vue.config.js里修改
(尝试了方案,没有起作用,和官网说的不一样啊)

④关于electron配置
1)出现不可引用本地资源错误:
在main.js添加配置
webPreferences: {
webSecurity: false
}
同时静态资源不要放在dist目录;

2)出现打包错误
package.json里添加入口配置
"main": "main.js",

3) 打包完成后,应用打开乱码,或者js报错
是electron-pakcage问题,尝试多打包几次就好

4)应用静态资源要加http(s)头,否则是按本地资源加载,会把错
5)使用electron-package打包,使用命令行不够灵活
可以使用js脚本,引入electron-package进行打包,更加灵活

6)关于electron API
①document.location.protocol 结果是 file:

收起阅读 »

uniapp 采用按照官网文档集成离线打包,出现点击图标无法打开应用情况,后台报找不到类io.dcloud.PandoraEntryActivity,另外uniapp离线打包不显示上部导航栏问题

问题:1.uniapp 采用按照官网文档文档教程集成离线打包,出现点击图标无法打开应用情况,后台报找不到类io.dcloud.PandoraEntryActivity,

解决:在AndroidManifest.xml文件添加这部分代码,这个官网文档教程并未指出。

 <activity   

     android:name="io.dcloud.PandoraEntryActivity"  

     android:launchMode="singleTask"  

     android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard"  

     android:hardwareAccelerated="true"  

     android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"  

     android:screenOrientation="user"  

     android:theme="@style/DCloudTheme"  

     android:windowSoftInputMode="adjustResize">  

        <intent-filter>  

            <category   android:name="android.intent.category.DEFAULT" />  

            <category   android:name="android.intent.category.BROWSABLE" />  

            <action  android:name="android.intent.action.VIEW" />  

            <data  android:scheme="h56131bcf" />  

        </intent-filter>  

</activity>  

问题 2:. uniapp离线打包不显示上部导航栏,
解决:是需要加入android-gif-drawable-release@1.2.17.aar插件 ;这个是参考zyfking@hotmail.com 提供的方案的解决的,链接:https://ask.dcloud.net.cn/question/77861

继续阅读 »

问题:1.uniapp 采用按照官网文档文档教程集成离线打包,出现点击图标无法打开应用情况,后台报找不到类io.dcloud.PandoraEntryActivity,

解决:在AndroidManifest.xml文件添加这部分代码,这个官网文档教程并未指出。

 <activity   

     android:name="io.dcloud.PandoraEntryActivity"  

     android:launchMode="singleTask"  

     android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard"  

     android:hardwareAccelerated="true"  

     android:permission="com.miui.securitycenter.permission.AppPermissionsEditor"  

     android:screenOrientation="user"  

     android:theme="@style/DCloudTheme"  

     android:windowSoftInputMode="adjustResize">  

        <intent-filter>  

            <category   android:name="android.intent.category.DEFAULT" />  

            <category   android:name="android.intent.category.BROWSABLE" />  

            <action  android:name="android.intent.action.VIEW" />  

            <data  android:scheme="h56131bcf" />  

        </intent-filter>  

</activity>  

问题 2:. uniapp离线打包不显示上部导航栏,
解决:是需要加入android-gif-drawable-release@1.2.17.aar插件 ;这个是参考zyfking@hotmail.com 提供的方案的解决的,链接:https://ask.dcloud.net.cn/question/77861

收起阅读 »

IOS上下拖动背景色(白色),修改方法

解决代码如下:
VUE-页面:

<template>  
  <view :class="'content ' + Skin">  
    <image class="img_background"></image>

CSS-样式:

.img_background{  
  z-index: -1;  
  width: 100%;  
  height: 100%;  
  position: fixed;  
  top: 0;  
  background-color: #1e2c35; // 其它颜色  
// 背景图片  
  /* background: url('http://m.360buyimg.com/marketingminiapp/jfs/t23068/25/834363295/3013355/77286696/5b459faaN3f3bc27f.png') no-repeat; */  
  /* background-size: cover; */  
}

修改前后对照(看附件):

继续阅读 »

解决代码如下:
VUE-页面:

<template>  
  <view :class="'content ' + Skin">  
    <image class="img_background"></image>

CSS-样式:

.img_background{  
  z-index: -1;  
  width: 100%;  
  height: 100%;  
  position: fixed;  
  top: 0;  
  background-color: #1e2c35; // 其它颜色  
// 背景图片  
  /* background: url('http://m.360buyimg.com/marketingminiapp/jfs/t23068/25/834363295/3013355/77286696/5b459faaN3f3bc27f.png') no-repeat; */  
  /* background-size: cover; */  
}

修改前后对照(看附件):

收起阅读 »

自定义tabbar,支持H5,app,微信小程序中间凸起,支持uni.switchTab()跳转

tabbar

浏览了很多关于uniapp的自定义tabbar的文章,很多感觉都写的不详细,而且跨端能力都不怎么样,我自己研究整理了一下:

跨端支持:H5、app、微信小程序,

H5效果图如下:



微信小程序效果图如下:

app的效果图没有截取到,但应该是可行的。

目录结构如下:

page.json的配置如下:

{  
    "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages  
        {  
            "path": "pages/index/index",  
            "style": {  
                "navigationBarTitleText": "首页"  
            }  
        },{  
            "path": "pages/dynamic/dynamic",  
            "style": {  
                "navigationBarTitleText": "发现"  
            }  
        },{  
            "path": "pages/release/release",  
            "style": {  
                "navigationBarTitleText": "发布"  
            }  
        },{  
            "path": "pages/friend/friend",  
            "style": {  
                "navigationBarTitleText": "朋友"  
            }  
        },{  
            "path": "pages/mine/mine",  
            "style": {  
                "navigationBarTitleText": "我的"  
            }  
        }  
    ],  
    "globalStyle": {  
        "navigationBarTextStyle": "black",  
        "navigationBarTitleText": "uni-app",  
        "navigationBarBackgroundColor": "#F8F8F8",  
        "backgroundColor": "#F8F8F8"  
    },  
    "tabBar": {  
        "color": "#999999",  
        "selectedColor": "#66CCFF",  
        "borderStyle": "black",  
        "backgroundColor": "#ffffff",  
        "midButton": {  
            "text": "发布",  
            "pagePath": "pages/release/release",  
            "iconPath": "static/images/tabbar/release.png",  
            "selectedIconPath": "static/images/tabbar/release-select.png"  
        },  
        "list": [{  
            "pagePath": "pages/index/index",  
            "iconPath": "static/images/tabbar/index.png",  
            "selectedIconPath": "static/images/tabbar/index-select.png",  
            "text": "首页"  
        },{  
            "pagePath": "pages/dynamic/dynamic",  
            "iconPath": "static/images/tabbar/dynamic.png",  
            "selectedIconPath": "static/images/tabbar/dynamic-select.png",  
            "text": "发现"  
        },  
        // #ifndef APP-PLUS  
        {  
            "pagePath": "pages/release/release",  
            "iconPath": "static/images/tabbar/release.png",  
            "selectedIconPath": "static/images/tabbar/release-select.png",  
            "text": "发布"  
        },  
        // #endif  
        {  
            "pagePath": "pages/friend/friend",  
            "iconPath": "static/images/tabbar/friend.png",  
            "selectedIconPath": "static/images/tabbar/friend-select.png",  
            "text": "朋友"  
        },{  
            "pagePath": "pages/mine/mine",  
            "iconPath": "static/images/tabbar/mine.png",  
            "selectedIconPath": "static/images/tabbar/mine-select.png",  
            "text": "我的"  
        }]  
    }  
}  

注册全局组件tabbar在main.js文件中,配置如下:

import Vue from 'vue'  
import App from './App'  
import rwjTabbar from './components/rwj-tabbar.vue'  

Vue.config.productionTip = false  

//注册全局组件  
Vue.component('rwj-tabbar', rwjTabbar);  
App.mpType = 'app'  

const app = new Vue({  
    ...App  
})  
app.$mount()  


rwj-tabbar.vue文件编写:

<template>  
    <view class="tabbar-container">  
        <block>  
            <view class="tabbar-item" v-for="(item,index) in tabbarList" :class="[item.centerItem ? ' center-item' : '']" @click="changeItem(item)">  
                <view class="item-top">  
                    <image :src="currentItem==item.id?item.selectIcon:item.icon"></image>  
                </view>  
                <view class="item-bottom" :class="[currentItem==item.id ? 'item-active' : '']">  
                    <text>{{item.text}}</text>  
                </view>  
            </view>  
        </block>  

    </view>  
</template>  

<script>  
    export default {  
        props:{  
            currentPage: {  
                type: Number,  
                default: 0  
            }  
        },  
        data() {  
            return {  
                currentItem: 0,  
                tabbarList: [  
                    {  
                        id: 0,  
                        path: "/pages/index/index",  
                        icon: "/static/images/tabbar/index.png",  
                        selectIcon: "/static/images/tabbar/index-select.png",  
                        text: "首页",  
                        centerItem: false  
                    },{  
                        id: 1,  
                        path: "/pages/dynamic/dynamic",  
                        icon: "/static/images/tabbar/dynamic.png",  
                        selectIcon: "/static/images/tabbar/dynamic-select.png",  
                        text: "动态",  
                        centerItem: false  
                    },{  
                        id: 2,  
                        path: "/pages/release/release",  
                        icon: "/static/images/tabbar/release.png",  
                        selectIcon: "/static/images/tabbar/release-select.png",  
                        text: "发布",  
                        centerItem: true  
                    },{  
                        id: 3,  
                        path: "/pages/friend/friend",  
                        icon: "/static/images/tabbar/friend.png",  
                        selectIcon: "/static/images/tabbar/friend-select.png",  
                        text: "朋友",  
                        centerItem: false  
                    },{  
                        id: 4,  
                        path: "/pages/mine/mine",  
                        icon: "/static/images/tabbar/mine.png",  
                        selectIcon: "/static/images/tabbar/mine-select.png",  
                        text: "我的",  
                        centerItem: false  
                    }  
                ]  

            };  
        },  
        mounted(){  
            this.currentItem = this.currentPage;  
            uni.hideTabBar();  
        },  
        methods: {  
            changeItem(item){  
                let _this = this;  
                //_this.currentItem = item.id;  
                uni.switchTab({  
                    url: item.path  
                });  
            }  
        }  
    }  
</script>  
<style>  
        view{  
               padding: 0;  
               margin: 0;  
               box-sizing: border-box;  
        }  
    .tabbar-container{  
        position: fixed;  
        bottom: 0;  
        left: 0;  
        width: 100%;  
        height: 110rpx;  
        box-shadow: 0 0 5px #999;  
        display: flex;  
        align-items: center;  
        padding: 5rpx 0;  
        color: #999999;  
    }  
    .tabbar-container .tabbar-item{  
        width: 20%;  
        height: 100rpx;  
        display: flex;  
        flex-direction: column;  
        justify-content: center;  
        align-items: center;  
        text-align: center;  
    }  
    .tabbar-container .item-active{  
        color: #66CCFF;  
    }  
    .tabbar-container .center-item{  
        display: block;  
        position: relative;  
    }  
    .tabbar-container .tabbar-item .item-top{  
        width: 70rpx;  
        height: 70rpx;  
        padding: 10rpx;  
    }  
    .tabbar-container .center-item .item-top{  
        flex-shrink: 0;  
        width: 100rpx;  
        height: 100rpx;  
        position: absolute;  
        top: -50rpx;  
        left: calc(50% - 50rpx);  
        border-radius: 50%;  
        box-shadow: 0 0 5px #999;  
        background-color: #ffffff;  
    }  
    .tabbar-container .tabbar-item .item-top image{  
        width: 100%;  
        height: 100%;  
    }  
    .tabbar-container .tabbar-item .item-bottom{  
        font-size: 28rpx;  
        width: 100%;  
    }  
    .tabbar-container .center-item .item-bottom{  
        position: absolute;  
        bottom: 5rpx;  
    }  
</style>  

index.vue文件中引入tabbar:

<!-- #ifndef APP-PLUS -->  
        <rwj-tabbar :current-page="0"></rwj-tabbar>  
<!-- #endif -->

补充说明:
由于app端不支持uni.hideTabBar();,所以在app端不需要使用自定义组件,而且app端uniapp原生的就支持中间凸起,所以app是使用的原生的tabbar

继续阅读 »

浏览了很多关于uniapp的自定义tabbar的文章,很多感觉都写的不详细,而且跨端能力都不怎么样,我自己研究整理了一下:

跨端支持:H5、app、微信小程序,

H5效果图如下:



微信小程序效果图如下:

app的效果图没有截取到,但应该是可行的。

目录结构如下:

page.json的配置如下:

{  
    "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages  
        {  
            "path": "pages/index/index",  
            "style": {  
                "navigationBarTitleText": "首页"  
            }  
        },{  
            "path": "pages/dynamic/dynamic",  
            "style": {  
                "navigationBarTitleText": "发现"  
            }  
        },{  
            "path": "pages/release/release",  
            "style": {  
                "navigationBarTitleText": "发布"  
            }  
        },{  
            "path": "pages/friend/friend",  
            "style": {  
                "navigationBarTitleText": "朋友"  
            }  
        },{  
            "path": "pages/mine/mine",  
            "style": {  
                "navigationBarTitleText": "我的"  
            }  
        }  
    ],  
    "globalStyle": {  
        "navigationBarTextStyle": "black",  
        "navigationBarTitleText": "uni-app",  
        "navigationBarBackgroundColor": "#F8F8F8",  
        "backgroundColor": "#F8F8F8"  
    },  
    "tabBar": {  
        "color": "#999999",  
        "selectedColor": "#66CCFF",  
        "borderStyle": "black",  
        "backgroundColor": "#ffffff",  
        "midButton": {  
            "text": "发布",  
            "pagePath": "pages/release/release",  
            "iconPath": "static/images/tabbar/release.png",  
            "selectedIconPath": "static/images/tabbar/release-select.png"  
        },  
        "list": [{  
            "pagePath": "pages/index/index",  
            "iconPath": "static/images/tabbar/index.png",  
            "selectedIconPath": "static/images/tabbar/index-select.png",  
            "text": "首页"  
        },{  
            "pagePath": "pages/dynamic/dynamic",  
            "iconPath": "static/images/tabbar/dynamic.png",  
            "selectedIconPath": "static/images/tabbar/dynamic-select.png",  
            "text": "发现"  
        },  
        // #ifndef APP-PLUS  
        {  
            "pagePath": "pages/release/release",  
            "iconPath": "static/images/tabbar/release.png",  
            "selectedIconPath": "static/images/tabbar/release-select.png",  
            "text": "发布"  
        },  
        // #endif  
        {  
            "pagePath": "pages/friend/friend",  
            "iconPath": "static/images/tabbar/friend.png",  
            "selectedIconPath": "static/images/tabbar/friend-select.png",  
            "text": "朋友"  
        },{  
            "pagePath": "pages/mine/mine",  
            "iconPath": "static/images/tabbar/mine.png",  
            "selectedIconPath": "static/images/tabbar/mine-select.png",  
            "text": "我的"  
        }]  
    }  
}  

注册全局组件tabbar在main.js文件中,配置如下:

import Vue from 'vue'  
import App from './App'  
import rwjTabbar from './components/rwj-tabbar.vue'  

Vue.config.productionTip = false  

//注册全局组件  
Vue.component('rwj-tabbar', rwjTabbar);  
App.mpType = 'app'  

const app = new Vue({  
    ...App  
})  
app.$mount()  


rwj-tabbar.vue文件编写:

<template>  
    <view class="tabbar-container">  
        <block>  
            <view class="tabbar-item" v-for="(item,index) in tabbarList" :class="[item.centerItem ? ' center-item' : '']" @click="changeItem(item)">  
                <view class="item-top">  
                    <image :src="currentItem==item.id?item.selectIcon:item.icon"></image>  
                </view>  
                <view class="item-bottom" :class="[currentItem==item.id ? 'item-active' : '']">  
                    <text>{{item.text}}</text>  
                </view>  
            </view>  
        </block>  

    </view>  
</template>  

<script>  
    export default {  
        props:{  
            currentPage: {  
                type: Number,  
                default: 0  
            }  
        },  
        data() {  
            return {  
                currentItem: 0,  
                tabbarList: [  
                    {  
                        id: 0,  
                        path: "/pages/index/index",  
                        icon: "/static/images/tabbar/index.png",  
                        selectIcon: "/static/images/tabbar/index-select.png",  
                        text: "首页",  
                        centerItem: false  
                    },{  
                        id: 1,  
                        path: "/pages/dynamic/dynamic",  
                        icon: "/static/images/tabbar/dynamic.png",  
                        selectIcon: "/static/images/tabbar/dynamic-select.png",  
                        text: "动态",  
                        centerItem: false  
                    },{  
                        id: 2,  
                        path: "/pages/release/release",  
                        icon: "/static/images/tabbar/release.png",  
                        selectIcon: "/static/images/tabbar/release-select.png",  
                        text: "发布",  
                        centerItem: true  
                    },{  
                        id: 3,  
                        path: "/pages/friend/friend",  
                        icon: "/static/images/tabbar/friend.png",  
                        selectIcon: "/static/images/tabbar/friend-select.png",  
                        text: "朋友",  
                        centerItem: false  
                    },{  
                        id: 4,  
                        path: "/pages/mine/mine",  
                        icon: "/static/images/tabbar/mine.png",  
                        selectIcon: "/static/images/tabbar/mine-select.png",  
                        text: "我的",  
                        centerItem: false  
                    }  
                ]  

            };  
        },  
        mounted(){  
            this.currentItem = this.currentPage;  
            uni.hideTabBar();  
        },  
        methods: {  
            changeItem(item){  
                let _this = this;  
                //_this.currentItem = item.id;  
                uni.switchTab({  
                    url: item.path  
                });  
            }  
        }  
    }  
</script>  
<style>  
        view{  
               padding: 0;  
               margin: 0;  
               box-sizing: border-box;  
        }  
    .tabbar-container{  
        position: fixed;  
        bottom: 0;  
        left: 0;  
        width: 100%;  
        height: 110rpx;  
        box-shadow: 0 0 5px #999;  
        display: flex;  
        align-items: center;  
        padding: 5rpx 0;  
        color: #999999;  
    }  
    .tabbar-container .tabbar-item{  
        width: 20%;  
        height: 100rpx;  
        display: flex;  
        flex-direction: column;  
        justify-content: center;  
        align-items: center;  
        text-align: center;  
    }  
    .tabbar-container .item-active{  
        color: #66CCFF;  
    }  
    .tabbar-container .center-item{  
        display: block;  
        position: relative;  
    }  
    .tabbar-container .tabbar-item .item-top{  
        width: 70rpx;  
        height: 70rpx;  
        padding: 10rpx;  
    }  
    .tabbar-container .center-item .item-top{  
        flex-shrink: 0;  
        width: 100rpx;  
        height: 100rpx;  
        position: absolute;  
        top: -50rpx;  
        left: calc(50% - 50rpx);  
        border-radius: 50%;  
        box-shadow: 0 0 5px #999;  
        background-color: #ffffff;  
    }  
    .tabbar-container .tabbar-item .item-top image{  
        width: 100%;  
        height: 100%;  
    }  
    .tabbar-container .tabbar-item .item-bottom{  
        font-size: 28rpx;  
        width: 100%;  
    }  
    .tabbar-container .center-item .item-bottom{  
        position: absolute;  
        bottom: 5rpx;  
    }  
</style>  

index.vue文件中引入tabbar:

<!-- #ifndef APP-PLUS -->  
        <rwj-tabbar :current-page="0"></rwj-tabbar>  
<!-- #endif -->

补充说明:
由于app端不支持uni.hideTabBar();,所以在app端不需要使用自定义组件,而且app端uniapp原生的就支持中间凸起,所以app是使用的原生的tabbar

收起阅读 »

ios审核一周搞定,分享下过程

正好遇到国外圣诞节,中间有一周的空档,所以这里说的一周是扣除圣诞节放假的,我的app提交赶在他们的节前。累计被驳回5回,每次一天(23号他们给我驳回了2次)。

这里就说下需要注意的地方:
1、必须要隐私条款连接;
2、6.5英寸的预览和截屏得有留海(这个是看到别人说的,就我们修改了下,所以没因为截屏被驳回);
3、标题和副标题这个要特别注意。看appstore中很多标题都是带附加说明的,但是现在应该是不允许的。我们提交的app被驳回3次都是因为标题和副标题的原因:
a、第一次提交时,副标题添加了 一段说明他们认为是有关键词堆砌嫌疑,所以驳回了;
b、第二次我们将副标题的说明修改了,然后在增加了app名称的附加说明 “ app名称 - abc”,在appstore上可以看见很多类似的写法,不过那是以前现在貌似不行(反正被驳回了2次就不想再试了);
c、第三次我们去除了app名称上的附加说明“ - 附加说明”只留下单纯的app名称,然后附加标题采用“「app名称」期货交易数据分析与排名”,并说明为啥要用这个,接着跟他们商量我是否可以保留这个;
d、又一次被驳回,不过这次他们让我保留副标题说明了,驳回的原因是因为用户上传头像要权限,这个权限我没说明。在manifest.json中的“APP模块权限配置”中的“ios隐私信息访问的许可描述”添加说明后重新编译一个版本提交了上去。
e、最后一次被驳回,说我的副标题“「app名称」期货交易数据分析与排名”不符合政策。我在回复中把上次说明的情况再跟他说了一遍,并询问是否是同一个人审核的。最后问他,如果这个说明不符合政策,能否给个建议。这次提交上去后他们给通过了。

我感觉最主要的还是要尊重他们,我每次回复总是心平气和,因为这个其实是他们的工作,没必要耍小脾气。但是并不是说要低三下气,只是陈述事实即可。其实看下我们的副标题“期货交易数据分析与排名”,这个本身确实很难说没关键词堆砌嫌疑,因为含有“期货交易”,但是跟他们说明情况后他们放行了。

继续阅读 »

正好遇到国外圣诞节,中间有一周的空档,所以这里说的一周是扣除圣诞节放假的,我的app提交赶在他们的节前。累计被驳回5回,每次一天(23号他们给我驳回了2次)。

这里就说下需要注意的地方:
1、必须要隐私条款连接;
2、6.5英寸的预览和截屏得有留海(这个是看到别人说的,就我们修改了下,所以没因为截屏被驳回);
3、标题和副标题这个要特别注意。看appstore中很多标题都是带附加说明的,但是现在应该是不允许的。我们提交的app被驳回3次都是因为标题和副标题的原因:
a、第一次提交时,副标题添加了 一段说明他们认为是有关键词堆砌嫌疑,所以驳回了;
b、第二次我们将副标题的说明修改了,然后在增加了app名称的附加说明 “ app名称 - abc”,在appstore上可以看见很多类似的写法,不过那是以前现在貌似不行(反正被驳回了2次就不想再试了);
c、第三次我们去除了app名称上的附加说明“ - 附加说明”只留下单纯的app名称,然后附加标题采用“「app名称」期货交易数据分析与排名”,并说明为啥要用这个,接着跟他们商量我是否可以保留这个;
d、又一次被驳回,不过这次他们让我保留副标题说明了,驳回的原因是因为用户上传头像要权限,这个权限我没说明。在manifest.json中的“APP模块权限配置”中的“ios隐私信息访问的许可描述”添加说明后重新编译一个版本提交了上去。
e、最后一次被驳回,说我的副标题“「app名称」期货交易数据分析与排名”不符合政策。我在回复中把上次说明的情况再跟他说了一遍,并询问是否是同一个人审核的。最后问他,如果这个说明不符合政策,能否给个建议。这次提交上去后他们给通过了。

我感觉最主要的还是要尊重他们,我每次回复总是心平气和,因为这个其实是他们的工作,没必要耍小脾气。但是并不是说要低三下气,只是陈述事实即可。其实看下我们的副标题“期货交易数据分析与排名”,这个本身确实很难说没关键词堆砌嫌疑,因为含有“期货交易”,但是跟他们说明情况后他们放行了。

收起阅读 »

【数位云】开放平台上线,共建位置服务生态~欢迎体验

开发者中心

12月13日,数位宣布即将上线位置服务开发者平台,面向行业开发者赋能采集、定位等基础能力,支持安卓、iOS、小程序等不同平台,帮助行业缩短开发周期,节省开发成本,以更高效的方式获取领先的精准室内位置识别能力。

定 位

基于数位自主研发的核心专利技术,赋能开发者店铺级精准室内位置识别能力,可以在不依赖硬件铺设的前提下,精准区分楼层、店铺、店内及店外。目前,这一定位能力已覆盖全国209座城市超4000万高价值室内场景并不断扩张,为开发者搭建精准室内定位能力通用平台。

采 集

针对不同行业面向的场景差异,数位开发者平台为开发者提供目标场景自采集功能,将原本专业采集团队才能完成的系统性采集工作,面向行业零门槛开放。开发者只需到达符合采集标准的目标采集地点,通过APP进行2步操作,10秒即可获取目标场景的精准定位能力。

目前,数位定位+采集能力已经为本地生活、新闻资讯、视频娱乐、电商母婴、考勤办公等诸多领域的服务类、工具类、娱乐类APP提供服务,赋能人员管理、定位打卡、用户画像、场景服务、数据分析、精细化运营等多种能力,打造从采集到定位,从定位到场景服务,从服务到数据分析的一整套位置服务系统。

即日起,开发者可联系数位工作人员获取免费体验工具。

未来,数位还将陆续开放地图导航、近场服务、数据分析等能力,丰富位置服务形态,构建位置服务生态,与行业共建全域感知的智能世界。

开发者平台链接地址:https://cloud.papakaka.com/flash/#/dashboard

体验中如有疑问
扫描或识别下方二维码
添加数位小助手
随时在线解答您的问题

继续阅读 »

12月13日,数位宣布即将上线位置服务开发者平台,面向行业开发者赋能采集、定位等基础能力,支持安卓、iOS、小程序等不同平台,帮助行业缩短开发周期,节省开发成本,以更高效的方式获取领先的精准室内位置识别能力。

定 位

基于数位自主研发的核心专利技术,赋能开发者店铺级精准室内位置识别能力,可以在不依赖硬件铺设的前提下,精准区分楼层、店铺、店内及店外。目前,这一定位能力已覆盖全国209座城市超4000万高价值室内场景并不断扩张,为开发者搭建精准室内定位能力通用平台。

采 集

针对不同行业面向的场景差异,数位开发者平台为开发者提供目标场景自采集功能,将原本专业采集团队才能完成的系统性采集工作,面向行业零门槛开放。开发者只需到达符合采集标准的目标采集地点,通过APP进行2步操作,10秒即可获取目标场景的精准定位能力。

目前,数位定位+采集能力已经为本地生活、新闻资讯、视频娱乐、电商母婴、考勤办公等诸多领域的服务类、工具类、娱乐类APP提供服务,赋能人员管理、定位打卡、用户画像、场景服务、数据分析、精细化运营等多种能力,打造从采集到定位,从定位到场景服务,从服务到数据分析的一整套位置服务系统。

即日起,开发者可联系数位工作人员获取免费体验工具。

未来,数位还将陆续开放地图导航、近场服务、数据分析等能力,丰富位置服务形态,构建位置服务生态,与行业共建全域感知的智能世界。

开发者平台链接地址:https://cloud.papakaka.com/flash/#/dashboard

体验中如有疑问
扫描或识别下方二维码
添加数位小助手
随时在线解答您的问题

收起阅读 »

【建议】ctrl+f搜索结果总是在画面最下面或最上面,很不明显不便于查看代码上下文。

搜索

ctrl+f搜索结果总是在画面最下面或最上面,很不明显不便于查看代码上下文。
能否将结果高亮显示在中间,这样比较明显,且方便用户查看关键词的上下文,以便用户分别是否是想要的结果。
感谢!

ctrl+f搜索结果总是在画面最下面或最上面,很不明显不便于查看代码上下文。
能否将结果高亮显示在中间,这样比较明显,且方便用户查看关键词的上下文,以便用户分别是否是想要的结果。
感谢!