iOS 18.2 中,使用navatie.js 跳转到系统设置页面失败

iOS 18.2 中,使用navatie.js 跳转到系统设置页面失败

示例代码:

var UIApplication = plus.ios.import("UIApplication");
var application2 = UIApplication.sharedApplication();
var NSURL2 = plus.ios.import("NSURL");
var setting2 = NSURL2.URLWithString("app-settings:");
application2.openURL(setting2);
plus.ios.deleteObject(setting2);
plus.ios.deleteObject(NSURL2);
plus.ios.deleteObject(application2);

操作步骤:

  • 调用上述代码

预期结果:

  • 能够跳转到设置页面

实际结果:

  • 无法跳转到设置页面

| 信息类别       | 内容                           |
|----------------|--------------------------------|
| 产品分类       | uniapp/App                     |
| PC开发环境     | Mac                            |
| PC系统版本号   | 14.3.1 (23D60)                 |
| HBuilderX类型  | 正式                           |
| HBuilderX版本  | 4.45                           |
| 手机系统       | iOS                            |
| 手机系统版本   | iOS 18                         |
| 手机厂商       | 苹果                           |
| 手机机型       | iphone15ProMax                 |
| 页面类型       | vue                            |
| vue版本        | vue2                           |
| 打包方式       | 云端                           |
| 项目创建方式   | HBuilderX                      |

3 回复

解决了吗


同问 解决了吗?我是ios18.3.2,不知道是不是18版本之前的可以用,18之后的版本不可用

在iOS 18.2中,系统对URL Scheme的权限控制更加严格。app-settings:这个私有URL Scheme在最新iOS版本中可能已被限制使用。建议改用以下两种方式:

  1. 使用UIApplicationOpenSettingsURLString这个公开的API:
var UIApplication = plus.ios.import("UIApplication");
var application = UIApplication.sharedApplication();
var settingUrl = plus.ios.invoke(UIApplication, "UIApplicationOpenSettingsURLString");
var NSURL = plus.ios.import("NSURL");
var url = NSURL.URLWithString(settingUrl);
application.openURL(url);

plus.ios.deleteObject(url);
plus.ios.deleteObject(NSURL);
plus.ios.deleteObject(application);
  1. 或者使用uni-app封装的API:
uni.openSystemSettings({
    success: () => console.log('跳转成功'),
    fail: () => console.log('跳转失败')
});
回到顶部