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
参考下官方的回复,不知道是不是同一问题
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.m
或AppDelegate.swift
中,确保已正确集成推送 SDK。
4. 查看日志信息
- 在 HBuilderX 中,运行项目并连接真机调试,查看控制台输出的日志信息。
- 如果应用闪退,日志中可能会显示具体的错误信息,如内存溢出、空指针等。
5. 检查代码逻辑
- 确保在初始化 uniPush2.0 时,没有重复调用或错误的代码逻辑。
- 例如,检查
uniPush.onMessage
或uniPush.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);
}
});