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

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

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

操作步骤:

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

预期结果:

  • App正常运行

实际结果:

  • App打开即闪退

bug描述:

  • App模块配置–>Push–>uniPush2.0–>离线推送,勾选之后,云端打包后的ipa在iPhone8 Plus上安装之后闪退,iPhone SE2装得iOS15没问题,iPhone 14Plus装得iOS17也没问题,取消勾选uniPush2.0的离线推送就行,勾选上之后就闪退,3月4日打的包还是正常的,3.7就不行了,是和微信支付或者支付宝支付有冲突,这两个去掉一个就正常了

App下载地址或H5网址:


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

14 回复

参考下官方的回复,不知道是不是同一问题 https://ask.dcloud.net.cn/question/187708

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


这篇文章我已经看过了,早晨按照要求改成yarn,编译器也是4.0.3最新版,还是不行。他的那个一开始的闪退和后面缺包的打包失败是两个问题,改yarn只是解决了打包失败的问题,还是没解决iOS闪退的问题~

回复 废小小小柴: 用3.99版本打包试试行不?4.03有好几个人反馈了ios16勾选push2的问题了,但是我测试了我这还没事

回复 套马杆的套子: 3.99是正式版吗,我看有个人说3.99正式版的联通一键登录有问题,所以我就没去试3.99的正式版

回复 废小小小柴: 是的。

回复 套马杆的套子: 你那边测试,有加上微信和支付宝支付的模块吗,我这边是加上微信支付宝之后之后会出现这个问题,,我给你说一下,我们是一套代码打的两个App,一个国内一个海外,海外的就没问题,不会闪退,国内的就会闪退,这两部分只是在支付这块有点差异(国内还多一个oss上传的插件),海外的PayPal支付和Stripe支付,国内是微信和支付宝支付,我就是一点一点的删manifest.json文件的代码,发现不论是只删掉push2.0的代码还是只删掉微信支付宝支付的代码就都不闪退了,我这边就是这个情况,还有一个就是海外的谷歌包前天开始也打包失败了,也急需官方处理一下,这玩意都该准备上线了,结果都被打包拦住了,这就很难受啊…

回复 废小小小柴: 方便提供一个简单复现的问题工程吗,我勾选了一下push模块之后运行到IOS模拟器上面是正常运行的

回复 HRK_01: 私聊发您manifest文件了,您替换一下文件试试,应该会复现

回复 废小小小柴: 离线推送的问题我联系相关负责人排查一下

回复 HRK_01: 还有就是谷歌渠道包打包失败的问题可不可以也麻烦您超人查一下,好像也是和个推那边的推送有点关系,https://app.liuyingyong.cn/build/errorLog/3ca58050-e204-11ee-b667-5de955a9d132,这是打包失败的日志,麻烦您看下谢谢了

回复 HRK_01: 不要用标准基座,自定义基座。我复现的是创建一个空白项目,无任何代码,勾选unipush2.0,离线推送,云打包自定义基座,运行就复现了,真机测试一下,一直在提这个问题,等着上线

deploymentTarget 配置为 12.0

可以了谢谢

在 uni-app 开发中,如果遇到 iPhone 8 Plus 勾选 uniPush2.0 的离线推送后闪退的问题,可能是由于以下几种原因导致的。以下是一些排查和解决方法:


1. 检查 uni-app 和 uniPush2.0 版本

  • 确保 uni-app 和 uniPush2.0 插件是最新版本,旧版本可能存在兼容性问题。
  • 在项目的 manifest.json 中,检查 uniPush2.0 的配置是否正确。

2. 检查 iOS 推送证书

  • 确保推送证书(开发环境和生产环境)已正确配置,并且与 Apple Developer 后台的证书一致。
  • 在 HBuilderX 中,检查项目的 manifest.json 文件中,是否配置了正确的推送证书。

3. 检查 iOS 权限配置

  • manifest.json 中,确保已经正确配置了推送权限:
    "plus": {
      "distribute": {
        "ios": {
          "capabilities": {
            "push": true
          }
        }
      }
    }
    
  • AppDelegate.mAppDelegate.swift 中,确保已正确集成推送 SDK。

4. 查看日志信息

  • 在 HBuilderX 中,运行项目并连接真机调试,查看控制台输出的日志信息。
  • 如果应用闪退,日志中可能会显示具体的错误信息,如内存溢出、空指针等。

5. 检查代码逻辑

  • 确保在初始化 uniPush2.0 时,没有重复调用或错误的代码逻辑。
  • 例如,检查 uniPush.onMessageuniPush.init 的调用是否正确。

6. 清理缓存和重新编译

  • 清理项目缓存:在 HBuilderX 中,点击菜单栏的“运行” -> “清理缓存”。
  • 重新编译项目,确保所有配置生效。

7. 真机调试

  • 使用真机调试功能,查看具体的闪退原因。
  • 在 Xcode 中运行项目,查看是否有崩溃日志或异常信息。

8. 联系 DCloud 官方支持

  • 如果以上方法无法解决问题,可以联系 DCloud 官方支持团队,提供详细的日志和重现步骤,寻求进一步的帮助。

示例代码(uniPush2.0 初始化)

// 在 App.vue 或 main.js 中初始化 uniPush2.0
uniPush.init({
  appid: 'your-appid',
  appkey: 'your-appkey',
  success: (res) => {
    console.log('uniPush 初始化成功', res);
  },
  fail: (err) => {
    console.log('uniPush 初始化失败', err);
  }
});
回到顶部