uni-app iPhone8 Plus勾选uniPush2.0的离线推送后闪退

uni-app iPhone8 Plus勾选uniPush2.0的离线推送后闪退

类别 信息
产品分类 uniapp/App
PC开发环境 Windows
PC操作系统版本 Windows 10 教育版21H1
HBuilderX类型 Alpha
HBuilderX版本 4.02
手机系统 iOS
手机系统版本 iOS 16
手机厂商 苹果
手机机型 iPhone8 Plus
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

//获取客户端唯一的推送标识
uni.getPushClientId({
success: (res) => {
console.log('推送设备ID:',res.cid);
let pushclientid = res.cid
uni.setStorageSync('pushclientid', pushclientid)  

// 获取db引用  
const db = uniCloud.database() //代码块为cdb                          
db.collection('userinfo')  
    .where('jwcode=="'+uni.getStorageSync('user').jwcode+'" && appid=="'+uni.getSystemInfoSync().appId+'"')  
    .get()  
    .then((res) => {  
        // res 为数据库查询结果  
        console.log(res)  
        let data = res.result.data;  
        let userData = uni.getStorageSync('user')  
        let appVersion = uni.getSystemInfoSync().appVersion  
        if(data == ''){  
            db.collection('userinfo')  
             .add({  
                 jwcode: uni.getStorageSync('user').jwcode,  
                 nickname: uni.getStorageSync('user').nickname,  
                 avatar: uni.getStorageSync('user').img,  
                 pushclientid: pushclientid,  
                 appid: uni.getSystemInfoSync().appId,  
                 lasttime: new Date().getTime(),  
                 status: 1,  
                 appversion: appVersion  
             })  
             .then(ress=>{  
                 console.log(ress)  
             }).catch((errr)=>{  
                console.log(errr); // 打印错误码  
            })  
        }else if(data.nickname!=userData.nickname||data.avatar!=userData.img||data.pushclientid!=pushclientid||data.appversion!=appVersion){  
            db.collection('userinfo')  
             .where('jwcode=="'+uni.getStorageSync('user').jwcode+'" && appid=="'+uni.getSystemInfoSync().appId+'"')  
             .update({  
                 jwcode: uni.getStorageSync('user').jwcode,  
                 nickname: uni.getStorageSync('user').nickname,  
                 avatar: uni.getStorageSync('user').img,  
                 pushclientid: pushclientid,  
                 appid: uni.getSystemInfoSync().appId,  
                 lasttime: new Date().getTime(),  
                 status: 1,  
                 appversion: appVersion  
             })  
             .then(ress=>{  
                 console.log(ress)  
             }).catch((errr)=>{  
                console.log(errr); // 打印错误码  
            })  
        }  
    }).catch((err)=>{  
        console.log(err); // 打印错误码  
    })  
},  
fail(err) {  
    console.log(err)  
}  
})  

操作步骤:

App打开立马闪退,应该是push的注册就不行

预期结果:

App正常运行

实际结果:

App打开即闪退

bug描述:

App模块配置–>Push–>uniPush2.0–>离线推送,勾选之后,云端打包后的ipa在iPhone8 Plus上安装之后闪退,iPhone SE2装得iOS15没问题,iPhone 14Plus装得iOS17也没问题,另一台苹果设备也有问题(具体型号暂时没问),取消勾选uniPush2.0的离线推送就行,勾选上之后就闪退


更多关于uni-app iPhone8 Plus勾选uniPush2.0的离线推送后闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

11 回复

再补充一下,3月4日打的包还是正常的,3.7就不行了

更多关于uni-app iPhone8 Plus勾选uniPush2.0的离线推送后闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


另一个闪退的iPad,系统也是iOS16.3(iPad mini5代)

是和微信支付或者支付宝支付有冲突,这两个去掉一个就正常了,麻烦给处理下行吗?Bug就没人负责的吗?

顶顶顶顶

我也是一样的问题

你那个引了微信、支付宝支付,,还有离线推送了吗?我们的App一套代码打的国内和海外两个App,海外的就没事,国内的就不行,我打了一天的包,找到问题是支付和推送这块的,,官方就是不鸟我,。。。。

回复 废小小小柴: 我们是啥也没有,就用了一个系统定位+个推

回复 ccsharecc: 我们定位出来也是推送的问题

感谢反馈,我联系一下相关负责人排查一下

这个闪退问题,我也提了。就是没人回应,我刚刚新建了一个空白的项目测试,就开了uniPush2.0,离线推送,然后云打包自定义基座,打开APP就直接闪退,IOS15,IOS17都没问题,IOS16就有问题,运行到标准基座可以打开。自定义基座不行,alpha4.03版本。https://ask.dcloud.net.cn/question/187730

在 uni-app 中使用 uniPush2.0 进行离线推送时,如果出现 iPhone8 Plus 勾选后闪退的问题,可能是由于以下原因导致的。以下是一些可能的解决方案和排查步骤:


1. 检查 uniPush2.0 配置

  • 确保 uniPush2.0 的配置正确,包括:
    • manifest.json 中的 uniPush 配置是否正确。
    • 是否在项目中正确集成了 uniPush2.0 的 SDK。
  • 可以参考 uni-app 官方文档,检查配置是否符合要求。

2. 检查证书和 Provisioning Profile

  • 确保 iOS 推送证书(包括开发环境和生产环境)已正确配置。
  • 检查项目的 Provisioning Profile 是否包含推送权限。
  • 如果证书有问题,可能导致推送功能异常,甚至闪退。

3. 检查代码兼容性

  • 检查项目中是否有不兼容的代码或插件,尤其是与 uniPush2.0 相关的代码。
  • 确保调用 uniPush2.0 的 API 时没有传递错误参数或未处理的异常。

4. 检查 iOS 系统版本

  • 确保 iPhone8 Plus 的系统版本支持 uniPush2.0 的功能。
  • 如果系统版本过低,可能会导致某些功能异常或闪退。

5. 查看日志

  • 使用 Xcode 连接 iPhone8 Plus,运行项目并查看控制台日志。
  • 查找闪退时的错误信息,通常会提示具体的异常原因。
  • 如果日志中看到与 uniPush2.0 相关的错误,可以针对性地解决问题。

6. 更新 uni-app 和 uniPush2.0 版本

  • 确保使用的是最新版本的 uni-app 和 uniPush2.0。
  • 旧版本可能存在已知的 Bug,更新到最新版本可能会修复问题。

7. 测试其他设备

  • 在其他 iOS 设备上测试,看是否同样出现闪退问题。
  • 如果仅 iPhone8 Plus 出现闪退,可能是设备特定的问题。

8. 联系 uni-app 官方支持

  • 如果以上方法无法解决问题,可以联系 uni-app 官方技术支持,提供详细的错误日志和复现步骤,寻求帮助。

示例代码检查

以下是一个 uniPush2.0 的基本配置示例,确保代码无误:

// manifest.json
{
  "app-plus": {
    "distribute": {
      "ios": {
        "push": {
          "unipush": {
            "enabled": true
          }
        }
      }
    }
  }
}
// 调用 uniPush2.0 的 API
uni.getPushProvider({
  success: (res) => {
    console.log('Push provider:', res);
  },
  fail: (err) => {
    console.error('Failed to get push provider:', err);
  }
});
回到顶部