uniapp推送配置流程

Dcloud

Dcloud注册账号

个推

了解即可
注册个推账号

ios配置流程

需配置含有推送的描述文件以及p8证书
配置推送证书

ios证书配置报技术错误(参数错误)
TeamID-苹果开发者账号唯一的ID

安卓需配置多厂商

小米手机需要配置小米厂商

华为手机则需要配置华为厂商

Google FCM则需要海外手机才能测试,国内安卓无法测试,无法获取device-token

故障排查

uniapp厂商配置文档

了解即可
个推厂商配置文档

测试推送

注意:此推送仅在app离线状态显示

通知消息

uni.onPushMessage无法获取消息内容

原因:由于 ios 系统的限制,ios app 在线时,只能推送透传消息。

透传消息

uni.onPushMessage能获取消息内容


了解即可

推送成功展示

如何实现在线推送

在App.vue文件添加以下代码

js 复制代码
			uni.onPushMessage((res) => {
				// 监听通知栏消息的点击  
				if (res.type == 'click') {
					// 如果需要跳转app内指定页面,则自己实现下方的跳转代码。  
					// uni.navigateTo({
					// 	//页面路径示例值:/pages/pushinfo/pushinfo    
					// 	url: '指定页面路径'
					// })
				}
				// 监听在线推送消息,若云函数设置了 "force_notification":true,则不会触发此 receive。  
				if (res.type == 'receive') {
					console.log("接收到的消息内容", res.data);
					// if (res.data.content) { // 透传、云函数才会拿到内容
					// 	uni.createPushMessage({
					// 		content: res.data.content
					// 	})
					// }
				}
			})
			// 获取cid
			uni.getPushClientId({
				success(res) {
					
				},
				fail(err) {
					
				}
			})

push原生文档
问题集合

发行打包时,勾选GooglePlay渠道,安卓会打包成aab格式,上架Google Play 商店需要此安装包格式。

安卓手机不能直接安卓aab格式的安装包,需从Google Play 商店进行下载(Google Play 商店会根据用户设备筛选出合适apk供用户下载)

开发测试:可以通过bundletool工具进行aab装换成apk进行测试安装。

利用bundletool将aab格式转换成apks
bundletool将aab格式转换成apks原地址

注意bundletool-all-1.17.1.jar,此jar包jdk8版本会失败,使用jdk17版本即可

bash 复制代码
java -jar <bundletool.jar的路径> build-apks --bundle=<.aab文件的路径> --output=<输出.apks的路径> --ks=<打包使用的证书文件的路径> --ks-pass=pass:<证书密码> --ks-key-alias=<证书别名> --key-pass=pass:<证书别名密码,通常与证书密码一致>

// 例子
java -jar D:\...\bundletool-all-1.17.1.jar build-apks --bundle=D:\...\myApp.aab --output=D:\...\myApp.apks --ks=D:\...\myKey.keystore --ks-pass=pass:123456 --ks-key-alias=myKey_gci --key-pass=pass:123456

输出的myApp.apks将后缀apks修改成zip,在进行压缩包解压,解压会看到以下目录

点开splits或者standalones目录会看到一堆apk文件,根据手机配置进行选择即可(不建议,并不通用)

指定配置文件输出apk

使用 extract-apks 命令从现有的 APK 集合中提取指定设备配置的 APK 子集

bash 复制代码
java -jar D:\...\bundletool-all-1.17.1.jar extract-apks --apks=D:\...\xxx.apks --device-spec=D:\...\device_config.json --output-dir=D:\...\apk-list

device_config.json

json 复制代码
{
    "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
    "supportedLocales": ["zh-Hans"],
    "screenDensity": 480,
    "sdkVersion": 31
  }
  


连接usb,针对设备生成专用的json文件

bash 复制代码
java -jar D:\...\bundletool-all-1.17.1.jar get-device-spec --output=D:\...\device_config.json

设备规范 JSON 文件

json 复制代码
{
  "supportedAbis": ["arm64-v8a", "armeabi-v7a", "armeabi"], // CPU 架构类型
  "supportedLocales": ["zh-CN"], // 指定了应用支持语言
  // "deviceFeatures": [], // 设备支持的各种硬件或系统特性。这些特性可以包括触摸屏、GPS、摄像头、传感器等多种硬件功能
  // "glExtensions": [], // OpenGL 扩展
  "screenDensity": 440, // 设备屏幕的像素密度
  "sdkVersion": 34, // 指定设备运行sdk版本
  "sdkRuntime": {
    "supported": true // 用户在安装应用时,只有主模块会被下载,而其他特性模块则可以根据需要在后续时间动态下载
  }
  //...
}

屏幕的像素密度

根据设备的屏幕密度选择合适的资源,例如图像和字体文件,以确保应用在该设备上的显示效果最佳。

  • ldpi (low) - 120 dpi
  • mdpi (medium) - 160 dpi
  • hdpi (high) - 240 dpi
  • xhdpi (extra-high) - 320 dpi
  • xxhdpi (extra-extra-high) - 480 dpi
  • xxxhdpi (extra-extra-extra-high) - 640 dpi

题外话:什么是apks?

APKS 文件中的每个单独的 APK 文件都是根据设备的各个方面生成的。这些包括架构、语言、屏幕密度和其他设备功能。

当 Android App Bundle (AAB) 准备就绪时,可以测试其在 Google Play 商店中的行为以部署到设备。为此,可以从 AAB 文件生成 APKS 文件,并使用 Google 的 Android bundletool 将其安装在测试设备上。

standalone-arm64_v8a_hdpi.apk

standalone

CPU类型 : arm64_v8a or armeabi_v7a

Android设备上不同屏幕密度的分类 : hdpi、ldpi、mdpi、tvdpi、xhdpi、xxhdpi、xxxhdpi

Android Debug Bridge (ADB)工具使用

是连接Android手机与PC端的桥梁
下载地址

下载后解压,找到adb.exe的目录位置,配置环境变量即可

查看版本

bash 复制代码
adb version

安装完成!
adb常用命令

bash 复制代码
adb devices #查看当前连接的设备,已连接的设备会显示出来
adb get-serialno #也可以查看设备号
adb root
adb -s <设备号> shell #指定一个设备号进行连接 exit #退出
adb install
adn uninstall

疑点:

fcm需要安卓手机内置谷歌服务,并开启,国内安卓大部分不会内置谷歌服务,所以无法推送成功(因为被墙了)

uni-push 2.0 快速接入指南
uni-push2.0 常见问题
FCM

相关推荐
BBB努力学习程序设计1 天前
CSS Sprite技术:用“雪碧图”提升网站性能的魔法
前端·html
BBB努力学习程序设计1 天前
CSS3渐变:用代码描绘色彩的流动之美
前端·html
冰暮流星1 天前
css之动画
前端·css
jump6801 天前
axios
前端
spionbo1 天前
前端解构赋值避坑指南基础到高阶深度解析技巧
前端
用户4099322502121 天前
Vue响应式声明的API差异、底层原理与常见陷阱你都搞懂了吗
前端·ai编程·trae
开发者小天1 天前
React中的componentWillUnmount 使用
前端·javascript·vue.js·react.js
永远的个初学者1 天前
图片优化 上传图片压缩 npm包支持vue(react)框架开源插件 支持在线与本地
前端·vue.js·react.js
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 天前
npm i / npm install 卡死不动解决方法
前端·npm·node.js
Kratzdisteln1 天前
【Cursor _RubicsCube Diary 1】Node.js;npm;Vite
前端·npm·node.js