uni-app IOS调用plus.nativeUI.setUIStyle会闪退

uni-app IOS调用plus.nativeUI.setUIStyle会闪退

项目信息 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 10
HBuilderX类型 正式
HBuilderX版本号 3.99
手机系统 iOS
手机系统版本号 iOS 16
手机厂商 苹果
手机机型 iphonex
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

示例代码:

plus.nativeUI.setUIStyle('dark')  
plus.nativeUI.setUIStyle('light')

操作步骤:

plus.nativeUI.setUIStyle('dark')  
plus.nativeUI.setUIStyle('light')

预期结果:

plus.nativeUI.setUIStyle('dark')  
plus.nativeUI.setUIStyle('light')  
正常切换

实际结果:

plus.nativeUI.setUIStyle('dark')  
plus.nativeUI.setUIStyle('light')  
IOS闪退

bug描述:

IOS调用plus.nativeUI.setUIStyle('light')和plus.nativeUI.setUIStyle('dark')会闪退  
调用plus.nativeUI.setUIStyle('auto')正常  
目前按照https://uniapp.dcloud.net.cn/tutorial/darkmode.html#darkmode该文档进行的配置,  
在不调用plus.nativeUI.setUIStyle强制设置light和dark情况下,深色模式使用一切正常,  
但是如果调用plus.nativeUI.setUIStyle进行模式切换,IOS上就会闪退  

测试了官方提供的“hello-darkmode 示例工程”,同样会出现这样的问题!!!  
安卓端正常!!

更多关于uni-app IOS调用plus.nativeUI.setUIStyle会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

更新到最新alpha试下

更多关于uni-app IOS调用plus.nativeUI.setUIStyle会闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


最新alpha可以

难怪,我更新成3.99后啥也没改就闪退了,原来是这个原因

在使用 uni-app 开发 iOS 应用时,调用 plus.nativeUI.setUIStyle 导致应用闪退,可能是由于以下几个原因:

1. 权限问题

确保在 manifest.json 文件中正确配置了 iOS 的权限。例如:

{
  "app-plus": {
    "ios": {
      "permissions": {
        "UIUserNotificationSettings": "YES"
      }
    }
  }
}

2. 参数错误

plus.nativeUI.setUIStyle 方法需要一个字符串参数,指定 UI 风格。通常支持的参数有 "dark""light"。确保传入的参数是有效的。

plus.nativeUI.setUIStyle("dark"); // 或 "light"

如果传入的参数不正确,可能会导致应用崩溃。

3. 兼容性问题

某些版本的 uni-appHBuilderX 可能存在与 plus.nativeUI.setUIStyle 相关的兼容性问题。尝试更新到最新版本的 uni-appHBuilderX,看看问题是否得到解决。

4. 系统版本问题

plus.nativeUI.setUIStyle 可能在某些 iOS 系统版本上存在兼容性问题。确保你的应用在目标 iOS 版本上进行了充分的测试。

5. 其他代码问题

检查是否有其他代码在调用 plus.nativeUI.setUIStyle 之前或之后导致了问题。例如,是否在调用该方法之前进行了其他可能影响 UI 的操作。

6. 使用 try-catch 捕获异常

为了更详细地了解崩溃的原因,可以在调用 plus.nativeUI.setUIStyle 时使用 try-catch 捕获异常:

try {
  plus.nativeUI.setUIStyle("dark"); // 或 "light"
} catch (error) {
  console.error("Error setting UI style:", error);
}
回到顶部