HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

解决Android8.0及以上版本系统通知消息无法显示问题

Native.JS

新手代码写的有点乱。。 之前借鉴了几位大神的代码,在8.0之前非常好用,最近需要投标突然发现自己手机收不到推送消息了,折磨了我一天啊。。
话不多说,放代码,希望对大家有用!!!!

                   var mNotification;  
            var SystemVersion = plus.os.version;    
            var firstVersionNumber = Number(SystemVersion.split('.')[0]);    
            var main = plus.android.runtimeMainActivity();  
            var Context = plus.android.importClass("android.content.Context");  
            var Noti = plus.android.importClass("android.app.Notification");  
            var NotificationManager = plus.android.importClass("android.app.NotificationManager");  
            var nm = main.getSystemService(Context.NOTIFICATION_SERVICE);  

            //var Notification = plus.android.importClass("android.app.Notification");  
            var Intent = plus.android.importClass("android.content.Intent");  
            var PendingIntent = plus.android.importClass("android.app.PendingIntent");  
            var intent = new Intent(main, main.getClass());  
            var pendingIntent = PendingIntent.getActivity(main, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);  
            var r = plus.android.importClass("android.R");  
            if (firstVersionNumber>=8) {  
                Notification = plus.android.importClass("android.support.v4.app.NotificationCompat");    
            } else {    
                Notification = plus.android.importClass("android.app.Notification");    
            }    
            if(firstVersionNumber>=8){//判断当前系统版本在8.0及以上    
                  var NotificationChannel = plus.android.importClass('android.app.NotificationChannel');    
                  var channel = new NotificationChannel("s"+ NotifyID, "1", NotificationManager.IMPORTANCE_HIGH);    
                  nm.createNotificationChannel(channel);  
                  mNotification = new Notification.Builder(main,"s" +NotifyID);    
            }else{    
                  //设为true代表常驻状态栏    
                  //this.mNotificationBuild.setNumber(defaultNumber)   
                  mNotification = new Notification.Builder(main);    
            }    

            mNotification.setContentTitle("xxxxx")  
            mNotification.setContentText(str);  
            mNotification.setSubText(str1);  
            mNotification.setSmallIcon(17301620);  
            mNotification.setDefaults(Noti.DEFAULT_VIBRATE);//声音、闪灯、震动效果,可叠加  
            mNotification.setPriority(Noti.PRIORITY_DEFAULT);//通知优先级  
            mNotification.flags=Notification.FLAG_ONLY_ALERT_ONCE;//发起通知时震动  
            mNotification.setContentIntent(pendingIntent);  
            var mNb = mNotification.build();  
            if(firstVersionNumber>=8){//判断当前系统版本在8.0及以上  
                  nm.notify("s"+ NotifyID,NotifyID, mNb);  
            }else{    
                  nm.notify(NotifyID, mNb);  
            }    
            void plus.device.beep(5);  
            plus.device.vibrate(300);  
            NotifyID  ;  
继续阅读 »

新手代码写的有点乱。。 之前借鉴了几位大神的代码,在8.0之前非常好用,最近需要投标突然发现自己手机收不到推送消息了,折磨了我一天啊。。
话不多说,放代码,希望对大家有用!!!!

                   var mNotification;  
            var SystemVersion = plus.os.version;    
            var firstVersionNumber = Number(SystemVersion.split('.')[0]);    
            var main = plus.android.runtimeMainActivity();  
            var Context = plus.android.importClass("android.content.Context");  
            var Noti = plus.android.importClass("android.app.Notification");  
            var NotificationManager = plus.android.importClass("android.app.NotificationManager");  
            var nm = main.getSystemService(Context.NOTIFICATION_SERVICE);  

            //var Notification = plus.android.importClass("android.app.Notification");  
            var Intent = plus.android.importClass("android.content.Intent");  
            var PendingIntent = plus.android.importClass("android.app.PendingIntent");  
            var intent = new Intent(main, main.getClass());  
            var pendingIntent = PendingIntent.getActivity(main, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);  
            var r = plus.android.importClass("android.R");  
            if (firstVersionNumber>=8) {  
                Notification = plus.android.importClass("android.support.v4.app.NotificationCompat");    
            } else {    
                Notification = plus.android.importClass("android.app.Notification");    
            }    
            if(firstVersionNumber>=8){//判断当前系统版本在8.0及以上    
                  var NotificationChannel = plus.android.importClass('android.app.NotificationChannel');    
                  var channel = new NotificationChannel("s"+ NotifyID, "1", NotificationManager.IMPORTANCE_HIGH);    
                  nm.createNotificationChannel(channel);  
                  mNotification = new Notification.Builder(main,"s" +NotifyID);    
            }else{    
                  //设为true代表常驻状态栏    
                  //this.mNotificationBuild.setNumber(defaultNumber)   
                  mNotification = new Notification.Builder(main);    
            }    

            mNotification.setContentTitle("xxxxx")  
            mNotification.setContentText(str);  
            mNotification.setSubText(str1);  
            mNotification.setSmallIcon(17301620);  
            mNotification.setDefaults(Noti.DEFAULT_VIBRATE);//声音、闪灯、震动效果,可叠加  
            mNotification.setPriority(Noti.PRIORITY_DEFAULT);//通知优先级  
            mNotification.flags=Notification.FLAG_ONLY_ALERT_ONCE;//发起通知时震动  
            mNotification.setContentIntent(pendingIntent);  
            var mNb = mNotification.build();  
            if(firstVersionNumber>=8){//判断当前系统版本在8.0及以上  
                  nm.notify("s"+ NotifyID,NotifyID, mNb);  
            }else{    
                  nm.notify(NotifyID, mNb);  
            }    
            void plus.device.beep(5);  
            plus.device.vibrate(300);  
            NotifyID  ;  
收起阅读 »

真机运行

uniapp

在某个电脑上就完全运行不了真机

在某个电脑上就完全运行不了真机

uni-popup滚动时,父组件跟随滚动

popup

定义CSS

.wos-scroll-no{  
    height:98vh;  
    overflow-y: hidden;  
}  
.wos-scroll-yes{  
    height:auto;  
    overflow-y:auto;  
}

父组件绑定data

<view :class="wosScroll">  
...  
<view>
...  
data() {  
        return {  
            wosScroll:"wos-scroll-yes",  
...

修改uni-popup.vue。找到以下部分加入

open () {  
     this.$parent.wosScroll = 'wos-scroll-no'   //新加入的 ++++++  
      this.$emit('change', {  
        show: true  
      })  
      this.showPopup = true  
      this.$nextTick(() => {  
        setTimeout(() => {  
          this.ani = '' + this.type  
        }, 30)  
      })  
    },  
    close (type) {  
      this.$parent.wosScroll = 'wos-scroll-yes'  //新加入的 +++++++++  
      if (!this.maskClick && type) return  
      this.$emit('change', {  
        show: false  
      })  
      this.ani = ''  
      this.$nextTick(() => {  
        setTimeout(() => {  
          this.showPopup = false  
        }, 300)  
      })  
    }
继续阅读 »

定义CSS

.wos-scroll-no{  
    height:98vh;  
    overflow-y: hidden;  
}  
.wos-scroll-yes{  
    height:auto;  
    overflow-y:auto;  
}

父组件绑定data

<view :class="wosScroll">  
...  
<view>
...  
data() {  
        return {  
            wosScroll:"wos-scroll-yes",  
...

修改uni-popup.vue。找到以下部分加入

open () {  
     this.$parent.wosScroll = 'wos-scroll-no'   //新加入的 ++++++  
      this.$emit('change', {  
        show: true  
      })  
      this.showPopup = true  
      this.$nextTick(() => {  
        setTimeout(() => {  
          this.ani = '' + this.type  
        }, 30)  
      })  
    },  
    close (type) {  
      this.$parent.wosScroll = 'wos-scroll-yes'  //新加入的 +++++++++  
      if (!this.maskClick && type) return  
      this.$emit('change', {  
        show: false  
      })  
      this.ani = ''  
      this.$nextTick(() => {  
        setTimeout(() => {  
          this.showPopup = false  
        }, 300)  
      })  
    }
收起阅读 »

Mac: 关于HBuilderX在 macOS Catalina 10.15新系统上的运行说明

macOS Catalina macos 10.15

.
10月8日凌晨, 苹果正式推送了macOS Catalina 10.15系统。
操作系统主要更新了权限相关方面,为了大家更好使用,小编汇总了一下可能遇到的问题。
.

问题:项目管理器:以前的项目无法展开了,或文件无法保存了

原因: mac 10.15, 访问文稿目录,需要授权

解决方案:

  1. 打开【设置App】-->【安全性与隐私】--> 【隐私】--> 【文件与文件夹】
  2. 找到HBuilderX,勾选复选框

更新:10月16日起,HBuilderX 2.3.3已经通过了苹果的认证,默认即可获得授权,无需再进行额外设置。

继续阅读 »

.
10月8日凌晨, 苹果正式推送了macOS Catalina 10.15系统。
操作系统主要更新了权限相关方面,为了大家更好使用,小编汇总了一下可能遇到的问题。
.

问题:项目管理器:以前的项目无法展开了,或文件无法保存了

原因: mac 10.15, 访问文稿目录,需要授权

解决方案:

  1. 打开【设置App】-->【安全性与隐私】--> 【隐私】--> 【文件与文件夹】
  2. 找到HBuilderX,勾选复选框

更新:10月16日起,HBuilderX 2.3.3已经通过了苹果的认证,默认即可获得授权,无需再进行额外设置。

收起阅读 »

uniapp-小程序支付DOME

支付

DOME已测试,后端代


码,调用,前端使用,数据样例都写在附件里了,测试没问题整理到有道云笔记后导出的pdf

DOME已测试,后端代


码,调用,前端使用,数据样例都写在附件里了,测试没问题整理到有道云笔记后导出的pdf

上一个app的MQTT例子

App

利用plus-websocket和修改后的mqttws31.js实现,看附件代码(代码已删)
官方App端已修复 websocket 问题,可以使用 MQTT.js,示例:https://ext.dcloud.net.cn/plugin?id=854

利用plus-websocket和修改后的mqttws31.js实现,看附件代码(代码已删)
官方App端已修复 websocket 问题,可以使用 MQTT.js,示例:https://ext.dcloud.net.cn/plugin?id=854

mui在线房屋出租租房平台app界面模板

mui

基于mui框架制作的一款在线房屋出租租房平台app界面模板,房屋租赁手机app模板,挺不错的,推荐给大家。

下载地址:https://www.sucaihuo.com/templates/6225.html

继续阅读 »

基于mui框架制作的一款在线房屋出租租房平台app界面模板,房屋租赁手机app模板,挺不错的,推荐给大家。

下载地址:https://www.sucaihuo.com/templates/6225.html

收起阅读 »

点击返回按钮出现提示框,确定的时候才返回

uniapp

有时候我们在编辑页面的时候有这样一个场景,当用户点击返回按钮,给一个弹框,提示是否确定返回,以下是代码实现

onBackPress(options) {  
      // 如果是返回按钮,才做执行  
      if (options.from === 'backbutton') {  
        uni.showModal({  
          title: '提示',  
          content: '确定退出编辑吗?',  
          success: (res) => {  
            if (res.confirm) {  
              uni.navigateBack()  
            }  
          }  
        })  
        // 禁止默认返回  
        return true  
      }  
    },
继续阅读 »

有时候我们在编辑页面的时候有这样一个场景,当用户点击返回按钮,给一个弹框,提示是否确定返回,以下是代码实现

onBackPress(options) {  
      // 如果是返回按钮,才做执行  
      if (options.from === 'backbutton') {  
        uni.showModal({  
          title: '提示',  
          content: '确定退出编辑吗?',  
          success: (res) => {  
            if (res.confirm) {  
              uni.navigateBack()  
            }  
          }  
        })  
        // 禁止默认返回  
        return true  
      }  
    },
收起阅读 »

iOS提交AppStore审核时:提示有其他支付并隐藏功能被拒的处理办法

提示有其他支付并隐藏功能被拒 iOS离线打包

背景提示:数字类产品(比如购买会员等不需要配送实物的商品),Apple规定必须使用苹果IAP应用内支付,给Apple分成30%。打包的时候不要勾选微信或支付宝等其他支付方式。如果你提交的包里包含了微信支付宝等支付的sdk,即使没使用,Appstore也会认为你有隐藏方式,以后会绕过iap,不给Apple分成,因此拒绝你的App上线

  • 应用中如果没有交易功能,不要包含任何支付相关模块和任何支付相关的js代码
  • 应用中如果只包含虚拟物品交易,只能使用苹果应用内支付(IAP),不能使用支付宝和微信支付
  • 应用中如果包含实物交易,可以包含支付宝和微信支付

使用HBuilderX提交云端打包

提交苹果商店审核时,提示“有其他支付并隐藏功能被拒”或者“报PGPay SDK不允许上架的问题”,请按以下方法处理:

  • 如果应用没有交易功能,在manifest.json的“(App)模块权限配置”页的“打包模块配置”项下不要勾选“Payment(支付)”,重新打包提交
  • 如果应用只包含虚拟物品交易,在manifest.json的“(App)SDK配置”页的“支付”项下勾选“Apple应用内支付”,不要勾选支付宝和微信支付。这时需要和苹果沟通,说明的大概意思是:PGPay SDK 的PGPay只是个名字而已,并不是什么支付SDK,并没有违反苹果支付相关的政策。
  • 如果应用包含实物交易,可以使用支付宝和微信支付。这时需要和苹果沟通,说明应用使用支付功能的场景。

使用5+ SDK本地离线打包

按照签名的规则确定应用包含的支付模块,按以下方法确认:

  • 确定工程中是否有微信和支付宝支付的功能,如果没有把不需要的微信和支付宝的相关库删除,删除时参考离线sdk包里的Feature-iOS.xls文件中Payment模块的配置。
    注意:微信SDK有2个,一个是带支付的(libWeChatSDK_pay.a),一个是不带支付的(libWeChatSDK.a),删除时,删除带支付的。但是工程中有用到微信其他的功能需要添加libWeChatSDK.a库以免编译报错
  • 如果工程中没有微信和支付宝的功能,但是有苹果支付的功能需要liblibPayment.a库和libIAPPay.a,只有libIAPPay.a库,工程编译会报错。
  • 如果工程中也没有苹果支付,那么把liblibPayment.a库和libIAPPay.a都删除,删除时参考离线sdk包里的Feature-iOS.xls文件中Payment模块的配置。
  • 如果工程中有libBaiduWalletSDK.a,libpingpppay.a和libpingpp.a这3个库,Pingpp.bundle和BaiduWalletSDKBundle.bundle这2个文件,把它们都删除。
  • 如果删除过程中编译报“_SKStoreProductViewController”这么一个错,需要在工程中添加系统库StoreKit.framework。
  • 如果工程中没有支付功能需把相关的支付的js代码删除。
  • 查看工程中PandoraApi.bundle中feature.plist文件,把Payment节点下的extend节点里的项,按自己的业务情况删除;比如,业务中没有支付宝支付,那就把“alix”这项删除,没有微信支付,就把“weixin”这项删除,如果没有支付功能,把Payment整个节点删除。
  • 如果还是提示“有其他支付并隐藏功能被拒”或者“报PGPay SDK不允许上架的问题”,需要和苹果沟通,说明的大概意思是:PGPay SDK 的PGPay只是个名字而已,并不是什么支付SDK,并没有违反苹果支付相关的政策。

提示这个“报PGPay SDK不允许上架的问题” 在2.3.3.20190924之后的版本会把名字改掉,以便不再报这个上架的问题。

继续阅读 »

背景提示:数字类产品(比如购买会员等不需要配送实物的商品),Apple规定必须使用苹果IAP应用内支付,给Apple分成30%。打包的时候不要勾选微信或支付宝等其他支付方式。如果你提交的包里包含了微信支付宝等支付的sdk,即使没使用,Appstore也会认为你有隐藏方式,以后会绕过iap,不给Apple分成,因此拒绝你的App上线

  • 应用中如果没有交易功能,不要包含任何支付相关模块和任何支付相关的js代码
  • 应用中如果只包含虚拟物品交易,只能使用苹果应用内支付(IAP),不能使用支付宝和微信支付
  • 应用中如果包含实物交易,可以包含支付宝和微信支付

使用HBuilderX提交云端打包

提交苹果商店审核时,提示“有其他支付并隐藏功能被拒”或者“报PGPay SDK不允许上架的问题”,请按以下方法处理:

  • 如果应用没有交易功能,在manifest.json的“(App)模块权限配置”页的“打包模块配置”项下不要勾选“Payment(支付)”,重新打包提交
  • 如果应用只包含虚拟物品交易,在manifest.json的“(App)SDK配置”页的“支付”项下勾选“Apple应用内支付”,不要勾选支付宝和微信支付。这时需要和苹果沟通,说明的大概意思是:PGPay SDK 的PGPay只是个名字而已,并不是什么支付SDK,并没有违反苹果支付相关的政策。
  • 如果应用包含实物交易,可以使用支付宝和微信支付。这时需要和苹果沟通,说明应用使用支付功能的场景。

使用5+ SDK本地离线打包

按照签名的规则确定应用包含的支付模块,按以下方法确认:

  • 确定工程中是否有微信和支付宝支付的功能,如果没有把不需要的微信和支付宝的相关库删除,删除时参考离线sdk包里的Feature-iOS.xls文件中Payment模块的配置。
    注意:微信SDK有2个,一个是带支付的(libWeChatSDK_pay.a),一个是不带支付的(libWeChatSDK.a),删除时,删除带支付的。但是工程中有用到微信其他的功能需要添加libWeChatSDK.a库以免编译报错
  • 如果工程中没有微信和支付宝的功能,但是有苹果支付的功能需要liblibPayment.a库和libIAPPay.a,只有libIAPPay.a库,工程编译会报错。
  • 如果工程中也没有苹果支付,那么把liblibPayment.a库和libIAPPay.a都删除,删除时参考离线sdk包里的Feature-iOS.xls文件中Payment模块的配置。
  • 如果工程中有libBaiduWalletSDK.a,libpingpppay.a和libpingpp.a这3个库,Pingpp.bundle和BaiduWalletSDKBundle.bundle这2个文件,把它们都删除。
  • 如果删除过程中编译报“_SKStoreProductViewController”这么一个错,需要在工程中添加系统库StoreKit.framework。
  • 如果工程中没有支付功能需把相关的支付的js代码删除。
  • 查看工程中PandoraApi.bundle中feature.plist文件,把Payment节点下的extend节点里的项,按自己的业务情况删除;比如,业务中没有支付宝支付,那就把“alix”这项删除,没有微信支付,就把“weixin”这项删除,如果没有支付功能,把Payment整个节点删除。
  • 如果还是提示“有其他支付并隐藏功能被拒”或者“报PGPay SDK不允许上架的问题”,需要和苹果沟通,说明的大概意思是:PGPay SDK 的PGPay只是个名字而已,并不是什么支付SDK,并没有违反苹果支付相关的政策。

提示这个“报PGPay SDK不允许上架的问题” 在2.3.3.20190924之后的版本会把名字改掉,以便不再报这个上架的问题。

收起阅读 »

自定义相机,拍照,拍题

相机权限 拍照 插件

https://ext.dcloud.net.cn/plugin?id=838

启用原生相机进行拍照或者选择相册中的照片,进行二次裁剪

如需5+ 离线打包请联系作者

继续阅读 »

https://ext.dcloud.net.cn/plugin?id=838

启用原生相机进行拍照或者选择相册中的照片,进行二次裁剪

如需5+ 离线打包请联系作者

收起阅读 »

iOS平台微信SDK更新需要配置通用链接(Universal Links)

iOS 通用链接

本文档已过期,适用于:本地离线打包或者由于某种原因你需要用传统的方式:私有化部署服务器来托管apple-app-site-association文件创建通用链接。

推荐使用:一键生成iOS通用链接

从HBuilderX 2.3.4版本开始,微信SDK(登录、分享、支付)更新到openSDK1.8.6。

由于苹果iOS 13系统版本安全升级,微信SDK1.8.6版本要求支持Universal Links方式跳转,以便进行合法性校验,提升安全性。更多详情请参考微信官方说明

如果不配置通用链接,使用新版本HX提交云端打包会失败,提示以下错误信息:

Error code = -5000  
Error message:   
Error: not set parameter 'UniversalLinks' @'oauth-weixin'

第一步:配置应用支持通用链接

参考:iOS平台配置通用链接(Universal Link)

以上配置完成可确定通用链接地址,如“https://demo.dcloud.net.cn/ulink/”(要求必须使用https协议,以"/"结尾,此链接仅为文档示例,实际应用请根据自己的配置填写

第二步:在微信开放平台配置通用链接

打开微信开发平台,在“管理中心”页面的“移动应用”下找到已经申请的应用(没有申请应用请点击“创建移动应用”新建应用),点击“查看”打开应用详情页面。
在“开发信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接,如下图所示:

第三步:在HBuilderX中配置通用链接提交云端打包

将上一步在微信开放平台配置的通用链接地址配置到应用manifest.json中,注意通用链接地址必须完全一致(本地离线打包忽略此操作)
打开项目的manifest.json文件,在“(App) SDK配置”项中的微信登录(微信分享、微信支付)下的“iOS平台通用链接(Universal Links)”中配置:

如果使用了微信分享和微信支付,也需要分别配置微信分享和微信支付下的“iOS平台通用链接(Universal Links)”,并且配置的值必须相同


保存后需提交云端打包生效。

本地离线打包配置微信通用链接

参考:https://ask.dcloud.net.cn/article/309#ulink

继续阅读 »

本文档已过期,适用于:本地离线打包或者由于某种原因你需要用传统的方式:私有化部署服务器来托管apple-app-site-association文件创建通用链接。

推荐使用:一键生成iOS通用链接

从HBuilderX 2.3.4版本开始,微信SDK(登录、分享、支付)更新到openSDK1.8.6。

由于苹果iOS 13系统版本安全升级,微信SDK1.8.6版本要求支持Universal Links方式跳转,以便进行合法性校验,提升安全性。更多详情请参考微信官方说明

如果不配置通用链接,使用新版本HX提交云端打包会失败,提示以下错误信息:

Error code = -5000  
Error message:   
Error: not set parameter 'UniversalLinks' @'oauth-weixin'

第一步:配置应用支持通用链接

参考:iOS平台配置通用链接(Universal Link)

以上配置完成可确定通用链接地址,如“https://demo.dcloud.net.cn/ulink/”(要求必须使用https协议,以"/"结尾,此链接仅为文档示例,实际应用请根据自己的配置填写

第二步:在微信开放平台配置通用链接

打开微信开发平台,在“管理中心”页面的“移动应用”下找到已经申请的应用(没有申请应用请点击“创建移动应用”新建应用),点击“查看”打开应用详情页面。
在“开发信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接,如下图所示:

第三步:在HBuilderX中配置通用链接提交云端打包

将上一步在微信开放平台配置的通用链接地址配置到应用manifest.json中,注意通用链接地址必须完全一致(本地离线打包忽略此操作)
打开项目的manifest.json文件,在“(App) SDK配置”项中的微信登录(微信分享、微信支付)下的“iOS平台通用链接(Universal Links)”中配置:

如果使用了微信分享和微信支付,也需要分别配置微信分享和微信支付下的“iOS平台通用链接(Universal Links)”,并且配置的值必须相同


保存后需提交云端打包生效。

本地离线打包配置微信通用链接

参考:https://ask.dcloud.net.cn/article/309#ulink

收起阅读 »

Hello Hbuilder ,i'm coming.

Hello uni-app,i'm coming.Studing and testing……

Hello uni-app,i'm coming.Studing and testing……