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包,点击消息通知时操作正常

视频附件:

视频附件.rar


更多关于uni-app Alpha版3.4.6ipa包点击消息通知闪退 receive和click事件断点未触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

是云打包嚒 appid私发我下

更多关于uni-app Alpha版3.4.6ipa包点击消息通知闪退 receive和click事件断点未触发的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 的 Alpha 版 3.4.6 中,点击消息通知导致应用闪退,并且 receiveclick 事件断点未触发,可能是由于以下几个原因导致的。以下是一些排查和解决问题的步骤:


1. 检查消息推送配置

  • 确保在 manifest.json 中正确配置了推送模块(如 uni-push 或其他第三方推送服务)。
  • 检查推送消息的格式是否符合要求,尤其是 payload 部分是否包含必要的数据。

2. 检查事件监听代码

  • 确保在 App.vue 或相关页面中正确监听了 receiveclick 事件。例如:
    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);
      }
    });
  }
};
回到顶部