HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

【建议】希望在打包 队列中 可以取消打包

云端打包 用户建议 优化建议 App打包

我们在打包中,显示XXXX队列中。是无法取消的!!


有时候 我们发现 点错了/需求更改了/不想打包了


都没有办法 取消 这个是一个超级弊端 浪费资源不说 还麻烦


  • [HBuilder] 14:52:06.798 项目 aw [UNI7608817]的打包状态:
    [HBuilder] 14:52:06.798 时间: 2021-04-03 14:38:14 类型: iOS越狱包 队列中

[HBuilder] 14:53:06.560 项目 aw [UNI7608817]的打包状态:
[HBuilder] 14:53:06.560 时间: 2021-04-03 14:38:21 类型: Android自有证书 队列中


  • 是无法取消的!!
继续阅读 »

我们在打包中,显示XXXX队列中。是无法取消的!!


有时候 我们发现 点错了/需求更改了/不想打包了


都没有办法 取消 这个是一个超级弊端 浪费资源不说 还麻烦


  • [HBuilder] 14:52:06.798 项目 aw [UNI7608817]的打包状态:
    [HBuilder] 14:52:06.798 时间: 2021-04-03 14:38:14 类型: iOS越狱包 队列中

[HBuilder] 14:53:06.560 项目 aw [UNI7608817]的打包状态:
[HBuilder] 14:53:06.560 时间: 2021-04-03 14:38:21 类型: Android自有证书 队列中


  • 是无法取消的!!
收起阅读 »

分享个自己开发的影视类APP,基于苹果CMS,独立对接APP的后台,完整度高

nvue

独立APP后台,对接苹果CMS。
完整度高,列举如下一下主要功能:

  1. 苹果CMS系统(系统自带了采集)
  2. 独立的APP对接系统,对接APP和苹果CMS网站
  3. 视频专题滚动
  4. m3u8流媒体文件缓存和播放
  5. 视频播放换源线路
  6. 一键投屏
  7. 追剧
  8. 弹幕+评论
    。。。

QQ:2701309467

继续阅读 »

独立APP后台,对接苹果CMS。
完整度高,列举如下一下主要功能:

  1. 苹果CMS系统(系统自带了采集)
  2. 独立的APP对接系统,对接APP和苹果CMS网站
  3. 视频专题滚动
  4. m3u8流媒体文件缓存和播放
  5. 视频播放换源线路
  6. 一键投屏
  7. 追剧
  8. 弹幕+评论
    。。。

QQ:2701309467

收起阅读 »

uni-app下微信小程序自动埋点

由于公司运营需求,需要给代码埋点,而埋点并不是一个和业务强相关的代码,各个页面的埋点工作量也非常的大,一直琢磨能不能自动埋点呢,于是就有了下面的探索

公司通过uni-app开发的主要是微信小程序,所以本文主要是以开发微信小程序的自动化埋点为主

诸如市面上各种统计代码,需要上报埋点事件时,以百度移动统计为例
getApp().mtj.trackEvent(event, args);就可以上报事件和参数

代码虽然很简单,但每个页面统计的点少的三四个,多的上十个,各个地方的统计代码加起来,数量比较大,而且不方便统一管理。
于是,我想到了方案一

  1. 在main.js中加入方法

2.在每一个page和component最外层的<view>标签中加入click方法,此时点击页面中的所有任意元素,都会有事件传输到elementTracker方法中,通过判断clickInfo.target是不是目标统计元素,从而决定是否上报,数据也可以从dataset中取到

但这个方法有个不好的地方就是


在这种嵌套结构的view当中时,只有target只会有你点击的对象,也就是你点的是image就只能取image的dataset,点击的是外层的view取外层view的dataset,情况往往是点击view和点击image触发的是同一事件,可能在这里你需要重复写两遍

有没有更好的解决方案呢,答案是有的,利用的是微信的wx.createSelectorQuery,通过点击时计算点击的x,y计算是否落在需要统计的元素上,于是就产生了下面这段代码


通过计算点击区域是否落在需要统计的元素上,这样解决了点击父组件需要统计,点击子组件统计不到的问题

这时,我们的统计代码合元素可以写到一个统一的配置文件里


但是这个方法也不是完美的,有两个bug,一是触发wx.createSelectorQuery返回的异步的结果需要时间,可能页面跳走,元素隐藏或不渲染导致找不到需要统计的元素了,二就是如果元素有重叠,如何知道哪个是在上面的元素
第二个问题我用了一个stop参数标识只要这个元素上报了,那这次点击接下来就停止上报。

参考项目 https://github.com/zhengguorong/xbosstrack-wechat

继续阅读 »

由于公司运营需求,需要给代码埋点,而埋点并不是一个和业务强相关的代码,各个页面的埋点工作量也非常的大,一直琢磨能不能自动埋点呢,于是就有了下面的探索

公司通过uni-app开发的主要是微信小程序,所以本文主要是以开发微信小程序的自动化埋点为主

诸如市面上各种统计代码,需要上报埋点事件时,以百度移动统计为例
getApp().mtj.trackEvent(event, args);就可以上报事件和参数

代码虽然很简单,但每个页面统计的点少的三四个,多的上十个,各个地方的统计代码加起来,数量比较大,而且不方便统一管理。
于是,我想到了方案一

  1. 在main.js中加入方法

2.在每一个page和component最外层的<view>标签中加入click方法,此时点击页面中的所有任意元素,都会有事件传输到elementTracker方法中,通过判断clickInfo.target是不是目标统计元素,从而决定是否上报,数据也可以从dataset中取到

但这个方法有个不好的地方就是


在这种嵌套结构的view当中时,只有target只会有你点击的对象,也就是你点的是image就只能取image的dataset,点击的是外层的view取外层view的dataset,情况往往是点击view和点击image触发的是同一事件,可能在这里你需要重复写两遍

有没有更好的解决方案呢,答案是有的,利用的是微信的wx.createSelectorQuery,通过点击时计算点击的x,y计算是否落在需要统计的元素上,于是就产生了下面这段代码


通过计算点击区域是否落在需要统计的元素上,这样解决了点击父组件需要统计,点击子组件统计不到的问题

这时,我们的统计代码合元素可以写到一个统一的配置文件里


但是这个方法也不是完美的,有两个bug,一是触发wx.createSelectorQuery返回的异步的结果需要时间,可能页面跳走,元素隐藏或不渲染导致找不到需要统计的元素了,二就是如果元素有重叠,如何知道哪个是在上面的元素
第二个问题我用了一个stop参数标识只要这个元素上报了,那这次点击接下来就停止上报。

参考项目 https://github.com/zhengguorong/xbosstrack-wechat

收起阅读 »

打安卓包,打包失败,包错误日志https://service.dcloud.net.cn/build/errorLog/f1452b50-92b2-11eb-a333-d744a281b21a

不是bug

首先,更新 manifest.json 中的版本号。
比如之前是 1.0.0,那么新版本应该是 1.0.1 或 1.1.0 这样。

你要的解决打包失败原因来了:

然后,在 HBuilderX 中生成升级包(wgt)。
菜单->发行->原生App-制作移动App资源升级包
生成结束会在控制台告知升级包的输出位置。

就成功了!希望能帮助到你。

继续阅读 »

首先,更新 manifest.json 中的版本号。
比如之前是 1.0.0,那么新版本应该是 1.0.1 或 1.1.0 这样。

你要的解决打包失败原因来了:

然后,在 HBuilderX 中生成升级包(wgt)。
菜单->发行->原生App-制作移动App资源升级包
生成结束会在控制台告知升级包的输出位置。

就成功了!希望能帮助到你。

收起阅读 »

uniapp H5端不能够定位当前位置的问题

uniapp

H5 端获取定位信息,需要部署在 https 服务上,本地预览(localhost)仍然可以使用 http 协议。(照搬官方文档)

参考文章链接
这篇文章里面提到需要配置腾讯地图的key,我配置上之后地图列表加载不出来,不知道是不是申请的步骤不对,我只用了https服务就ok了。

继续阅读 »

H5 端获取定位信息,需要部署在 https 服务上,本地预览(localhost)仍然可以使用 http 协议。(照搬官方文档)

参考文章链接
这篇文章里面提到需要配置腾讯地图的key,我配置上之后地图列表加载不出来,不知道是不是申请的步骤不对,我只用了https服务就ok了。

收起阅读 »

关于个推getui,服务端发送推送,在线可以收到,离线永远收不到的问题解决。

个推SDK

1.检查参数是否正确。

  1. 可以先不要使用透传方式。
  2. 是否设置了厂商通道消息内容
  3. 设置为打开应用内特定页面就是intent参数。
  4. intent参数是否正确 intent:#Intent;component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode(标题).";S.content=".urlencode($内容).";S.payload=".json_encode(你的自定义参数).";end

6.PHP端参考代码。

 $api = new \GTClient("https://restapi.getui.com/","", "","");  
        $stt = ['default'=>1];  
        //设置推送参数  
        $push = new \GTPushRequest();  
        $push->setRequestId(time());  
        $message = new \GTPushMessage();  
        $notify = new \GTNotification();  
        $channel = new \GTPushChannel();  

        //配置推送条件  
        $str = new \GTStrategy();  
        $str->setDefault(1);  
        $str->setHw(1);  
        $setting = new \GTSettings();  //定时推送暂无  
        $setting->setStrategy($str);  
        $push->setSettings($setting);  
        $setting->setTtl(3600000); ////消息有效期,走厂商消息需要设置该值  

       //推送苹果离线通知标题内容  
        $alert = new \GTAlert();  
         $alert->setTitle($title);  
       $alert->setBody($content);  
        $aps = new \GTAps();  
        //1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。  
        //苹果建议1小时最多推送3条静默消息  
        $aps->setContentAvailable(0);  
       $aps->setSound("default");  
       $aps->setAlert($alert);  
       $iosDto = new \GTIos();  
       $iosDto->setAps($aps);  
        $iosDto->setType("notify");  
        $pushChannel = new \GTPushChannel();  
        $pushChannel->setIos($iosDto);  

        //安卓离线厂商通道推送消息体  
        $pushChannel = new \GTPushChannel();  
        $androidDTO = new \GTAndroid();  
        $ups = new \GTUps();  
        $notification1 = new \GTThirdNotification();;  
        $notification1->setTitle($title);  
        $notification1->setBody($content);  
        $ups->setNotification($notification1);  
        if($clickType == 'none')  //设置推送类型  
        {  
            $notification1->setClickType($clickType);  
        }else if($clickType == 'payload' || $clickType == 'payload_custom'){ //自定义消息 打开APP和不打开APP  
            $notification1->setClickType($clickType);  
            $notification1->setPayload(json_encode($data));  
        }else if($clickType == 'url'){  //打开URL  
            $notification1->setClickType($clickType);  
            $notification1->setUrl($url);  
        }else if($clickType == 'intent'){  //打开特定页面  
            $notification1->setClickType($clickType);  
            $notification1->setIntent("intent:#Intent;component=com.hqtwtq.y8/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode($title).";S.content=".urlencode($content).";S.payload=".json_encode($data).";end");  
        }else{  
            $notification1->setClickType($clickType);  
        }  
            //各厂商自有功能单项设置  
        if($time){  
            $message->setDuration($time);  //设置推送时间  
            $data = json_encode(array('title'=>$title,'content'=>$content,'duration'=>$time,'importance'=>'HIGH','payload'=>json_encode($data)));  
        }else{  
            $data = json_encode(array('title'=>$title,'content'=>$content,'payload'=>json_encode($data)));  
        }  
        //$ups->setTransmission($data);  
        $androidDTO->setUps($ups);  
        $pushChannel->setAndroid($androidDTO);  
        $push->setPushChannel($pushChannel);  

        //个推在线通道  
        $notify->setTitle($title);  
        $notify->setBody($content);  
        if($img) $notify->setBigImage($img); //推送图片  
        //1、intent:打开应用内特定页面 2、url:打开网页地址。3、payload:自定义消息内容启动应用。4、payload_custom:自定义消息内容不启动应用。5、startapp:打开应用首页。6、none:纯通知,无后续动作  
        if($clickType == 'none')  //设置推送类型  
        {  
            $notify->setClickType($clickType);  
        }else if($clickType == 'payload' || $clickType == 'payload_custom'){ //自定义消息 打开APP和不打开APP  
            $notify->setClickType($clickType);  
            $notify->setPayload(json_encode($data));  
        }else if($clickType == 'url'){  //打开URL  
            $notify->setClickType($clickType);  
            $notify->setUrl($url);  
        }else if($clickType == 'intent'){  //打开特定页面  
            $notify->setClickType($clickType);  
            $notify->setIntent("intent:#Intent;component=com.hqtwtq.y8/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode($title).";S.content=".urlencode($content).";S.payload=".json_encode($data).";end");  
        }else{  
            $notify->setClickType($clickType);  
        }  
        $message->setNotification($notify);  
        $push->setPushMessage($message);  
      /*  if($time){  
            $message->setDuration($time);  //设置推送时间  
            $data = json_encode(array('title'=>$title,'body'=>$content,'duration'=>$time,'importance'=>'HIGH','payload'=>json_encode($data)));  
        }else{  
            $data = json_encode(array('title'=>$title,'body'=>$content,'payload'=>json_encode($data)));  
        }  
        $ups->setTransmission($data);  //  
        $android->setUps($ups);  
        $channel->setAndroid($android);  
        $push->setPushChannel($channel);  
        $push->setPushMessage($message);*/  
        if($cid)  //推送给某个用户  
        {  
            $push->setCid($cid);  
            //处理返回结果  
            $result = $api->pushApi()->pushToSingleByCid($push);  
        }else{  
            $result = $api->pushApi()->pushAll($push);  
        }  
        Log::info('推送数据:【推送】'.json_encode($result)); //写入日志  
        return $result;
继续阅读 »

1.检查参数是否正确。

  1. 可以先不要使用透传方式。
  2. 是否设置了厂商通道消息内容
  3. 设置为打开应用内特定页面就是intent参数。
  4. intent参数是否正确 intent:#Intent;component=包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode(标题).";S.content=".urlencode($内容).";S.payload=".json_encode(你的自定义参数).";end

6.PHP端参考代码。

 $api = new \GTClient("https://restapi.getui.com/","", "","");  
        $stt = ['default'=>1];  
        //设置推送参数  
        $push = new \GTPushRequest();  
        $push->setRequestId(time());  
        $message = new \GTPushMessage();  
        $notify = new \GTNotification();  
        $channel = new \GTPushChannel();  

        //配置推送条件  
        $str = new \GTStrategy();  
        $str->setDefault(1);  
        $str->setHw(1);  
        $setting = new \GTSettings();  //定时推送暂无  
        $setting->setStrategy($str);  
        $push->setSettings($setting);  
        $setting->setTtl(3600000); ////消息有效期,走厂商消息需要设置该值  

       //推送苹果离线通知标题内容  
        $alert = new \GTAlert();  
         $alert->setTitle($title);  
       $alert->setBody($content);  
        $aps = new \GTAps();  
        //1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。  
        //苹果建议1小时最多推送3条静默消息  
        $aps->setContentAvailable(0);  
       $aps->setSound("default");  
       $aps->setAlert($alert);  
       $iosDto = new \GTIos();  
       $iosDto->setAps($aps);  
        $iosDto->setType("notify");  
        $pushChannel = new \GTPushChannel();  
        $pushChannel->setIos($iosDto);  

        //安卓离线厂商通道推送消息体  
        $pushChannel = new \GTPushChannel();  
        $androidDTO = new \GTAndroid();  
        $ups = new \GTUps();  
        $notification1 = new \GTThirdNotification();;  
        $notification1->setTitle($title);  
        $notification1->setBody($content);  
        $ups->setNotification($notification1);  
        if($clickType == 'none')  //设置推送类型  
        {  
            $notification1->setClickType($clickType);  
        }else if($clickType == 'payload' || $clickType == 'payload_custom'){ //自定义消息 打开APP和不打开APP  
            $notification1->setClickType($clickType);  
            $notification1->setPayload(json_encode($data));  
        }else if($clickType == 'url'){  //打开URL  
            $notification1->setClickType($clickType);  
            $notification1->setUrl($url);  
        }else if($clickType == 'intent'){  //打开特定页面  
            $notification1->setClickType($clickType);  
            $notification1->setIntent("intent:#Intent;component=com.hqtwtq.y8/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode($title).";S.content=".urlencode($content).";S.payload=".json_encode($data).";end");  
        }else{  
            $notification1->setClickType($clickType);  
        }  
            //各厂商自有功能单项设置  
        if($time){  
            $message->setDuration($time);  //设置推送时间  
            $data = json_encode(array('title'=>$title,'content'=>$content,'duration'=>$time,'importance'=>'HIGH','payload'=>json_encode($data)));  
        }else{  
            $data = json_encode(array('title'=>$title,'content'=>$content,'payload'=>json_encode($data)));  
        }  
        //$ups->setTransmission($data);  
        $androidDTO->setUps($ups);  
        $pushChannel->setAndroid($androidDTO);  
        $push->setPushChannel($pushChannel);  

        //个推在线通道  
        $notify->setTitle($title);  
        $notify->setBody($content);  
        if($img) $notify->setBigImage($img); //推送图片  
        //1、intent:打开应用内特定页面 2、url:打开网页地址。3、payload:自定义消息内容启动应用。4、payload_custom:自定义消息内容不启动应用。5、startapp:打开应用首页。6、none:纯通知,无后续动作  
        if($clickType == 'none')  //设置推送类型  
        {  
            $notify->setClickType($clickType);  
        }else if($clickType == 'payload' || $clickType == 'payload_custom'){ //自定义消息 打开APP和不打开APP  
            $notify->setClickType($clickType);  
            $notify->setPayload(json_encode($data));  
        }else if($clickType == 'url'){  //打开URL  
            $notify->setClickType($clickType);  
            $notify->setUrl($url);  
        }else if($clickType == 'intent'){  //打开特定页面  
            $notify->setClickType($clickType);  
            $notify->setIntent("intent:#Intent;component=com.hqtwtq.y8/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=".urlencode($title).";S.content=".urlencode($content).";S.payload=".json_encode($data).";end");  
        }else{  
            $notify->setClickType($clickType);  
        }  
        $message->setNotification($notify);  
        $push->setPushMessage($message);  
      /*  if($time){  
            $message->setDuration($time);  //设置推送时间  
            $data = json_encode(array('title'=>$title,'body'=>$content,'duration'=>$time,'importance'=>'HIGH','payload'=>json_encode($data)));  
        }else{  
            $data = json_encode(array('title'=>$title,'body'=>$content,'payload'=>json_encode($data)));  
        }  
        $ups->setTransmission($data);  //  
        $android->setUps($ups);  
        $channel->setAndroid($android);  
        $push->setPushChannel($channel);  
        $push->setPushMessage($message);*/  
        if($cid)  //推送给某个用户  
        {  
            $push->setCid($cid);  
            //处理返回结果  
            $result = $api->pushApi()->pushToSingleByCid($push);  
        }else{  
            $result = $api->pushApi()->pushAll($push);  
        }  
        Log::info('推送数据:【推送】'.json_encode($result)); //写入日志  
        return $result;
收起阅读 »

unipush,APP离线推送,无法触发click问题原因。

unipush

原因:厂商通道的intent配置遗漏导致。

错误示例(按?号提示上写的格式):intent:#Intent;component=你的包名/io.dcloud.PandoraEntry;S.title=标题10;S.content=内容10;S.payload=%7B%22type%22%3A%222%22%2C%22url%22%3A%22pages%2Factivity%2Ftakeaway%2Findex%22%7D;end

正确示例:intent:#Intent;component=你的包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=标题10;S.content=内容10;S.payload=%7B%22type%22%3A%222%22%2C%22url%22%3A%22pages%2Factivity%2Ftakeaway%2Findex%22%7D;end

总结:S.UP-OL-SU=true; 是必须要写的,不写会无法触发click的监听。

继续阅读 »

原因:厂商通道的intent配置遗漏导致。

错误示例(按?号提示上写的格式):intent:#Intent;component=你的包名/io.dcloud.PandoraEntry;S.title=标题10;S.content=内容10;S.payload=%7B%22type%22%3A%222%22%2C%22url%22%3A%22pages%2Factivity%2Ftakeaway%2Findex%22%7D;end

正确示例:intent:#Intent;component=你的包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=标题10;S.content=内容10;S.payload=%7B%22type%22%3A%222%22%2C%22url%22%3A%22pages%2Factivity%2Ftakeaway%2Findex%22%7D;end

总结:S.UP-OL-SU=true; 是必须要写的,不写会无法触发click的监听。

收起阅读 »

uni-app App打包(基础配置)

uniapp 移动APP 小程序 公众号 HTML5

线上案例
1,模块配置
打开项目点击 manifest.json

image.png
模块配置勾选 支付、登录、分享、 ViderPlayer和自己需要用的模块填写相关配置 Ctrl+s 保存
APP自动生成图标选择一个1024x1024的图片传上去,生成一下就好了

2,权限配置
安卓的已经配置好了,ios的必须开发者填写相关的描述信息,需要用那些就填写哪些,ios必须填写详细,不然上架容易被拒

image.png
安卓的权限中文说明地址:http://www.kjson.com/files/androidmanifest

3,模块配置

1.定位选择高德地图,App端只支持高德地图,所以尽量选择高德地图,key在高德开发平台就可以申请到  
2.OAuth 授权登录  
    一键登录是uni-app官方自带的,详情请看官方文档  
    地址:https://uniapp.dcloud.io/univerify  
3.自定义第三方登录比如:微信登录  
  请填写相关的配置就可以了  
4注意:  
ios端如果包含了任何第三方登录,那必须也得把苹果登录也带上,不然苹果上架审核不通过  
根据苹果审核指南要求,如果 app 使用第三方或社交登录服务 (例如,Facebook 登录、Google 登录、通过 Twitter 登录、通过 LinkedIn 登录、通过 Amazon 登录或微信登录) 来对其进行设置或验证这个 app 的用户主帐户,则该 app 必须同时提供“通过 Apple 登录”作为同等选项。详情参考:App Store 审核指南 - 通过 Apple 登录  
说明:https://ask.dcloud.net.cn/article/36651  
5. 支付、分享填写相关的配置就可以了  
6. 如果有视频,需要勾选VideoPlayer(视频播放)  

4,App常用其它设置

image.png

为了方便测试选择了全部支持,测试的时候由于各种模拟器支持的不一样所以都勾选了,打包上线的时候选择第一个就可以,不然ios容易出现以下问题

image.png

具体说明可以看dcloud的文档
https://ask.dcloud.net.cn/article/36195

也可访问线上案例

继续阅读 »

线上案例
1,模块配置
打开项目点击 manifest.json

image.png
模块配置勾选 支付、登录、分享、 ViderPlayer和自己需要用的模块填写相关配置 Ctrl+s 保存
APP自动生成图标选择一个1024x1024的图片传上去,生成一下就好了

2,权限配置
安卓的已经配置好了,ios的必须开发者填写相关的描述信息,需要用那些就填写哪些,ios必须填写详细,不然上架容易被拒

image.png
安卓的权限中文说明地址:http://www.kjson.com/files/androidmanifest

3,模块配置

1.定位选择高德地图,App端只支持高德地图,所以尽量选择高德地图,key在高德开发平台就可以申请到  
2.OAuth 授权登录  
    一键登录是uni-app官方自带的,详情请看官方文档  
    地址:https://uniapp.dcloud.io/univerify  
3.自定义第三方登录比如:微信登录  
  请填写相关的配置就可以了  
4注意:  
ios端如果包含了任何第三方登录,那必须也得把苹果登录也带上,不然苹果上架审核不通过  
根据苹果审核指南要求,如果 app 使用第三方或社交登录服务 (例如,Facebook 登录、Google 登录、通过 Twitter 登录、通过 LinkedIn 登录、通过 Amazon 登录或微信登录) 来对其进行设置或验证这个 app 的用户主帐户,则该 app 必须同时提供“通过 Apple 登录”作为同等选项。详情参考:App Store 审核指南 - 通过 Apple 登录  
说明:https://ask.dcloud.net.cn/article/36651  
5. 支付、分享填写相关的配置就可以了  
6. 如果有视频,需要勾选VideoPlayer(视频播放)  

4,App常用其它设置

image.png

为了方便测试选择了全部支持,测试的时候由于各种模拟器支持的不一样所以都勾选了,打包上线的时候选择第一个就可以,不然ios容易出现以下问题

image.png

具体说明可以看dcloud的文档
https://ask.dcloud.net.cn/article/36195

也可访问线上案例

收起阅读 »

uni-app商城源码 h5+小程序+公众号+app

h5+ 公众号 移动APP 源码 小程序

线上案例

1:有详细的代码注释,有完整系统手册。
2:基于 SpringBoot 框架开发业界主流。
3:【前端】Web PC 管理端 vue + element UI。
4:【前端】移动端使用 UniApp 框架,前后端分离开发。
5:标准RESTful 接口、标准数据传输,逻辑层次更明确,更多的提高api复用。
6:支持Redis队列,降低流量高峰,解除耦合,高可用。
7:无缝事件机制,行为扩展更方便,方便二次开发。
8:数据导出,方便个性化分析。
9:数据统计分析,使用ECharts图表统计,实现用户、产品、订单、资金等统计分析。
10:权限管理,后台多种角色,多重身份权限管理,权限可以控制到按钮级别的操作。
11:Vue表单生成控件,拖拽配置表单,减少前端重复表单工作量,提高前端开发效率。



线上案例

继续阅读 »

线上案例

1:有详细的代码注释,有完整系统手册。
2:基于 SpringBoot 框架开发业界主流。
3:【前端】Web PC 管理端 vue + element UI。
4:【前端】移动端使用 UniApp 框架,前后端分离开发。
5:标准RESTful 接口、标准数据传输,逻辑层次更明确,更多的提高api复用。
6:支持Redis队列,降低流量高峰,解除耦合,高可用。
7:无缝事件机制,行为扩展更方便,方便二次开发。
8:数据导出,方便个性化分析。
9:数据统计分析,使用ECharts图表统计,实现用户、产品、订单、资金等统计分析。
10:权限管理,后台多种角色,多重身份权限管理,权限可以控制到按钮级别的操作。
11:Vue表单生成控件,拖拽配置表单,减少前端重复表单工作量,提高前端开发效率。



线上案例

收起阅读 »

微信小程序顶部导航栏自定义组件

小程序

navHeader.vue,已经计算好高度,调用: <navHeader></navHeader>

<template>  
    <view>  
        <view class="bg-orange" :style="'height:'+statusBarHeight+'px'"></view>  
        <view class="bg-orange flex align-center justify-center" :style="'height:'+navBarHeight+'px'">  
            <view class="text-lg">  
                {{title}}  
            </view>  
        </view>  
    </view>  
</template>  

<script>  
    export default {  
        name:"navHeader",  
        data() {  
            return {  
                statusBarHeight: 0,  
                navBarHeight: 0,  
                title:'测试'  
            };  
        },  
        created() {  
            this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;  
             let plat = uni.getSystemInfoSync().platform;  
             this.navBarHeight = 44;  
             if(plat=='android'){  
                  this.navBarHeight = 48;  
             }  
        }  
    }  
</script>  

<style>  

</style>  
继续阅读 »

navHeader.vue,已经计算好高度,调用: <navHeader></navHeader>

<template>  
    <view>  
        <view class="bg-orange" :style="'height:'+statusBarHeight+'px'"></view>  
        <view class="bg-orange flex align-center justify-center" :style="'height:'+navBarHeight+'px'">  
            <view class="text-lg">  
                {{title}}  
            </view>  
        </view>  
    </view>  
</template>  

<script>  
    export default {  
        name:"navHeader",  
        data() {  
            return {  
                statusBarHeight: 0,  
                navBarHeight: 0,  
                title:'测试'  
            };  
        },  
        created() {  
            this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight;  
             let plat = uni.getSystemInfoSync().platform;  
             this.navBarHeight = 44;  
             if(plat=='android'){  
                  this.navBarHeight = 48;  
             }  
        }  
    }  
</script>  

<style>  

</style>  
收起阅读 »