You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NS 8.6(原生)iOS 18下Utils.openUrl无法调用问题求助

问题分析与临时解决方案

问题定位

这是iOS 18对URL跳转权限的新限制导致的问题,NativeScript 8.6的Utils.openUrl()方法尚未适配该变化,并非NS 8.6本身的故障。iOS 18收紧了应用调用外部URL的权限校验逻辑,原NS的封装实现未满足新的权限声明要求,导致调用始终返回false且无响应。

临时解决方案

直接调用iOS原生API替代Utils.openUrl(),绕过NS的封装层,具体代码如下:

import { Utils } from "@nativescript/core";

public navigateToUrl(url: string) {
    if (Utils.isIOS) {
        const nsUrl = NSURL.URLWithString(url);
        if (nsUrl && UIApplication.sharedApplication.canOpenURL(nsUrl)) {
            UIApplication.sharedApplication.openURLCompletionHandler(nsUrl, (success) => {
                // 可根据success状态做后续逻辑处理
            });
        }
    } else {
        // Android端保持原有逻辑即可
        Utils.openUrl(url);
    }
}

额外注意事项

  • 若跳转自定义URL Scheme(如第三方App的跳转协议),必须在Info.plist的LSApplicationQueriesSchemes数组中声明对应的Scheme,iOS 18对未声明的Scheme拦截更严格;跳转HTTP/HTTPS链接无需额外声明,但需确保应用ATS配置正常(默认开启即可)。
  • 真机测试时需确保应用签名配置正确,iOS 18对权限校验的签名绑定要求未放松。

后续处理

建议关注NativeScript官方版本更新,NS团队大概率会在后续版本中完成iOS 18的适配,待新版本发布后可切换回Utils.openUrl()方法。

内容的提问来源于stack exchange,提问作者dpdragnev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:32:34