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

使用JS调用FCM发消息,iOS15/16构建时AJAX返回错误求助

问题:iOS构建版本中FCM AJAX请求返回readystate:0错误

在使用JavaScript通过FCM发送消息时,AJAX请求返回{"readystate":0,"responsetext":"","status":0,"statustext":"error"}。IDE中运行完全正常,消息接收功能没问题,但构建到iOS15、16环境时出现该错误。已确认IDE与构建版本的Payload信息一致,尝试设置async:false也无明显改善。构建环境为iOS6.2.0、Xcode13、CLI11.0.0,求排查建议。

附AJAX代码:

$.ajax({
    url: 'https://fcm.googleapis.com/fcm/send',
    type: 'POST',
    headers : { Authorization : 'key='+'<key>'  },
    contentType : 'application/json',
    dataType: 'json',
    data: JSON.stringify({"to": "<token>", "notification": {"title":"Test","body":"Test"}}),
    timeout: 0,
    complete: function () {
        console.log('complete') ;
        },
    error: function(xhr, status, error) {
        console.log(xhr) ;
        console.log(status) ;
        console.log(error) ;
        },
    success: function(data){
        console.log(data) ;
        }
});

排查建议

  • 检查iOS ATS配置:iOS的App Transport Security可能阻止了对FCM域名的请求。确认Info.plist中是否添加了NSAppTransportSecurity字典,并设置NSAllowsArbitraryLoads为YES,或者针对fcm.googleapis.com配置NSExceptionDomains允许HTTPS请求。
  • 验证网络权限:确保iOS应用已开启网络访问权限,在Info.plist中添加NSInternetUsageDescription权限描述,避免系统拦截网络请求。
  • 替换AJAX实现方式:jQuery的AJAX在iOS构建环境中可能存在兼容性问题,尝试使用原生fetch或XMLHttpRequest重写请求代码,排除库的兼容性问题。示例代码:
    fetch('https://fcm.googleapis.com/fcm/send', {
      method: 'POST',
      headers: {
        'Authorization': 'key=<key>',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({"to": "<token>", "notification": {"title":"Test","body":"Test"}})
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error('Error:', error));
    
  • 排查网络环境限制:构建后的iOS应用可能受到设备网络环境(如企业代理、VPN)的限制,测试时切换到无代理的网络环境,确认是否是网络拦截导致请求失败。
  • 查看iOS设备日志:通过Xcode的Organizer查看应用的网络请求日志或系统日志,获取更详细的错误信息,比如SSL证书验证失败、连接超时等具体问题。
  • 确认密钥与令牌有效性:再次核对请求中的FCM服务器密钥和设备令牌,排除构建过程中环境变量替换错误导致的参数失效问题。

内容的提问来源于stack exchange,提问作者長谷川洋平

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:40:38