uni-app uni-push 1.0 .aab获取cid失败,报错"code":-1,"message":"failed,check appkey or appid"

uni-app uni-push 1.0 .aab获取cid失败,报错"code":-1,“message”:“failed,check appkey or appid”

开发环境 版本号 项目创建方式
Windows win11 CLI
产品分类:uniapp/App

PC开发环境操作系统:Windows

手机系统:Android

手机系统版本号:Android 13

手机厂商:模拟器

手机机型:模拟器

页面类型:vue

vue版本:vue3

打包方式:云端

CLI版本号:3.0.0-4060620250520001

### 示例代码:

```javascript
const getCid = () => {  
  plus.push.getClientInfoAsync(  
    info => {  
      if (info.clientid) {  
        resolve(info.clientid);  
      } else {  
        handleRetry(); // 多轮延迟重试  
      }  
    },  
    error => {  
      console.warn(`CID获取失败[${retryCount + 1}]:`, error);  
      handleRetry();  
    }  
  );  
};

操作步骤:

云打包,自有证书,打包apk和aab

预期结果:

aab成功返回cid

实际结果:

{
  "code": -1,
  "message": "failed,check appkey or appid"
}

bug描述:

appid:UNID02FA31

使用plus.push.getClientInfoAsync获取cid

相同证书和打包环境配置未改变的情况下,打包apk获取cid正常,昨天打包的aab获取cid报错"code":-1,“message”:“failed,check appkey or appid”,但昨天之前打包的aab获取cid是正常的

请问怎么排查原因


更多关于uni-app uni-push 1.0 .aab获取cid失败,报错"code":-1,"message":"failed,check appkey or appid"的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

aab转apk是需要重签的,你检查下重签的apk是否和直接打包的apk证书是否一致

更多关于uni-app uni-push 1.0 .aab获取cid失败,报错"code":-1,"message":"failed,check appkey or appid"的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我用keytool -printcert -file META-INF/xxx.RSA比对了之前的.aab和新的.aab是相同的SHA1和SHA256

回复 LeoQin: 这样没用,aab是没证书的,要装到手机上分发平台是会先重签成apk才安装的,所以像谷歌那些才会要你上传证书,或者让你同意他那边用他的证书。你要把你手机上不行的apk用jadx-gui查看签名好的md5,sha1,sha256和直接打包的apk是否一致。这样说懂了吧?

回复 LeoQin: 分发平台是会先把aab分包,好比如你打的是64和v7a的包,但下载的手机是v7a的,那分发平台会把64的内容剔除掉,把剩余内容重新编译成apk,这样用户就不用下载那么大的包。而重新编译就需要重新签名。你要对比的是签名后的apk

回复 暴躁东北虎: 查看了安装后app的sha1/256也是一样的

这个问题通常与uni-app云端打包服务中uni-push的配置或证书签名有关。以下是排查步骤:

  1. 检查应用签名:确保打包时使用的签名文件与DCloud后台绑定的签名一致。aab包在Google Play安装时会重新签名,可能导致签名变更。可以通过获取当前应用签名SHA1值与DCloud后台配置比对。

  2. 验证AppKey/AppId:确认manifest.json中uni-push配置的AppKey和AppId正确,且与DCloud开发者中心对应应用配置一致。特别注意aab包是否使用了不同的配置。

  3. 检查打包模式:云端打包时确保选择了正确的打包模式(release/debug),不同模式可能使用不同的证书。

  4. 网络权限:确认AndroidManifest.xml已配置互联网权限:

    <uses-permission android:name="android.permission.INTERNET"/>
回到顶部