uni-app HBuilderX开发iOS的APP在日本使用页面打不开 在国内APP使用正常

uni-app HBuilderX开发iOS的APP在日本使用页面打不开 在国内APP使用正常

操作步骤:

  • POST地址
    https://www.k2stone.jp/shopapi/push/register  
    
  • Body入参
    {
    "cid":"963a10a9dbfe51a8fe9cfa5121c09d6d",
    "device_token":"963a10a9dbfe51a8fe9cfa5121c09d6d",
    "platform":"ios"
    }
    
  • 国内,在Macbook上ping 服务器地址和域名,通;
  • 国内,在Macbook上postman测试接口,通;
  • 日本,在Macbook上ping 服务器地址和域名,通;
  • 日本,在Macbook上postman测试接口,不通;错误提示为
    HandshakeException: Connection terminated during handshake
    
    这看上去是SSL通讯不成功, 通过www.ssllabs.com/ssltest 测试SSL,得到A+。证书应该没有问题。

预期结果:

  • APP在国内外,都正常使用。
  • 即在国内外访问日本服务器的接口,都需要正常。

实际结果:

  • APP在日本使用页面打不开;在国内APP使用正常。

bug描述:

  • 操作步骤:
    • 后台服务器部署在日本AWS,日本IP。
    • 在HBuilderX中打包APP,上架Apple App Store,均成功。
    • 在后续版本,准备加入消息推送功能,勾选uniPush V2.20,并配置dcloud控制台相关参数,云打包后上传TestFlight测试,通过dcloud控制台发送消息,测试iPhone消息提醒成功。
    • 由于前后端分离,前端APP通过服务器restful接口实现注册、登录、改密码、显示页面内容、商品列表等功能。
    • 测试同事反馈,APP在日本使用页面打不开;在国内APP使用正常。

图片

Image 1 Image 2 Image 3

信息整理

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 macOS 14.7.3 (23H417)
HBuilderX类型 正式
HBuilderX版本号 4.76
手机系统 iOS
手机系统版本号 iOS 18
手机厂商 苹果
手机机型 iPhone 12 Pro Max
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app HBuilderX开发iOS的APP在日本使用页面打不开 在国内APP使用正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

检查了一大圈 客户端与服务器的网络连接,用ping IP地址 DNS解析,用ping 域名 443端口访问,用Test-NetConnection -ComputerName IP地址 -Port 443 SSL证书链完整度和协议安全性,openssl s_client -connect 域名:443 服务接口访问,在PC机上用Postman,在iPhone上用API Client 服务器宝塔面板配置,关闭面板防护 uniPush代码影响,注释代码
逐一验证,以上都不是根本原因
iPhone真机测试,控制台追踪,发现APP第一次运行时,会提示是否使用无线局域网还是蜂窝网络,即使点了使用两者,网络仍然要等一小会才好使,我就在代码中加上了网络状态监测和页面加载多次重试的代码,首页就可以显示出来了。
至于为什么APP第一次运行,网络中断,我也不清楚原因。

更多关于uni-app HBuilderX开发iOS的APP在日本使用页面打不开 在国内APP使用正常的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的网络环境差异导致的SSL/TLS握手失败问题。从错误信息HandshakeException: Connection terminated during handshake来看,问题出现在SSL握手阶段。

可能的原因和解决方案:

  1. TLS版本兼容性问题 iOS设备在日本网络环境下可能使用了不同的TLS版本。建议在服务器端配置支持TLS 1.2及以上版本,确保与iOS系统的兼容性。

  2. 证书链完整性 虽然SSL Labs测试显示A+,但可能存在中间证书缺失的问题。检查服务器证书链是否完整包含根证书和中间证书。

  3. SNI(服务器名称指示)配置 确保服务器正确配置了SNI,特别是在使用CDN或负载均衡器的情况下。

  4. uni-app网络请求配置manifest.json中检查网络相关配置:

    "app-plus": {
      "networkTimeout": {
        "request": 30000
      }
    }
回到顶部