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。
具体步骤:
- 修改
app.json,拆分scheme的平台配置:
{ "expo": { "scheme": ["carpool", "fb[SECRET_ID]"], // iOS使用这个列表,不含msauth "android": { "scheme": ["carpool", "fb[SECRET_ID]", "msauth"] // Android单独保留msauth } } }
- 保持你现有的跳转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不会拒绝这个。
- 清理缓存并重新构建:
执行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
相关产品推荐
相关产品推荐

