uni-app Alpha版3.4.6ipa包点击消息通知闪退 receive和click事件断点未触发
uni-app Alpha版3.4.6ipa包点击消息通知闪退 receive和click事件断点未触发
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
HBuilderX | 3.4.6 | - |
产品分类:HTML5+
HBuilderX版本号:3.4.6
手机系统:iOS
手机系统版本号:iOS 14
手机厂商:苹果
手机机型:iPhonex
打包方式:云端
### 示例代码:
```javascript
plus.push.addEventListener('receive', function(message) {
console.log(plus.os.name + '-receive-message:' + JSON.stringify(message));
if (plus.os.name == 'iOS') { // 苹果
// 创建本地消息
console.log(plus.os.name == "iOS");
createLocalPushMsg(message.content, message.title, message.payload, message.aps);
} else { // 安卓
pushCallback(message, 'receive');
}
}, false)
// click手机上接收到的推送消息时,不管是苹果手机还是安卓手机,不管app在线还是离线,都会触发click事件
plus.push.addEventListener('click', function(message) {
console.log(plus.os.name + '-click-message:' + JSON.stringify(message));
pushCallback(message, 'click');
}, false)
function pushCallback(message, eventType) {
let payload = null;
if (gbFn.isJSON(message.payload)) { // iOS在线点击
payload = JSON.parse(message.payload);
} else if (typeof(message.payload) == 'object') { // iOS离线点击
payload = message.payload;
} else {
payload = null;
}
// payload.unit: 酒店code,根据此参数才能确定是哪家酒店的消息
// payload.functionCode: 功能点code,根据此参数才能确定是哪个功能点
// payload.msgType: 消息类型,根据此参数获取消息的展示页面地址
if (payload && payload.unit && payload.functionCode && payload.msgType) { // 此三个参数必传
const pageUrl = getPageUrl(payload.msgType); // 获取消息展示页的地址
if (pageUrl) { // 获取成功
// 跳转至消息页前的逻辑处理
pushHandle(payload.unit, payload.functionCode, pageUrl, payload.params);
} else {
recordOperateLog(null, {
log: '【消息推送】',
phoneType: plus.os.name,
eventType: eventType,
errorType: '跳转页面地址解析错误'
}, message, ajax_user_logtype.error)
}
} else {
console.log("消息格式未处理");
recordOperateLog(null, {
log: '【消息推送】',
phoneType: plus.os.name,
eventType: eventType,
errorType: '消息格式未处理'
}, message, ajax_user_logtype.error)
}
}
function createLocalPushMsg(content, title, payload, aps) {
var options = {
cover: false,
title: title
};
if (plus.os.name == "iOS") {
if (aps && aps.alert && aps.alert.title) {
options.title = aps.alert.title;
if (payload.unit && payload.functionCode && payload.msgType) {
plus.push.createMessage(content, JSON.stringify(payload), options);
}
}
}
}
操作步骤:
同一套代码,分别用Alpha版3.4.6、3.4.6版本和正式版本的3.3.13的hbuilderx进行打ipa包,测试操作在线和离线的消息通知;
预期结果:
无论操作在线还是离线信息通知,APP处于激活状态,分别跳转到对应页面;
实际结果:
Alpha版3.4.6、3.4.6版本打的ipa包,操作消息通知时,无论在线还是离线都会出现闪退,正式版3.3.13打的ipa包,消息通知操作正常
bug描述:
用Alpha版3.4.6和3.4.6版本打的ipa包,点击消息通知无论是在线和离线都会出现闪退的情况,receive和click事件中的断点也未触发;用正式版本3.3.13进行打的ipa包,点击消息通知时操作正常
视频附件:
更多关于uni-app Alpha版3.4.6ipa包点击消息通知闪退 receive和click事件断点未触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是云打包嚒 appid私发我下
更多关于uni-app Alpha版3.4.6ipa包点击消息通知闪退 receive和click事件断点未触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app
的 Alpha 版 3.4.6 中,点击消息通知导致应用闪退,并且 receive
和 click
事件断点未触发,可能是由于以下几个原因导致的。以下是一些排查和解决问题的步骤:
1. 检查消息推送配置
- 确保在
manifest.json
中正确配置了推送模块(如uni-push
或其他第三方推送服务)。 - 检查推送消息的格式是否符合要求,尤其是
payload
部分是否包含必要的数据。
2. 检查事件监听代码
- 确保在
App.vue
或相关页面中正确监听了receive
和click
事件。例如:uni.onPushMessage((res) => { console.log('收到推送消息:', res); if (res.type === 'receive') { console.log('收到消息:', res); } else if (res.type === 'click') { console.log('点击消息:', res); } });
- 确保事件监听代码在应用启动时已正确执行。
3. 检查 iOS 配置
- 确保在
manifest.json
中正确配置了 iOS 的推送证书(开发环境和生产环境)。 - 检查
Info.plist
文件中是否启用了推送通知权限:<key>UIBackgroundModes</key> <array> <string>remote-notification</string> </array>
4. 检查日志和错误信息
- 使用 Xcode 运行应用,查看控制台日志,检查是否有崩溃日志或错误信息。
- 如果应用闪退,可能是由于消息处理逻辑中出现了未捕获的异常。
5. 测试推送消息
- 使用测试工具(如
uni-push
提供的测试工具)发送一条简单的推送消息,检查是否能正常接收和点击。 - 确保推送消息的
payload
格式正确,避免包含非法数据。
6. 更新 uni-app 版本
- Alpha 版可能存在一些已知问题,尝试升级到最新的稳定版或 Beta 版,看看问题是否解决。
7. 检查原生代码
- 如果使用了自定义原生插件或修改了原生代码,检查是否有与推送相关的逻辑导致崩溃。
- 确保原生代码正确处理了推送消息的接收和点击事件。
8. 联系官方支持
- 如果以上方法无法解决问题,可以联系
uni-app
官方技术支持,提供详细的日志和复现步骤,寻求帮助。
示例代码
以下是一个简单的 uni-push
事件监听示例:
// App.vue
export default {
onLaunch() {
uni.onPushMessage((res) => {
console.log('收到推送消息:', res);
if (res.type === 'receive') {
console.log('收到消息:', res);
} else if (res.type === 'click') {
console.log('点击消息:', res);
}
});
}
};