1.Spring Cloud + Spring Boot + Mybatis 源码+ Uniapp 企业架构之CAS SSO单点登录框架
2.2023-08-15 如何在 uni-app 中检测 APP 端是否有通知权限
3.盲盒商城源码开源完整版附搭建教程UNIAPP·HashMart
4.使用appuploader常见问题汇总
5.uniapp mp 的runtime位置以及开启调试
6.uniappåhbuilderçå
³ç³»ï¼
Spring Cloud + Spring Boot + Mybatis + Uniapp 企业架构之CAS SSO单点登录框架
了解单点登录(SSO)是一种在多个相关应用之间共享认证信息的机制。SSO主要特点在于使用统一的源码登录入口,通过Web协议(如HTTPS)实现应用之间的源码认证。单点登录体系包括用户、源码Web应用和SSO认证中心三个角色。源码SSO实现基于三个核心原则:所有登录操作在SSO认证中心执行;认证中心通过方法告知Web应用访问用户是源码艺术指标源码大全否已通过认证;SSO认证中心与所有Web应用建立信任关系。
CAS SSO单点登录体系由CAS Server和CAS Client组成。源码CAS Server负责用户信息认证,源码独立部署,源码处理凭证(Credentials)。源码CAS Client部署在客户端,源码当有对本地Web应用受保护资源的源码访问请求时,重定向到CAS Server进行认证。源码
采用CAS SSO单点登录无需依赖Cookie实现跨域,源码优势明显。源码在不同站点间无需重新登录,即便站点域名不同。传统方案可能遇到Cookie跨域问题,解决复杂。CAS SSO单点登录的官方文档和源代码可直接访问:apereo.org/projects/cas。推荐下载稳定版本,如4.2.1,避免使用最新版本可能存在的不稳定情况。通过远程Maven库下载cas-server-webapp的war包,步骤包括访问Maven地址搜索并下载最新版本。下载cas-client-core的jar包,支持Spring MVC开发,适用于多种协议与开发语言。CAS架构图展示了其组件与工作流程,根据项目需求选择合适的版本进行部署。
-- 如何在 uni-app 中检测 APP 端是否有通知权限
参考链接: uniapp.dcloud.net.cn/ap...
最近想实现 APP 端的推送功能,需要检测 APP 是否具备通知权限,对此进行了一些研究,以下是我的记录。
检测是指标源码荟萃否有推送权限
不多说,直接给出uni-app 官方已经为我们封装好了相关 API。
需要注意的是,这个 API 只能在 App 和微信小程序端使用,需要进行条件编译。
跳转系统授权管理页
如果没有得到授权,通常需要引导用户进行授权,这时需要跳转到系统授权的管理页。
参考代码如下:
与上一个 API 类似,也需要进行条件编译的兼容。
其他实现方式
最后,再补充一下非官方的实现方式。
判断 Android 推送权限是否开启
Android 跳转到应用的权限页面
iOS 版的实现由于没有设备进行测试,所以代码就不展示了,可以参考官方插件的实现。
但是,由于官方插件已经很久没有更新,目前的可用性不高,请下载源码后自行调试。
总结
本文介绍了 uni-app 官方提供的两个 API:uni.getAppAuthorizeSetting() 和 uni.openAppAuthorizeSetting(),它们分别用于检测和跳转到 APP 端的通知权限设置页面。
还提供了非官方的实现方式,主要针对 Android 平台,利用 plus.android 模块和 Java 类库实现相同功能。
注意,代码需要进行条件编译,因为这两个 API 只支持在 APP 和微信小程序端使用。
盲盒商城源码开源完整版附搭建教程UNIAPP·HashMart
盲盒商城源码开源教程:UNIAPP·HashMart搭建详解 首先,确保您的环境准备。推荐使用宝塔搭建,获取源码地址后,安装宝塔面板:bt.cn/new/download.html。服务器环境推荐Linux CentOS,安装PHP扩展fileinfo和redis。域名设置示例,CCI 公式源码解析指向服务器。 对于前端环境,HBuilder X 3.7.6和微信开发者工具是必不可少的,Node.js版本需保持在v..0以上。 安装步骤如下:从码云下载源码至api目录,解压备用。
在宝塔中新建网站,上传api目录内容至服务器。
通过浏览器访问安装,依次输入协议、数据库信息,检查并安装。
安装完毕后,删除安装目录,登录后台使用管理员密码(如admin)。
为了自动处理超时订单,需配置定时任务,通过supervisor管理器定时运行ThinkPHP的crontab。 小程序编译方面,用HBuilderX打开uniapp文件夹,配置微信小程序AppID和接口地址,确保uniCloud文件夹在运行时存在。 最后,对于App编译,需设置uni-app应用标识和图标,配置云函数、云空间关联,完成发行并发布到App Store或Google Play。 基础配置至关重要,包括存储引擎、支付参数、小程序和uniapp配置。确保这些设置无误,盲盒商城系统才能正常运行。029溯源码使用appuploader常见问题汇总
无权限问题:未开通Apple开发者权限或未支付Apple开发者账户的元费用,只能制作测试证书,无法发布上传或推送。
一般选择“iOS Distribution”类型,邮箱随意填写。
编译设置iOS版本兼容号后,重新编译代码。
完成设置后下载P证书,了解证书有效期。
证书有效期十年,实际使用可能不准确,若遇问题,可查看通过命令生成的安卓证书。
上传app时,若遇到版本无法重复提交问题,初次审核未通过后,只能上传更新后的更高版本。
配置信息可在Xcode或Apple官网进行。
SKU为自定义识别字符。
购买激活码后,开发环境选择“iOS app development”或“apple development”类型,发布类型选择“Apple distribution”,无通用类型。
提示文件名称不规范时,确保填写名称。
选择测试设备需点击添加测试,使用数据线将苹果手机连接电脑获取UDID。
选择“iOS app development”或“apple development”类型,发布类型选择“Apple distribution”,无通用类型。
两个选项直接选择“create”。
上传IPA包时,提示“app套装ID”错误,查看Apple邮箱提示,pos云源码确保应用的Bundle Identifier与开发者账号中的AppID一致,注意不同的应用不要使用不同的AppID。
提交ipa包后,构建版本可能显示为空,等待大约分钟查看账号邮箱。
应用商店图标无效时,确保图标不透明,去除透明边角。
没有提交审核前图标不显示,需上传图标。
上传失败可能因工具版本过低,尝试使用新版本或更换网络,如使用手机热点。
使用手机流量上传时,网络不稳定,尝试上传通道2,或检查电脑端口占用情况。
构架版本问题,参照Apple邮箱提示进行调整。
解决NSUserTrackingUsageDescription问题,需在隐私政策中加以说明。
uniapp打包时无需描述文件。
iOS正式包能用于分发,需提交至App Store。
开通开发者账号遇到人脸识别失败问题,联系Apple团队,可能是之前注册过。
上传过程显示正在上传,网络拥堵导致。
配置隐私设置,检查bundle ID格式,确保唯一性。
上传的app在App Store中找不到版本,查看Apple邮箱。
生成p证书需使用开发环境,仅用于开发,不适用于其他用途。
证书过期后,重新登录工具即可生成新的。
创建证书时出现错误,检查已创建证书数量,确保不超过Apple允许的数量。
制作描述文件时确保勾选所有证书。
有效期7天的证书仅限Windows系统使用。
上传完成后,需进入App Store Connect进行审核流程。
创建bundle ID时无需前缀,可自行编写,确保唯一性。
点击证书进入检查,重新登录可能解决问题。
账号付费购买年费后,b账号无法上传包,每个账号有独立权限。
iOS应用支持接入微信支付和支付宝支付,但需考虑审核政策限制。
开发版本仅用于测试,正式版本为发布版本,无法在开发环境中安装。
购买appuploader后,无需额外支付Apple开发者账号费用,体验7天功能。
免费试用版本不能用于给别人手机下载。
使用appuploader上传iOS应用。
开发iOS应用时,可以使用免费Apple账号进行真机调试。
选择开发类型证书进行手机调试。
证书为Apple提供的。
Apple Account用于登录Apple ID。
续费后,描述文件和bundle ID无需更改。
激活码为免费试用7天,过期后需在线购买。
缺少推送通知权利问题,检查打包设置和证书配置是否一致。
隐私设置中勾选“用于追踪目的”以解决提交审核问题。
iOS驱动需要下载并安装。
体验账号描述文件不能选择推送选项。
删除Push功能或更新profile文件以解决其他问题。
获取激活码链接。
错误提示表示账号仅适用于开发人员计划中的开发人员或组织团队成员。
账号可能被禁止或开发者权限未开通。
使用激活码生成的描述文件有效期为7天。
审核被拒后,等待一段时间,App状态会显示为“已拒绝”,无需提供修改后的二进制文件。
支付宝授权登录Android和iOS应用时,确保自定义基座与HBuilder的appID匹配。
JavaScript局部变量赋值到全局变量。
Apple审核拒绝时,需根据指南5.1.1修改应用,允许非登录用户访问非基于账户的功能。
Apple ID需要访问AppleID注册地址。
开发者账号需要年费,每个账号只能申请台设备。
其他问题通常与账号禁用或审核流程相关。
打包后,通过HBuilder等工具下载至手机。
选择完选项后空白,检查iCloud和驱动是否安装完整,或重新连接手机。
激活码有效期为7天,需重新生成。
审核状态显示“已拒绝”时,等待一段时间并查看App Store Connect的通知。
指南详细说明了应用程序要求,确保应用允许非登录用户访问非账户功能。
Apple推送证书通知服务SSL证书用于配置推送通知,每个App ID需要自己的客户端SSL证书。
增加的项目等待审核通过。
自动免费7天试用,获取激活码购买。
超过十个设备后,只能等待审核,无法删除。
在Apple应用管理中心选择只选择iPhone,不选择iPad。
上架应用无需源码,仅需包文件。
7天试用过期后,证书不会过期,按证书实际过期时间计算。
修改编译打包号,重新上传。
关闭账号后重新登录。
尝试使用通道2。
uniapp mp 的runtime位置以及开启调试
在uniapp中,由于底层在setData之前对数据进行了diff处理,这使得在开发过程中,很难准确定位到问题出现的具体位置。为了追踪数据变化并解决问题,我决定修改源码以记录diff操作前后的数据。然而,后来我发现官方实际上提供了一个调试入口。
接下来,我将分享如何在uniapp mp-vue中找到runtime位置以及如何开启调试功能。
在uniapp项目启动时,有一个关键的入口点:`mp-weixin:dev`。如果你直接在该入口进行调试,会发现很难找到预期的代码位置,因为它是以插件的形式注入到`vue-cli-serve`中。不过,通过查看`package.json`中的`mp-weixin:dev`配置,我们发现关键在于`@dcloudio`包中的`vue-cli-plugin-uni`插件。在`bin/commands`目录下,我们可以找到`uni-build`,这个工具正是我们寻找的目标。
深入`uni-build`后,线索似乎断了,但通过VSCode的调试功能,我们追踪到`vue-cli-plugin-uni/index.js`中对`uni-build`的调用。在该文件中,我们发现了可疑的代码片段,其中包含与`mp`相关的信息。
继续跟踪,我们最终到达`lib/mp/index.js`,在这里,我们看到了与小程序构建配置相关的`output`字段。关键在于,`runtime`的信息隐藏在了`common/runtime`目录下,这是在构建过程中的文件。经过编译和压缩后,该文件难以直接进行调试,所以我们需要找到原始文件。
在代码中,我们还发现了一个名为`getProvides`的方法,其中同样包含与`runtime`相关的信息。通过这个方法,我们跟踪到了`uni-mp-weixin/dist/index.js`文件,这是与小程序相关的重要文件。
在`uni-mp-weixin/dist/index.js`中,我们看到与小程序相关的代码,但并没有直接找到`common/runtime`文件。通过分析目录结构和构建流程,我们推断`common/runtime`是一个通用的跨平台runtime,而`mp-weixin/runtime`则是针对小程序的特定runtime。
进一步探索,我们发现`main.js`与`runtime`文件相邻,都在`common`目录下。这让我们猜测`runtime`文件是与`entry`入口文件同时被打包的,可能在构建流程的初期阶段。
在配置文件`config`中,我们注意到每个文件都有单独的入口配置,使用多入口。尽管如此,我们仍然没有找到`common/runtime`文件的位置。在`config.module`中,我们发现对`main`入口有特殊配置。通过追踪配置流程,我们发现关键在于`webpack`配置文件,其中涉及到`@dcloudio/vue-cli-plugin-uni`插件的`configure-webpack.js`文件。在该文件中,我们发现了一个关键的引用路径`'@dcloudio/vue-cli-plugin-uni/packages/mp-vue``,最终指向了`mp.runtime.esm.js`文件,这才是我们一直在寻找的runtime。
为了开启调试功能,官方实际上在`env`文件中留有一个入口,只需要将`VUE_APP_DEBUG = true`设置为环境变量即可查看数据变化。虽然默认是以字符串形式输出,但可以通过修改相关代码来展示json格式的数据,只需确保不包含依赖项即可。
uniappåhbuilderçå ³ç³»ï¼
uniappå¼åå®åappéè¦ä»ä¹å¼å软件
æ¨èææuniappç跨端å¼åé½ä½¿ç¨HBuilderXè¿è¡å¼åï¼è¿éæ¨èä¸æ¯å 为webstormãvscodeæä¹æ ·ä¸å¥½ï¼èæ¯å 为HBuilderX对uniappçè¯æ³åvueç¸å ³çæ示æ´ä¸ºçæ¹ä¾¿ï¼ä¸æ´è½»éãç¥è¯åå¤ï¼çævueçç¸å ³è¯æ³ã
第äºç§æ¯Uni-appæ¡æ¶åºäºVue.jsãä¿ç§°ä¸å¥ä»£ç ç¼å°8个平å°ä¸ã
uni-appæ¯ä¸ä¸ªä½¿ç¨Vue.jså¼åææå端åºç¨çæ¡æ¶ï¼å¼åè ç¼åä¸å¥ä»£ç ï¼å¯åå¸å°iOSãAndroidãH以ååç§å°ç¨åºï¼å¾®ä¿¡/æ¯ä»å®/ç¾åº¦/头æ¡/QQ/éé/æ·å®ï¼ãå¿«åºç¨çå¤ä¸ªå¹³å°ã
踩åè®°-uniapp+uView(HBuilder)
1ãQï¼æ¹æ¡1ï¼æåæç´¢å¾æ çåå æ¯ï¼å¤ä½çé£ä¸ªç°è²æç´¢å¾æ æ¯ç§»å¨ç«¯è§£æinputtype=searchæ¶ï¼èªå¸¦çå¾æ æ ·å¼ãæ åªéè¦å°inputsearchç±»åæ¹æ常è§textç±»åå³å¯ã
2ãæè¿è¦ä»é¶å¼åä¸ä¸ªè·åå°ç®¡çç³»ç»å¯¹æ¥çå°ç¨åºï¼å 为åè½æ¯è¾å¤æï¼æ¶é´çï¼éæ©äºæ¯è¾ç«çuni-appï¼å 为å°ç¨åºåºç°çæ¶é´è¾çï¼åæ¹é¢å¹¶ä¸å®åï¼å¼åè¿ç¨ä¸å°±æ¯ä¸æ踩åçè¿ç¨ï¼ç¹æ¤è®°å½ä¸å°ä¸ã
3ã两个æ®é页é¢ä¹é´ç跳转ç¨uni.navgateTo()ï¼urlå¯æºå¸¦åæ°ãæ®é页é¢è·³tabbaré ç½®è¿ç页é¢éè¦uni.switchTab()ï¼urlä¸è½ä¼ å¼ã
4ãuniappå¯ä»¥éåºå¤ä¸ªå¹³å°å¼åï¼ä½ ä¼åç°å¨HBuilderXä¸çå ç½®æµè§å¨ä¸è°æ¥å£ï¼æ²¡é®é¢ï¼å¨å°ç¨åºä¸ï¼ä¹æ²¡é®é¢ï¼è¿æ¥ææºèè°ä¹æ²¡é®é¢ï¼å½åå°è®¾ç½®å 许跨åä¹åï¼å端h5éè¦è¿è¡è®¾ç½®åå代çæè½è§£å³è¿ä¸ªé®é¢ã
5ãhbuilderè¿è¡uniapp没ååºï¼æ£æ¥å¾®ä¿¡å¼åè å·¥å ·ä¸æ¯å¦å¼å¯æå¡ç«¯å£å·ã
uniappä¹h5åå代ç设置踩å,解å³è·¨åé®é¢uniappå¯ä»¥éåºå¤ä¸ªå¹³å°å¼åï¼ä½ ä¼åç°å¨HBuilderXä¸çå ç½®æµè§å¨ä¸è°æ¥å£ï¼æ²¡é®é¢ï¼å¨å°ç¨åºä¸ï¼ä¹æ²¡é®é¢ï¼è¿æ¥ææºèè°ä¹æ²¡é®é¢ï¼å½åå°è®¾ç½®å 许跨åä¹åï¼å端h5éè¦è¿è¡è®¾ç½®åå代çæè½è§£å³è¿ä¸ªé®é¢ã
è¿ä¸ªåå ææªæ¾å°å¨uniappçH5çæ¬ï¼æ¥å ¥è ¾è®¯äºæ»å¨éªè¯ï¼ç¤ºä¾çç¹å»æ»å¨éªè¯å ç´ æ¯éè¿domæä½çï¼ä½æ¯æ æï¼å¯è½è·uniAPPä¸æ¯ædomæä½æå ³ç³»ï¼éç¨å®å¶æ¥å ¥æ¹æ³ä¸ï¼æå¨è°ç¨ã
第ä¸ç§è§£å³æ¹æ³ï¼ç´æ¥å建ä¸ä¸ªvue.config.jsæ件ï¼å¹¶å¨éé¢é ç½®devServerï¼ç´æ¥ä¸ä»£ç ï¼éå¯è·é¡¹ç®ã第äºç§è§£å³æ¹æ³ï¼å¨srcç®å½ä¸æ¾å°mainfest.jsonæ件ï¼ä¿®æ¹è¯¥æ件ï¼ç¹å»âæºç è§å¾âçå°h5ï¼æ¥å£è°ç¨ã
webpackçæ¬ä¸å ¼å®¹uniapp1ãå¦æä½ ä½¿ç¨å ¶ä»ideå¼åuni-appï¼ä¼ç»å¸¸å 为æ¼éåè¯èè¿è¡å¤±è´¥ï¼å 为ç»è¿webpackç¼è¯ä¸éï¼å¾å¤é误ååºçä¸å¤ç´è§ï¼æéæ¶é´å¾é¿ï¼ä¸å¦ä»å¼å§å°±ä¾èµæè¯å¥½æ示çHBuilderXï¼é¿å æ²éåè¯ã
2ãæ¥éª¤veu.config.jsä¸æ¨èå®è£ copy-webpack-plugin0.0çæ¬ã
3ãnpminstallå®è£ uniappç¨ä¸äºé£æ¯å 为ä¸å ¼å®¹ï¼æ以è¿ä¸ªæ¶åå°±éè¦ä½¿ç¨Windowsçç³»ç»ï¼å¦æ没æ温度æ¯çç³»ç»ï¼å®è¿ä¸ªæ¯æ æ³å ¼å®¹çï¼å 为ä»ä»¬ä¸¤ä¸ªé½æ¯å±äºææ°çä¸ä¸ªææ¡£å软件ã
4ãå 为uniappå¼åiosä¸å ¼å®¹ï¼æ以ä¸å¯ç¨ãä¸å¾ä¸è¯´ï¼ä»»ä½ä¸ä¸ªå¼åè éå°è¹æææºé½ä¼æå¤æå°éè¦åéé ã
5ãåå¨ç©ºé´ä¸è¶³ï¼è¯·å é¤åå¨ç©ºé´å ä¸å¿ è¦çæ件ï¼é¢çåºæ´å¤çåå¨ç©ºé´ï¼ç³»ç»ä¸å·²åå¨è¯¥ç¨åºï¼è¯·å¸è½½åéæ°å®è£ ï¼è½¯ä»¶çæ¬ä¸ç³»ç»ä¸å ¼å®¹ï¼è¯¦æ 请å¨è¯¢ç¬¬ä¸æ¹è½¯ä»¶å®¢æã
uniappç¨ä»ä¹è½¯ä»¶å¼ååé?1ãuni-appå¯ä»¥ä½¿ç¨HBuilderXçå¼åå·¥å ·è¿è¡å¼åï¼å¯ä»¥å¨å®åãIOSãH5çå¤ç«¯æ建appåºç¨ï¼èAndroidStudioå主è¦ç¨æ¥æ建å®åAppçNativeç¯å¢ï¼ä»¥å对åºçå®è£ å çã
2ãuni-appæ¯ä¸ä¸ªä½¿ç¨Vue.jså¼åææå端åºç¨çæ¡æ¶ï¼å¼åè ç¼åä¸å¥ä»£ç ï¼å¯åå¸å°iOSãAndroidãH以ååç§å°ç¨åºï¼å¾®ä¿¡/æ¯ä»å®/ç¾åº¦/头æ¡/QQ/ééçå¤ä¸ªå¹³å°ãå°ç»ï¼ç¬¬äºç±»å¼åèµ·æ¥æ´æ¾æçï¼è约å¾å¤æ¶é´ææ¬ã
3ãphpãuni-appæ¯ä¸ä¸ªä½¿ç¨Vue.jså¼åææå端åºç¨çæ¡æ¶ï¼å¼åè ç¼åä¸å¥ä»£ç ï¼uniappé åphpå端好ï¼ä¸»è¦æ¯phpçå¼åå¨æè¦æ¯javaä½å¾å¤ï¼èä¸ææ¯é¨æ§ä¹è¦ä½å¾å¤ã
HBuilderXæ¯ä»ä¹?1ãHBuilderæ¯DCloudï¼æ°å天å ï¼æ¨åºçä¸æ¬¾æ¯æHTML5çWebå¼åIDEãHBuilderçç¼åç¨å°äºJavaãCãWebåRubyãHBuilderæ¬èº«ä¸»ä½æ¯ç±Javaç¼åï¼å®åºäºEclipseï¼æä»¥é¡ºå ¶èªç¶å°å ¼å®¹äºEclipseçæ件ã
2ãHBuilderXç®ç§°HXï¼HBuilderï¼Hæ¯HTMLç缩åï¼Builderæ¯å»ºè®¾è ãæ¯ä¸ºå端å¼åè æå¡çéç¨IDEï¼æè 称为ç¼è¾å¨ãä¸vscodeãsublimeãwebstorm类似ã
3ãç½ç»æé®é¢ãHBuilderXç®ç§°HXï¼HBuilderï¼Hæ¯HTMLç缩åï¼Builderæ¯å»ºè®¾è ã
4ãHBuilderãHBuilderXç¼è¾å¨æ¯DCloudå ¨æ°æ¨åºçä¸æ¬¾HTML5çWebå¼åå·¥å ·ï¼è½¯ä»¶ä½ç§¯å°ï¼å¯å¨å¿«ã