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版本中可能已被限制使用。建议改用以下两种方式:
- 使用
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);
- 或者使用uni-app封装的API:
uni.openSystemSettings({
success: () => console.log('跳转成功'),
fail: () => console.log('跳转失败')
});