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

Expo EAS提交React Native iOS应用时msauth scheme遭拒问题

解决Expo EAS提交iOS到TestFlight时msauth scheme被Apple拒绝的问题

核心问题是Apple禁止使用通用的msauth scheme,而Android必须依赖它完成登录跳转。解决思路是给Android和iOS配置不同的scheme集合,让iOS的scheme列表里不包含通用的msauth,同时保留iOS所需的带bundle id的特定scheme。

具体步骤:

  1. 修改app.json,拆分scheme的平台配置:
{
  "expo": {
    "scheme": ["carpool", "fb[SECRET_ID]"], // iOS使用这个列表,不含msauth
    "android": {
      "scheme": ["carpool", "fb[SECRET_ID]", "msauth"] // Android单独保留msauth
    }
  }
}
  1. 保持你现有的跳转URL逻辑不变:
const redirectObject = {
  scheme : Platform.OS === 'ios' ? "msauth.be.cpa.taxistop.Carpool" : "msauth",
  path : Platform.OS === 'ios' ? "auth" : "be.taxistop.carpool/[HASH]",
  useProxy: USE_PROXY,
};

iOS使用的msauth.be.cpa.taxistop.Carpool是绑定你应用bundle id的特定scheme,Apple不会拒绝这个。

  1. 清理缓存并重新构建:
    执行expo prebuild --clean清除旧的构建缓存,然后用EAS重新构建iOS版本提交TestFlight。

为什么之前的方法无效?

你之前把msauth放在根scheme里,导致iOS的Info.plist中也添加了这个通用scheme,Apple的审核规则禁止使用这类无应用绑定的通用auth scheme(比如msauth、fbauth等),必须使用带bundle id的专属scheme。而Android对通用scheme没有限制,单独给Android配置就能满足跳转需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:32:37