uni-app 安卓手机plus.push.addEventListener(receive)无法获取到push信息
uni-app 安卓手机plus.push.addEventListener(receive)无法获取到push信息
信息类别 | 详细信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | 11 |
HBuilderX类型 | Alpha |
HBuilderX版本号 | 3.8.12 |
手机系统 | Android |
手机系统版本号 | Android 10 |
手机厂商 | 华为 |
手机机型 | 全部安卓机型 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
操作步骤:
- 正常操作
预期结果:
- 跟ios一样
实际结果:
- 安卓有问题
bug描述:
- plus.push.addEventListener(receive) 获取创建的本地消息,苹果在回调里可以正常打印出信息,安卓不行根本不走方法,请问怎么解决
unipush 2.0?在线接受不到?
用uni.onPushMessage试试呢
push1.0安卓接收不到
回复 传播星球: 1.0不太熟悉,看看文档吧 https://docs.getui.com/getui/question/android/
找到原因了嘛
没有,放弃了
回复 传播星球:后台用的阿里云推送 然后前端用的uni-push的方法 ios可以 安卓都不知道怎么搞
在 uni-app
中使用 plus.push.addEventListener('receive')
无法获取到推送信息,可能是由于以下几个原因导致的。你可以按照以下步骤进行排查和解决:
1. 检查推送服务配置
确保你已经在 manifest.json
中正确配置了推送服务。例如,如果你使用的是个推(GeTui)或极光推送(JPush),需要在 manifest.json
中配置相应的 AppKey 和 AppSecret。
{
"app-plus": {
"distribute": {
"android": {
"permissions": [
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>"
],
"push": {
"geitui": {
"appid": "your-appid",
"appkey": "your-appkey",
"appsecret": "your-appsecret"
}
}
}
}
}
}
2. 检查推送服务是否初始化成功
在 App.vue
或 main.js
中,确保推送服务已经成功初始化。你可以在 onLaunch
生命周期中检查推送服务是否初始化成功。
export default {
onLaunch: function() {
// 初始化推送服务
plus.push.addEventListener('receive', function(msg) {
console.log('接收到推送消息:', msg);
}, false);
// 检查推送服务是否初始化成功
plus.push.getClientInfo(function(info) {
console.log('推送服务信息:', info);
}, function(e) {
console.log('获取推送服务信息失败:', e);
});
}
}
3. 检查设备是否支持推送
确保你的设备支持推送服务,并且已经正确连接到网络。你可以在设备上检查网络连接状态,并确保设备能够正常访问推送服务器。
4. 检查推送消息格式
确保你发送的推送消息格式正确,并且符合推送服务的要求。不同的推送服务可能有不同的消息格式要求,请参考相应的文档。
5. 检查权限
确保你的应用已经获取了必要的权限,例如网络访问权限、振动权限等。你可以在 AndroidManifest.xml
中检查并添加必要的权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
6. 检查推送服务是否被禁用
有些设备可能会禁用推送服务,或者将应用的后台运行权限限制。你可以在设备的设置中检查应用的权限设置,并确保应用能够正常接收推送消息。
7. 调试日志
在开发过程中,可以通过 console.log
或 uni.showToast
等方式输出调试信息,帮助你定位问题。
plus.push.addEventListener('receive', function(msg) {
console.log('接收到推送消息:', msg);
uni.showToast({
title: '接收到推送消息',
icon: 'none'
});
}, false);
8. 检查推送服务 SDK 版本
确保你使用的推送服务 SDK 版本是最新的,并且与 uni-app
版本兼容。你可以参考 uni-app
官方文档和推送服务提供商的文档,确保 SDK 版本正确。
9. 检查推送服务是否正常运行
你可以通过推送服务提供商的控制台或 API 发送测试消息,检查推送服务是否正常运行。如果推送服务本身有问题,可能需要联系推送服务提供商进行排查。
10. 检查应用是否在前台
plus.push.addEventListener('receive')
通常用于接收应用在前台时的推送消息。如果应用在后台或关闭时无法接收到推送消息,可能需要使用 plus.push.addEventListener('click')
来处理点击通知栏消息的事件。
plus.push.addEventListener('click', function(msg) {
console.log('点击推送消息:', msg);
uni.showToast({
title: '点击推送消息',
icon: 'none'
});
}, false);