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);
      }
    });
  }
};
        
      
                    
                  
                    
