uni-app 支付宝原生扫码插件 mPaaS 点击扫码黑屏闪退

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

uni-app 支付宝原生扫码插件 mPaaS 点击扫码黑屏闪退

问题描述

hbuilderx版本: 3.96
手机: 华为畅享20e
安卓版本: 10

hbuilderx版本使用了4.15 和 最新版 都不正常。使用的同一版本扫码插件,新项目点击扫码黑屏,老项目没问题。新老项目只是项目文件结构不一样。

新项目结构

新项目结构

老项目结构

老项目结构

引入与使用方式都与老项目一样,但是新项目始终无法正常打开扫码。

const mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module");  
export function scanCode(param={}) {  
    return new Promise((resolve,reject)=>{
        if(mpaasScanModule){  
            mpaasScanModule.mpaasScan({  
                // 扫码 UI 风格,参数可为 qr、bar,默认为 qr  
                'type': param.type || 'qr',  
                // 扫码识别类型,参数可多选,qrCode、barCode,不设置,默认识别所有  
                'scanType':param.scanType ||  ['qrCode','barCode'],  
                // 是否隐藏相册,默认false不隐藏  
                'hideAlbum': param.hideAlbum || false  
            },(res) => {  
                let code = res.resp_result.trim();  
                resolve(code);  
            });  
        }else{  
            reject();  
        }  
    })  
}

开发环境及版本信息

项目创建方式 hbuilderx版本 手机型号 安卓版本
新项目 4.15, 最新版 华为畅享20e 10
老项目 未指定 未指定 未指定

5 回复

以src为项目包 自定义基座就能正常扫码,但是正常发布正式包的时候,还是不行,很奇怪


请问楼主 解决了吗 我这边也是 荣耀手机华为手机 绝大部分都黑屏 其它品牌都正常

楼主解决了吗?

安卓新打包的都有问题,苹果的不会,是打包的问题。什么时候能解决?

针对你提到的uni-app中使用支付宝原生扫码插件mPaaS时,点击扫码出现黑屏闪退的问题,这通常是由于插件集成不正确、权限配置缺失或代码实现有误等原因引起的。下面是一个简要的排查和示例代码,帮助你定位和解决问题。

1. 检查插件集成

确保你已经正确集成了mPaaS和支付宝原生扫码插件。通常,这需要在manifest.json中配置相关插件,并在项目中引入必要的SDK。

2. 权限配置

确保在AndroidManifest.xml中添加了必要的权限,如相机权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

3. 初始化mPaaS

在应用启动时,需要初始化mPaaS,并配置扫码插件。以下是一个基本的初始化代码示例:

// main.js 或 app.js
import Vue from 'vue'
import App from './App'
import mPaaS from 'mpaas-sdk' // 假设你已经通过npm安装了mpaas-sdk

Vue.config.productionTip = false

// 初始化mPaaS
mPaaS.init({
  appId: 'your-app-id',
  channel: 'your-channel',
  // 其他配置项
})

// 配置扫码插件
if (mPaaS.PaasScan) {
  mPaaS.PaasScan.config({
    // 扫码配置
  })
}

new Vue({
  render: h => h(App),
}).$mount('#app')

4. 调用扫码功能

在你的组件中调用扫码功能,确保处理好回调和错误情况:

methods: {
  scanQRCode() {
    if (mPaaS.PaasScan) {
      mPaaS.PaasScan.startScan({
        success: (result) => {
          console.log('扫码成功', result);
        },
        fail: (error) => {
          console.error('扫码失败', error);
        },
      });
    } else {
      console.error('PaasScan插件未正确初始化');
    }
  }
}

5. 调试和日志

如果以上步骤仍然无法解决问题,建议开启详细的日志记录,查看在扫码过程中是否有异常抛出。你可以在Android Studio的Logcat中查看相关信息,或者在你的代码中添加更多的console.log来定位问题。

总结

黑屏闪退通常是由于权限不足、插件集成错误或代码实现有误导致的。确保按照官方文档正确集成插件,并处理好所有必要的权限和配置。如果问题依旧存在,建议查阅mPaaS的官方文档或社区,寻找是否有其他开发者遇到并解决了类似的问题。

回到顶部