uni-app unipush2.0 在三星手机中能触发uni.onPushMessage,但是无法唤起app

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app unipush2.0 在三星手机中能触发uni.onPushMessage,但是无法唤起app

开发环境 版本号 项目创建方式
Mac macOS Sonoma 14.1 CLI

产品分类:uniapp/App

PC开发环境操作系统:Mac

手机系统:Android

手机系统版本号:Android 14

手机厂商:三星

手机机型:Galaxy S22

页面类型:vue

vue版本:vue2

打包方式:离线

CLI版本号:3.98

App下载地址或H5网址: https://www.pgyer.com/fd465fe2e4a07c92d0a5c28073060498

示例代码:

hbuilder代码

// 添加app push监听事件(需注册到app onLaunch中)  
export function addAppPushEventListener() {  
    //#ifdef APP-PLUS  
    console.log("注册app push event listener");  
    uni.onPushMessage(async (res) => {  
        console.log("uni.onPushMessage 接收到消息事件", res); //监听推送消息  

        const {  
            type,  
            data  
        } = res;  

        if (type === "click") {  
            console.log("uni.onPushMessage 点击消息回调,唤端成功");  
            pushMessageClickCallBack(data);  
        }  
    });  
    //#endif  
}

安卓离线工程配置

因要上架google play, 所以按照google最新要求, 升级targetSdkVersion到了34

```groovy
    defaultConfig {  
        applicationId "com.cafe24.ec.pluslooxloo24"  
        minSdkVersion 26  
        targetSdkVersion 34  
        versionCode 2410284  
        versionName "2.4.10284"  
        multiDexEnabled true  
        compileOptions {  
            sourceCompatibility JavaVersion.VERSION_1_8  
            targetCompatibility JavaVersion.VERSION_1_8  
        }  

        ndk {  
            // 注意!上架Google Play市场对CPU类型的要求不能包含"x86"  
            abiFilters "armeabi-v7a", "arm64-v8a"  
        }  
    }

安卓离线工程debug日志

当在三星手机app上debug, 点击消息通知后, 日志中出现了如下报错, 然后就无法唤起app

```plaintext
2024-10-28 21:06:01.674  2266-4989  NotificationService     system_server                        E  Indirect notification activity start (trampoline) from com.cafe24.ec.pluslooxloo24 blocked  
2024-10-28 21:06:01.674  2266-4989  NotificationService     system_server                        E  Indirect notification activity start (trampoline) from com.cafe24.ec.pluslooxloo24 blocked

操作步骤:

  1. 调用unipush2.0的服务器端api发送在线消息通知
  2. 三星手机端接收消息通知
  3. 点击收到的消息通知

预期结果:

1. app中接收到消息通知的点击事件
2. 唤起app到前台

实际结果:

  1. app中接收到消息通知的点击事件
  2. 唤起app到前台失败

bug描述:

app开发中使用了unipush2.0, 并且是以离线工程的方式进行打包

在三星系列手机上, 出现了” 能收到push消息通知, 点击push消息, app也能触发push事件回调, 但是push消息无法唤起app “的情况

其他国产手机未发现此类问题 (国产手机的os系统版本也是Android 14)

bug在三星手机app端的表现可见下方的视频链接

[阿里云盘地址: 点击消息通知唤起app失败,但能收到消息事件的录屏](https://www.alipan.com/s/Ls4xRRMJCjm)

4 回复

HBuilderX 4.33.2024111702-alpha 已修复。


扫码安装官网最新版本的 hello uni-app x 测试推送,还是无法唤起APP。APP版本1.6.16;手机机型 三星Galaxy S23Ultra,Android 13

4.36在线打包没问题,离线打包还是唤起不起

在处理uni-app的uniPush 2.0在特定设备(如三星手机)中能够接收到推送消息(触发uni.onPushMessage),但无法自动唤起应用的问题时,通常需要考虑几个关键方面:推送消息的类型、系统权限设置、以及应用自身的处理逻辑。以下是一个简化的代码示例和配置检查步骤,帮助你诊断并可能解决问题。

1. 确保推送消息类型正确

首先,确保你发送的是具有唤醒应用能力的推送消息。在uniPush中,通常这意味着消息需要包含特定的字段,如dataaps(对于iOS)中的content-available设置为1。

2. 检查Android权限和系统设置

对于Android设备,确保应用已授予必要的权限,特别是自启动权限和电池优化白名单。三星手机可能有额外的电源管理设置需要调整。

3. uni-app代码示例

确保你的manifest.json中已正确配置了uniPush:

"mp-weixin": {
    "appid": "your-app-id",
    "setting": {
        "urlCheck": false
    },
    "usingComponents": true
},
"uniPush": {
    "appid": "your-uni-push-appid",
    "secret": "your-uni-push-secret"
}

App.vue中监听推送消息:

export default {
    onLaunch() {
        // 监听推送消息
        uni.onPushMessage((res) => {
            console.log('收到推送消息', res.data);
            // 尝试唤起应用逻辑,如跳转到特定页面
            if (uni.getSystemInfoSync().platform === 'android') {
                // 对于Android,可能需要额外的逻辑来确保应用在前台或处理后台启动
                if (!this.isAppShow()) {
                    uni.showToast({
                        title: '应用已被唤醒',
                        icon: 'none'
                    });
                    // 执行唤醒后的逻辑,如跳转页面
                    uni.navigateTo({
                        url: '/pages/index/index'
                    });
                }
            }
        });
    },
    methods: {
        isAppShow() {
            const pages = getCurrentPages();
            const currentPage = pages[pages.length - 1];
            return currentPage.route === '你想要检查的页面路径';
        }
    }
}

4. 调试和日志

增加日志输出,帮助理解推送消息是否被正确接收以及应用状态。如果问题依旧存在,考虑使用三星手机的开发者选项中的日志工具或ADB日志来获取更详细的错误信息。

5. 额外注意事项

  • 确保应用版本是最新的,因为老版本可能存在已知的兼容性问题。
  • 检查是否有第三方应用(如电池管理、安全软件)阻止了应用的正常唤醒。

通过上述步骤,你应该能够更清晰地定位问题所在,并采取相应的措施解决在三星手机上无法唤起应用的问题。

回到顶部